modely

sora-2

Markdown · JSON

sora-2

Sora 2 vytvára z textu alebo referenčného obrázka video so synchronizovanými dialógmi, zvukovými efektmi a zvukom pozadia. Štandardný profil podporuje vizuálne skúmanie a koncepčné klipy; výrobca ponúka samostatné postupy pre opakovane použiteľné neľudské postavy, pokračovanie a cielené úpravy videa.

O modeli

Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.

Sora 2 je model spoločnosti OpenAI na generovanie videa a zvuku pre dynamické klipy vytvárané z písomného opisu scény alebo referenčného obrázka. Vizuálnu sekvenciu generuje spolu so synchronizovanou rečou, efektmi a zvukom pozadia. Štandardný profil Sora 2 je určený na vizuálne skúmanie, rozvíjanie konceptov, prototypy a hrubé zostrihy. Sora 2 Pro je samostatná edícia zameraná na vyššiu vizuálnu vernosť a dokončovanie vo vyššom rozlíšení.

Opíšte záber, ktorý možno vidieť aj počuť

Príručka výrobcu k zadávaniu pokynov stavia užitočné zadanie na kompozícii záberu, objekte, akcii, prostredí a svetle. Dajte scéne jednotný vizuálny štýl a potom opíšte pohyb v jasných krokoch. Pôvodný produktový koncept môže zobrazovať malý mechanický predmet, ktorý sa raz otočí na pracovnom stole, zatiaľ čo sa kamera pomaly približuje, s mäkkým svetlom z okna a jemným zvukom motora. Určte, čo si má divák všimnúť a ako sa akcia končí.

Pohyb kamery a akciu objektu udržte v každom zábere zrozumiteľné. Zložitú sekvenciu možno rozdeliť na samostatné bloky záberov, z ktorých každý má vlastnú kompozíciu, akciu a osvetlenie. Ak má viacero klipov tvoriť jednu sekvenciu, zachovajte rovnaké detaily objektu a paletu. Príručka zdôrazňuje, že kratšie zábery sa spravidla spoľahlivejšie riadia pokynmi a že opakované generovanie s rovnakým zadaním vytvára odlišné verzie.

Pri uvedení modelu výrobca opisuje zlepšené fyzikálne správanie a kontinuitu medzi zábermi vrátane realistického, filmového a anime štýlu. Ide o zamýšľané schopnosti, ktoré treba usmerňovať a kontrolovať. Kontrolujte pohyb, kontakt medzi predmetmi, proporcie a kontinuitu; nepredpokladajte, že vierohodná prvá snímka zaručuje súdržnú sekvenciu. Ak je akcia nejasná, zjednodušte ju a dajte jej viditeľný začiatok a koniec.

Režírujte dialóg a zvuk samostatne

Hovorené repliky určte oddelene od vizuálneho opisu a hovoriacich označujte jednotne. Dialóg musí byť dostatočne krátky, aby sa zmestil do akcie a zamýšľanej dĺžky klipu. Pri animácii s dvoma postavami striedajte krátku otázku a odpoveď, namiesto toho, aby ste do krátkeho záberu žiadali dlhý prejav. Príručka upozorňuje, že zložitý a dlhý dialóg môže narušiť tempo a synchronizáciu.

Opíšte zvukové prostredie, ktoré patrí k scéne: zvuk drobného pohybu, atmosféru miestnosti alebo rytmus zvukového efektu prostredia. Vysvetlite, ktorý zvuk má sprevádzať danú akciu v rovnakom okamihu. Výslednú reč a efekty si vypočujte spolu s obrazom a skontrolujte priradenie hovoriacich, znenie a načasovanie. Synchronizovaný zvuk je súčasťou vygenerovaného klipu, nie samostatnou textovou odpoveďou.

Rozmery, trvanie a úvod vedený obrázkom

Zdokumentované výstupné rozmery štandardného modelu sú 720×1280 na výšku a 1280×720 na šírku. Rozmery s vyšším rozlíšením z profilu Pro sa nemajú pripisovať štandardnému modelu Sora 2. Rozmery a trvanie sú výslovné nastavenia požiadavky; uvedenie iných rozmerov alebo požiadavka na dlhší film v zadaní tieto nastavenia nemení. Referencia pre vytváranie uvádza nastavenia klipov s dĺžkou 4, 8 a 12 sekúnd, preto pri príprave záberu vyberte krátky, jasne vymedzený dejový úsek. Rozšírený postup výrobcu dokumentuje aj nastavenia klipov s dĺžkou 16 a 20 sekúnd.

Referenčný obrázok ukotvuje prvú snímku a text opisuje, čo nasleduje. Výrobca podporuje referencie JPEG, PNG a WebP a vyžaduje zhodu obrázka s cieľovými rozmermi videa. Objekt, prostredie a kompozíciu pripravte v tomto úvodnom obrázku a potom požiadajte o konkrétny pohyb. Ide o referenciu pre úvodnú snímku, nie o záruku zachovania každého detailu počas celého klipu.

Opakovane použiteľné neľudské postavy

Rozšírený postup výrobcu môže vytvoriť opakovane použiteľný asset postavy z krátkeho referenčného videa zvieraťa, maskota alebo predmetu. Pokyny na prípravu požadujú klip MP4 s dĺžkou približne dve až štyri sekundy, v rozlíšení 720p až 1080p a pomere strán 16:9 alebo 9:16. Zhoda pomeru strán zdroja a výstupu pomáha predísť natiahnutému vzhľadu. Generovanie môže odkazovať najviac na dve postavy.

Uchovajte identifikátor postavy a v zadaní uveďte jej meno; samotné odovzdanie identifikátora nie je podľa príručky úplnou prípravou. Assety postáv môžu sprevádzať generovanie vedené obrázkom, ale predĺženia videa ich neprijímajú. Výrobca predvolene blokuje nahrávanie postáv podobných ľuďom a v zdokumentovanom postupe API odmieta referenčné obrázky obsahujúce ľudské tváre. Funkcie osobných postáv v aplikácii Sora predstavujú samostatný produktový postup.

Pokračujte v dokončenom klipe alebo ho upravte

Predĺženie prijíma dokončené zdrojové video a zadanie pokračovania, pričom celý zdrojový klip používa ako kontext pre pohyb, smerovanie kamery a kontinuitu scény. Príručka opisuje pridanie najviac 20 sekúnd pri každom predĺžení. Zdokumentovaným vstupom predĺženia je zdrojové video a text; ďalšie referencie postáv alebo obrázkov sú z tohto režimu vylúčené. Opíšte, ako existujúca akcia pokračuje, namiesto zavedenia nesúvisiacej scény bez prechodu.

Úprava videa sa zameriava na jasnú zmenu existujúceho klipu. Cielená revízia môže zmeniť farbu predmetu alebo paletu scény a pritom zachovať zvyšok záberu. Príručka výrobcu odporúča vždy jednu dobre definovanú zmenu a odlišuje úpravu vygenerovaného videa od nahrávania ľubovoľných záberov, pre ktoré platí samostatná podmienka oprávnenosti. Pred ďalšou úpravou uchovajte dokončený zdroj a určte presnú požadovanú zmenu.

Renderovacie úlohy a hotové video

Zdokumentovaný postup výrobcu pre video je asynchrónny: odoslaná úloha môže čakať vo fronte alebo prebiehať, kým sa dokončí alebo zlyhá. Dokončená úloha poskytuje video MP4; miniatúra a sprite sheet slúžia na náhľady a prehliadanie. Identitu úlohy uchovajte spolu so zadaním, referenciami a vrátenými assetmi. Úvodná odpoveď úlohy nie je konečným prehrateľným videom.

Bežný postup sťahovania opisuje hodinovú platnosť URL na stiahnutie. Rozšírený dávkový postup pripravuje nezávislé renderovacie požiadavky JSON so stabilnými identifikátormi položiek, nahranými referenciami a výsledkom priradeným späť ku každému záberu; jeho dokončené assety majú samostatnú lehotu na stiahnutie do 24 hodín. Hotový klip bezodkladne uchovajte a pred jeho prijatím ako vybranej verzie skontrolujte skutočný obraz aj zvuk.

Zdokumentované obmedzenia obsahu API výrobcu vyžadujú materiál vhodný pre publikum mladšie ako 18 rokov a odmietajú postavy či hudbu chránené autorskými právami a generovanie skutočných ľudí. Scénu a referencie pripravte podľa toho. Priamym výsledkom modelu je video so zvukom, nie generované statické obrázky, odpoveď konverzačného nástroja ani neobmedzene dlhý film. Pri pokračovaní vizuálneho konceptu zachovajte presnú identitu štandardného modelu a prijatý zdrojový klip.

Ailoot Ultra · Chat Completions POST /v1/chat/completions sora-2

sora-2

Ostatné /sora-2

Úvod

Sora 2 vytvára z textu alebo referenčného obrázka video so synchronizovanými dialógmi, zvukovými efektmi a zvukom pozadia. Štandardný profil podporuje vizuálne skúmanie a koncepčné klipy; výrobca ponúka samostatné postupy pre opakovane použiteľné neľudské postavy, pokračovanie a cielené úpravy videa.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Chat Completions POST /v1/chat/completions
Vstup
text
Výstup
json, sse
Výstupný formát
JSON alebo text/event-stream
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
sora-2
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

owned_text_messages

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages
Parametermaterial_typesŠpecifikáciatext
ParametermessagesŠpecifikáciapole správ s role a doslovným reťazcom content
Parameterfile_materialŠpecifikáciaSkutočný materiál UTF-8 možno vložiť ako doslovný reťazec content; nevyvodzuje sa z neho odkaz na súbor.
Parameteroptional_controlsŠpecifikáciastream

Životný cyklus: synchronous_json_or_sse

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0 / 1K tokenov
Výstup · Výstupné tokeny $0.2 / 1K tokenov
Vstup · Čítanie cache $0 / 1K tokenov
Vstup · Zápis do cache $0 / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Chat Completions

curl · úplná odpoveď JSONPython SDK · úplná odpoveď JSONcurl · zachovať tok SSE
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
from pathlib import Path
print(Path("result.json").read_text(encoding="utf-8"))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="sora-2", messages=[{"role":"user","content":"hello"}], stream=False)
import json
from pathlib import Path

data = result.to_dict(mode="json")
Path("result.json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":true}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.sse

Prijať a uložiť výsledky

Ailoot Ultra · Chat Completions

JSON alebo text/event-stream

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte celý JSON alebo bajty SSE, hlavičky odpovede, vrátenú spotrebu a všetky poskytnuté polia výsledku. Netvrdí sa žiadna rodina výstupov špecifická pre model.

Ak treba overiť pôvodnú odpoveď

Zachovajte pôvodnú odpoveď a identitu pokusu; nevyvodzuje sa žiadne nové zisťovanie stavu úlohy ani opätovné odoslanie.

Polia odpovede
PoleTypVýznam
Polecomplete response JSONTypobjectVýznamZachovajte každé vrátené pole bez predpokladania rodiny výsledkov špecifickej pre model.
PoleSSE data eventsTypstreamVýznamZachovajte každú vrátenú udalosť a koncovú značku bez výberu iba textových polí.

Aliasy

Aliasy modelov

Ailoot Ultra sora-2

Aliasy ciest metód

Použite cesty metód uvedené vyššie.

Súvisiace ID na volanie

sora-2

Ailoot Ultra · Anthropic Messages POST /v1/messages sora-2

sora-2

Ostatné /sora-2

Úvod

Sora 2 vytvára z textu alebo referenčného obrázka video so synchronizovanými dialógmi, zvukovými efektmi a zvukom pozadia. Štandardný profil podporuje vizuálne skúmanie a koncepčné klipy; výrobca ponúka samostatné postupy pre opakovane použiteľné neľudské postavy, pokračovanie a cielené úpravy videa.

Povolené vstupy
Text
Výsledky
json · sse

Dostupné v Ailoot · vstupy a metódy

Ailoot Ultra · Anthropic Messages POST /v1/messages
Vstup
text
Výstup
json, sse
Výstupný formát
JSON alebo SSE
PoleTypPožiadavkaHodnoty a limityPredvolené
PolemodelTypstringPožiadavkaPovinnéHodnoty a limity
sora-2
Predvolené—
PolemessagesTypmessage[]PožiadavkaPovinnéHodnoty a limityPredvolené—
Polemessages[].roleTypstringPožiadavkaPovinnéHodnoty a limity
user, assistant
Predvolené—
Polemessages[].contentTypstringPožiadavkaPovinnéHodnoty a limityPredvolené—
Polemax_tokensTypintegerPožiadavkaPovinnéHodnoty a limityPredvolené—
PolestreamTypbooleanPožiadavkaVoliteľnéHodnoty a limityPredvolenéfalse
Kombinácie vstupných podkladov

Text · Text UTF-8

reťazec messages[].content

Parametre a životný cyklus metódy
ParameterŠpecifikácia
Parametercontent_typeŠpecifikáciaapplication/json
ParameterrequiredŠpecifikáciamodel, messages, max_tokens
Parameteroptional_controlsŠpecifikáciastream
Parametermaterial_typesŠpecifikáciatext
Parametertext_file_materialŠpecifikáciaPrečítajte skutočný dokument UTF-8 a vložte jeho text do uvedeného vstupného reťazca alebo reťazca obsahu správy.

Životný cyklus: synchronous_or_streamed

Cenník

Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.

Rýchly režim
Neuvedené Keď je zvolený rýchly režim
Režim Flex
Neuvedené Keď je zvolený režim flex
Maximálna úroveň uvažovania
Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)

Sadzby Ailoot

Ceny podľa konfigurácie

KonfiguráciaSadzobníkPoplatok
KonfiguráciaZákladné sadzby za tokenySadzobníkZákladná sadzbaPoplatok
Vstup · Vstupné tokeny $0 / 1K tokenov
Výstup · Výstupné tokeny $0.2 / 1K tokenov
Vstup · Čítanie cache $0 / 1K tokenov
Vstup · Zápis do cache $0 / 1K tokenov
Vstup · Zápis do cache, 1 hod — / 1K tokenov

Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →

Príklady požiadaviek

Ailoot Ultra · Anthropic Messages

Úplné minimálne telo požiadavky vo formáte JSONcurl · použite svoj dokument UTF-8Python · uložte úplný výsledok
{
  "model": "sora-2",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

Prijať a uložiť výsledky

Ailoot Ultra · Anthropic Messages

JSON alebo SSE

Uchovať všetky dokončené výsledky

Uložte každú úplnú vrátenú odpoveď, súbor a časť obsahu.

Zachovajte všetky bloky obsahu, podpisy uvažovania a skutočné ID volaní nástrojov. Zostavte všetky čiastkové zmeny blokov SSE; prvý textový blok nie je celý výstup.

Ak treba overiť pôvodnú odpoveď

Zachovajte ID požiadaviek/odpovedí aj hlavičky. Všeobecná URL na načítanie textovej úlohy nie je poskytnutá.

Polia odpovede
PoleTyp
PoleidTypstring
PolemodelTypstring
Polecontent[]Typtext|thinking|tool_use|other content block
Polestop_reasonTypstring|null
PoleusageTypobject
Chyby a ďalšie kroky
OdpoveďPodmienkaĎalší krok
Odpoveď400 · invalid_request_errorPodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametraĎalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia.

Aliasy

Aliasy modelov

Ailoot Ultra sora-2

Aliasy ciest metód

Použite cesty metód uvedené vyššie.

Súvisiace ID na volanie

sora-2

FAQ · sora-2
Aké vstupy a výsledky sú dostupné?

POST /v1/chat/completions · sora-2: text → json, sse

POST /v1/messages · sora-2: text → json, sse

Aké polia používa požiadavka?

POST /v1/chat/completions · sora-2: model, messages, stream

POST /v1/messages · sora-2: model, messages, max_tokens, stream

Viac podrobností

Pripojte Ailoot k Claude Code, OpenCode, Hermes alebo vlastnej aplikácii.

Spoločnosť a jej portfólio projektov

Spoločnosť a jej portfólio projektov: milióny zákazníkov; mesačné tržby v miliardách.

Nakupujte tokeny so zľavou.

Zľava predplatného na pravidelnú prácu. Promo kódy až 50% na nákup tokenov.

Predplatné
Na pravidelné požiadavky vyberte tarifu so zľavou.
Promo kód až 50%
Pri nákupe zadajte kód. Cena sa prepočíta podľa prebiehajúcej akcie.
Výdavky v histórii
Pri každej požiadavke sa uloží model, tokeny a suma.

Vybrať predplatné · Zobraziť ceny modelov

Pripojte API k produktu, ktorý predávate.

SaaS, aplikácie a boti podľa ponuky a licenčnej zmluvy Ailoot. Na ďalší predaj požiadajte o licenciu predajcu.

Komerčná aplikácia
Začleňte generovanie textu, obrázkov, videa a zvuku do platených funkcií svojej služby.
Licencia pre predajcu
Pošlite popis projektu a spôsob poskytovania prístupu. Vyžiadajte písomné podmienky použitia a ďalšieho predaja.
Dokumenty na webe
Ponuka, licenčná zmluva a zásady spracovania dát sú dostupné pred pripojením.

Požiadať o licenciu predajcu · Ponuka a licenčná zmluva