{
  "aboutHtml": "<p>Runway Gen-4.5 je model generovania videa s režimami prevodu textu na video a obrázka na video. Dokáže sledovať zadanie opisujúce kompozíciu scény, akciu subjektu, choreografiu kamery a postupnosť udalostí. Užitočným výsledkom je krátky generovaný záber, ktorý možno skontrolovať, uchovať alebo zostaviť s ďalšími zábermi.</p><h4>Vyberte vstupný režim pre záber</h4><p>Prevod textu na video začína písaným opisom scény. Zahrňte viditeľný obsah aj pohyb: subjekt, prostredie, osvetlenie, záber, akciu a správanie kamery. Tento režim je užitočný pre novú scénu, doplnkové zábery, podklad pozadia alebo vizuálny koncept, kde východisková snímka nemusí reprodukovať dodaný obrázok.</p><p>Prevod obrázka na video začína obrázkom pôsobiacim ako prvá snímka. Tento obrázok dodáva kompozíciu, obsah, osvetlenie a štýl. Písaný prompt sústreďte na to, čo sa má stať ďalej: akciu subjektu, pohyb v prostredí, pohyb kamery a vývoj záberu.</p><p>Pripravte jasný obrázok s už viditeľnými dôležitými detailmi. Rozmazané tváre, ruky alebo iné artefakty sa pri animácii môžu zvýrazniť. Referencia naznačujúca rýchly pohyb prachom alebo pohybovou neostrosťou môže tiež odporovať promptu žiadajúcemu nehybný subjekt.</p><h4>Vizuál a pohyb opisujte priamo</h4><p>Používajte jasný prirodzený jazyk a pozitívne opisy zamýšľaného výsledku. Zadanie prevodu textu na video môže najprv uviesť pohľad kamery, subjekt a akciu a potom pridať spracovanie scény. Podrobný opis je užitočný pri definovaných požiadavkách záberu; jednoduchší poskytuje viac priestoru na skúmanie. Neexistuje ideálny počet slov nahrádzajúci jasnosť.</p><p>Napríklad opíšte blízky pohľad na mosadznú stolovú lampu pri zapnutí jej svetla a nasledujúci pomalý pohyb kamery odhaľujúci zošit vedľa nej. Pri prevode textu na video uveďte viditeľné materiály a svetlo. Ak dodaný obrázok už tieto detaily stanovuje, prompt prevodu obrázka na video sa môže sústrediť na zmenu svetla a kamerové odhalenie.</p><p>Vyhnite sa protirečivým pokynom. Pevný pohľad s jemným pohybom subjektu sa líši od energického sledovacieho záberu z ruky. Pridávajte detaily definujúce užitočný záber namiesto dlhého zoznamu nesúvisiacich vizuálnych štýlov.</p><h4>Kamerové pojmy a postupná akcia</h4><p>Kamerová príručka výrobcu rozlišuje záber, uhly, pohyb a zaostrenie. Detail mení to, čo vypĺňa záber, podhľad mení perspektívu, panorámovanie otáča pohľad kamery a sledovací pohyb nasleduje subjekt. Pokyn preostrenia presúva zaostrenie medzi viditeľnými subjektmi. Uveďte, čo má byť viditeľné alebo odhalené počas vývoja pohybu.</p><p>Postupné prompty môžu vyjadrovať udalosti bežným jazykom alebo približnými časovými značkami. Tieto značky usmerňujú poradie a približné časovanie; nie sú zárukou vykonania presného na snímku. Požadovaným akciám dajte dostatok času na prirodzený priebeh v zvolenej dĺžke klipu.</p><p>Pri statickom zábere opíšte pohyb patriaci do záberu a posilnite zamýšľanú nehybnú kameru. Výrobca uvádza, že úplne nehybné pohľady môžu byť náročné, najmä pri niektorých širokých alebo úvodných záberoch. V skutočnom výsledku skontrolujte malé nechcené pohyby a nepredpokladajte, že fráza o statickej kamere ich znemožňuje.</p><h4>Dĺžka, rozmery a snímková frekvencia</h4><p>Gen-4.5 podporuje dĺžky klipov 2 až 10 sekúnd. Dlhšia voľba môže pojať viacero usporiadaných akcií, kým krátka reakcia alebo odhalenie môže použiť kratší záber. Dokumentovaný výstup je 720p s 24 alebo 25 snímkami za sekundu v generovacom postupe výrobcu.</p><p>Špecifikácia prevodu textu na video uvádza 16:9 pri 1280 × 720 pixeloch. Prevod obrázka na video navyše uvádza 9:16 pri 720 × 1280, 1:1 pri 960 × 960, 4:3 pri 1104 × 832, 3:4 pri 832 × 1104 a 21:9 pri 1584 × 672. Režim a skutočné rozmery držte spolu a nepredpokladajte rovnaký súbor pomerov strán v oboch vstupných režimoch.</p><p>Pomer obrázka môže určiť predvolenú kompozíciu a jeho zmena môže vstup orezať. Pred hodnotením pohybu skontrolujte umiestnenie subjektu: správna akcia nie je užitočná, ak bola dôležitá časť zdrojového obrázka odrezaná.</p><h4>Zostavte dlhšiu postupnosť z dokončených záberov</h4><p>Pri práci vedenej obrázkom výrobca opisuje pokračovanie postupnosti použitím poslednej snímky dokončeného klipu ako obrazového vstupu ďalšieho generovania. Klipy sa potom kombinujú vo video editore so spoločnou snímkou a časovaním riešenými pri strihu. Ide o postupnosť samostatných záberov, nie jedno generovanie s neobmedzenou dĺžkou.</p><p>Koncovú snímku a príslušné zadanie uchovajte, aby ďalší záber začal zo zamýšľaného vizuálneho stavu. V spojených záberoch skontrolujte kontinuitu vrátane vzhľadu subjektu, smeru kamery a prechodu medzi klipmi.</p><h4>Uchovajte a skontrolujte produkčný výsledok</h4><p>Po generovaní skontrolujte celý klip a uchovajte dokončený výstup. Postup výrobcu poskytuje aj samostatné možnosti zväčšenia a produkčného exportu ako ProRes alebo postupnosť PNG. Sú to ďalšie možnosti postupu; natívne rozmery generovania zostávajú odlišné od neskôr zväčšeného výsledku.</p><p>Gen-4.5 použite pre filmové koncepty, animované vizuálne nápady, doplnkové zábery a vývoj krátkych scén. Prompt, použitý vstupný obrázok, dĺžku, režim a vrátený klip uchovajte spolu. Skontrolujte poradie akcií, správanie kamery, detaily subjektu, nechcené strihy a zamýšľaný záber a potom vykonajte cielenú opravu záberu.</p>",
  "aboutText": "Runway Gen-4.5 je model generovania videa s režimami prevodu textu na video a obrázka na video. Dokáže sledovať zadanie opisujúce kompozíciu scény, akciu subjektu, choreografiu kamery a postupnosť udalostí. Užitočným výsledkom je krátky generovaný záber, ktorý možno skontrolovať, uchovať alebo zostaviť s ďalšími zábermi.\n\n### Vyberte vstupný režim pre záber\n\nPrevod textu na video začína písaným opisom scény. Zahrňte viditeľný obsah aj pohyb: subjekt, prostredie, osvetlenie, záber, akciu a správanie kamery. Tento režim je užitočný pre novú scénu, doplnkové zábery, podklad pozadia alebo vizuálny koncept, kde východisková snímka nemusí reprodukovať dodaný obrázok.\n\nPrevod obrázka na video začína obrázkom pôsobiacim ako prvá snímka. Tento obrázok dodáva kompozíciu, obsah, osvetlenie a štýl. Písaný prompt sústreďte na to, čo sa má stať ďalej: akciu subjektu, pohyb v prostredí, pohyb kamery a vývoj záberu.\n\nPripravte jasný obrázok s už viditeľnými dôležitými detailmi. Rozmazané tváre, ruky alebo iné artefakty sa pri animácii môžu zvýrazniť. Referencia naznačujúca rýchly pohyb prachom alebo pohybovou neostrosťou môže tiež odporovať promptu žiadajúcemu nehybný subjekt.\n\n### Vizuál a pohyb opisujte priamo\n\nPoužívajte jasný prirodzený jazyk a pozitívne opisy zamýšľaného výsledku. Zadanie prevodu textu na video môže najprv uviesť pohľad kamery, subjekt a akciu a potom pridať spracovanie scény. Podrobný opis je užitočný pri definovaných požiadavkách záberu; jednoduchší poskytuje viac priestoru na skúmanie. Neexistuje ideálny počet slov nahrádzajúci jasnosť.\n\nNapríklad opíšte blízky pohľad na mosadznú stolovú lampu pri zapnutí jej svetla a nasledujúci pomalý pohyb kamery odhaľujúci zošit vedľa nej. Pri prevode textu na video uveďte viditeľné materiály a svetlo. Ak dodaný obrázok už tieto detaily stanovuje, prompt prevodu obrázka na video sa môže sústrediť na zmenu svetla a kamerové odhalenie.\n\nVyhnite sa protirečivým pokynom. Pevný pohľad s jemným pohybom subjektu sa líši od energického sledovacieho záberu z ruky. Pridávajte detaily definujúce užitočný záber namiesto dlhého zoznamu nesúvisiacich vizuálnych štýlov.\n\n### Kamerové pojmy a postupná akcia\n\nKamerová príručka výrobcu rozlišuje záber, uhly, pohyb a zaostrenie. Detail mení to, čo vypĺňa záber, podhľad mení perspektívu, panorámovanie otáča pohľad kamery a sledovací pohyb nasleduje subjekt. Pokyn preostrenia presúva zaostrenie medzi viditeľnými subjektmi. Uveďte, čo má byť viditeľné alebo odhalené počas vývoja pohybu.\n\nPostupné prompty môžu vyjadrovať udalosti bežným jazykom alebo približnými časovými značkami. Tieto značky usmerňujú poradie a približné časovanie; nie sú zárukou vykonania presného na snímku. Požadovaným akciám dajte dostatok času na prirodzený priebeh v zvolenej dĺžke klipu.\n\nPri statickom zábere opíšte pohyb patriaci do záberu a posilnite zamýšľanú nehybnú kameru. Výrobca uvádza, že úplne nehybné pohľady môžu byť náročné, najmä pri niektorých širokých alebo úvodných záberoch. V skutočnom výsledku skontrolujte malé nechcené pohyby a nepredpokladajte, že fráza o statickej kamere ich znemožňuje.\n\n### Dĺžka, rozmery a snímková frekvencia\n\nGen-4.5 podporuje dĺžky klipov 2 až 10 sekúnd. Dlhšia voľba môže pojať viacero usporiadaných akcií, kým krátka reakcia alebo odhalenie môže použiť kratší záber. Dokumentovaný výstup je 720p s 24 alebo 25 snímkami za sekundu v generovacom postupe výrobcu.\n\nŠpecifikácia prevodu textu na video uvádza 16:9 pri 1280 × 720 pixeloch. Prevod obrázka na video navyše uvádza 9:16 pri 720 × 1280, 1:1 pri 960 × 960, 4:3 pri 1104 × 832, 3:4 pri 832 × 1104 a 21:9 pri 1584 × 672. Režim a skutočné rozmery držte spolu a nepredpokladajte rovnaký súbor pomerov strán v oboch vstupných režimoch.\n\nPomer obrázka môže určiť predvolenú kompozíciu a jeho zmena môže vstup orezať. Pred hodnotením pohybu skontrolujte umiestnenie subjektu: správna akcia nie je užitočná, ak bola dôležitá časť zdrojového obrázka odrezaná.\n\n### Zostavte dlhšiu postupnosť z dokončených záberov\n\nPri práci vedenej obrázkom výrobca opisuje pokračovanie postupnosti použitím poslednej snímky dokončeného klipu ako obrazového vstupu ďalšieho generovania. Klipy sa potom kombinujú vo video editore so spoločnou snímkou a časovaním riešenými pri strihu. Ide o postupnosť samostatných záberov, nie jedno generovanie s neobmedzenou dĺžkou.\n\nKoncovú snímku a príslušné zadanie uchovajte, aby ďalší záber začal zo zamýšľaného vizuálneho stavu. V spojených záberoch skontrolujte kontinuitu vrátane vzhľadu subjektu, smeru kamery a prechodu medzi klipmi.\n\n### Uchovajte a skontrolujte produkčný výsledok\n\nPo generovaní skontrolujte celý klip a uchovajte dokončený výstup. Postup výrobcu poskytuje aj samostatné možnosti zväčšenia a produkčného exportu ako ProRes alebo postupnosť PNG. Sú to ďalšie možnosti postupu; natívne rozmery generovania zostávajú odlišné od neskôr zväčšeného výsledku.\n\nGen-4.5 použite pre filmové koncepty, animované vizuálne nápady, doplnkové zábery a vývoj krátkych scén. Prompt, použitý vstupný obrázok, dĺžku, režim a vrátený klip uchovajte spolu. Skontrolujte poradie akcií, správanie kamery, detaily subjektu, nechcené strihy a zamýšľaný záber a potom vykonajte cielenú opravu záberu.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "12b83d2a7a73c7e1d94bcae841a08dd12d1a509b9797cde10b6b7234f8373f2f",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sk",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Runway: Gen-4.5</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zavrieť\">×</button></div><div class=\"idline\"><span>Runway /</span><code>runway/gen-4.5</code><button type=\"button\" id=\"copy-id\">Skopírovať ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sekcie karty modelu\"><button type=\"button\" data-card-jump=\"overview\">Úvod</button><button type=\"button\" data-card-jump=\"methods\">Vstupy a metódy</button><button type=\"button\" data-card-jump=\"pricing\">Cenník</button><button type=\"button\" data-card-jump=\"examples\">Príklady</button><button type=\"button\" data-card-jump=\"results\">Výsledky</button><button type=\"button\" data-card-jump=\"aliases\">Aliasy</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metódy API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|runway%2Fgen-4.5\">Video</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Úvod</h3><p class=\"mdesc-full\">Runway Gen-4.5 vytvára videá z opisu scény alebo obrázka s pokynmi pohybu. Jeho klipy 2–10 sekúnd, explicitné kamerové zadania a samostatné kompozičné voľby prevodu textu a obrázka na video podporujú filmové koncepty, doplnkové zábery a animované vizuálne scény.</p><dl class=\"card-io\" data-card-io><div><dt>Povolené vstupy</dt><dd>Text · Obrázky</dd></div><div><dt>Výsledky</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>O modeli</summary><p class=\"note-s\" data-model-method-boundary>Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.</p><div class=\"mabout\" id=\"m-about\"><p>Runway Gen-4.5 je model generovania videa s režimami prevodu textu na video a obrázka na video. Dokáže sledovať zadanie opisujúce kompozíciu scény, akciu subjektu, choreografiu kamery a postupnosť udalostí. Užitočným výsledkom je krátky generovaný záber, ktorý možno skontrolovať, uchovať alebo zostaviť s ďalšími zábermi.</p><h4>Vyberte vstupný režim pre záber</h4><p>Prevod textu na video začína písaným opisom scény. Zahrňte viditeľný obsah aj pohyb: subjekt, prostredie, osvetlenie, záber, akciu a správanie kamery. Tento režim je užitočný pre novú scénu, doplnkové zábery, podklad pozadia alebo vizuálny koncept, kde východisková snímka nemusí reprodukovať dodaný obrázok.</p><p>Prevod obrázka na video začína obrázkom pôsobiacim ako prvá snímka. Tento obrázok dodáva kompozíciu, obsah, osvetlenie a štýl. Písaný prompt sústreďte na to, čo sa má stať ďalej: akciu subjektu, pohyb v prostredí, pohyb kamery a vývoj záberu.</p><p>Pripravte jasný obrázok s už viditeľnými dôležitými detailmi. Rozmazané tváre, ruky alebo iné artefakty sa pri animácii môžu zvýrazniť. Referencia naznačujúca rýchly pohyb prachom alebo pohybovou neostrosťou môže tiež odporovať promptu žiadajúcemu nehybný subjekt.</p><h4>Vizuál a pohyb opisujte priamo</h4><p>Používajte jasný prirodzený jazyk a pozitívne opisy zamýšľaného výsledku. Zadanie prevodu textu na video môže najprv uviesť pohľad kamery, subjekt a akciu a potom pridať spracovanie scény. Podrobný opis je užitočný pri definovaných požiadavkách záberu; jednoduchší poskytuje viac priestoru na skúmanie. Neexistuje ideálny počet slov nahrádzajúci jasnosť.</p><p>Napríklad opíšte blízky pohľad na mosadznú stolovú lampu pri zapnutí jej svetla a nasledujúci pomalý pohyb kamery odhaľujúci zošit vedľa nej. Pri prevode textu na video uveďte viditeľné materiály a svetlo. Ak dodaný obrázok už tieto detaily stanovuje, prompt prevodu obrázka na video sa môže sústrediť na zmenu svetla a kamerové odhalenie.</p><p>Vyhnite sa protirečivým pokynom. Pevný pohľad s jemným pohybom subjektu sa líši od energického sledovacieho záberu z ruky. Pridávajte detaily definujúce užitočný záber namiesto dlhého zoznamu nesúvisiacich vizuálnych štýlov.</p><h4>Kamerové pojmy a postupná akcia</h4><p>Kamerová príručka výrobcu rozlišuje záber, uhly, pohyb a zaostrenie. Detail mení to, čo vypĺňa záber, podhľad mení perspektívu, panorámovanie otáča pohľad kamery a sledovací pohyb nasleduje subjekt. Pokyn preostrenia presúva zaostrenie medzi viditeľnými subjektmi. Uveďte, čo má byť viditeľné alebo odhalené počas vývoja pohybu.</p><p>Postupné prompty môžu vyjadrovať udalosti bežným jazykom alebo približnými časovými značkami. Tieto značky usmerňujú poradie a približné časovanie; nie sú zárukou vykonania presného na snímku. Požadovaným akciám dajte dostatok času na prirodzený priebeh v zvolenej dĺžke klipu.</p><p>Pri statickom zábere opíšte pohyb patriaci do záberu a posilnite zamýšľanú nehybnú kameru. Výrobca uvádza, že úplne nehybné pohľady môžu byť náročné, najmä pri niektorých širokých alebo úvodných záberoch. V skutočnom výsledku skontrolujte malé nechcené pohyby a nepredpokladajte, že fráza o statickej kamere ich znemožňuje.</p><h4>Dĺžka, rozmery a snímková frekvencia</h4><p>Gen-4.5 podporuje dĺžky klipov 2 až 10 sekúnd. Dlhšia voľba môže pojať viacero usporiadaných akcií, kým krátka reakcia alebo odhalenie môže použiť kratší záber. Dokumentovaný výstup je 720p s 24 alebo 25 snímkami za sekundu v generovacom postupe výrobcu.</p><p>Špecifikácia prevodu textu na video uvádza 16:9 pri 1280 × 720 pixeloch. Prevod obrázka na video navyše uvádza 9:16 pri 720 × 1280, 1:1 pri 960 × 960, 4:3 pri 1104 × 832, 3:4 pri 832 × 1104 a 21:9 pri 1584 × 672. Režim a skutočné rozmery držte spolu a nepredpokladajte rovnaký súbor pomerov strán v oboch vstupných režimoch.</p><p>Pomer obrázka môže určiť predvolenú kompozíciu a jeho zmena môže vstup orezať. Pred hodnotením pohybu skontrolujte umiestnenie subjektu: správna akcia nie je užitočná, ak bola dôležitá časť zdrojového obrázka odrezaná.</p><h4>Zostavte dlhšiu postupnosť z dokončených záberov</h4><p>Pri práci vedenej obrázkom výrobca opisuje pokračovanie postupnosti použitím poslednej snímky dokončeného klipu ako obrazového vstupu ďalšieho generovania. Klipy sa potom kombinujú vo video editore so spoločnou snímkou a časovaním riešenými pri strihu. Ide o postupnosť samostatných záberov, nie jedno generovanie s neobmedzenou dĺžkou.</p><p>Koncovú snímku a príslušné zadanie uchovajte, aby ďalší záber začal zo zamýšľaného vizuálneho stavu. V spojených záberoch skontrolujte kontinuitu vrátane vzhľadu subjektu, smeru kamery a prechodu medzi klipmi.</p><h4>Uchovajte a skontrolujte produkčný výsledok</h4><p>Po generovaní skontrolujte celý klip a uchovajte dokončený výstup. Postup výrobcu poskytuje aj samostatné možnosti zväčšenia a produkčného exportu ako ProRes alebo postupnosť PNG. Sú to ďalšie možnosti postupu; natívne rozmery generovania zostávajú odlišné od neskôr zväčšeného výsledku.</p><p>Gen-4.5 použite pre filmové koncepty, animované vizuálne nápady, doplnkové zábery a vývoj krátkych scén. Prompt, použitý vstupný obrázok, dĺžku, režim a vrátený klip uchovajte spolu. Skontrolujte poradie akcií, správanie kamery, detaily subjektu, nechcené strihy a zamýšľaný záber a potom vykonajte cielenú opravu záberu.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Dostupné v Ailoot · vstupy a metódy</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Vstup</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Výstup</dt><dd><code>video</code></dd></div><div><dt>Výstupný formát</dt><dd>pôvodné bajty MP4; bez normalizácie a prekódovania</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Pole</th><th>Typ</th><th>Požiadavka</th><th>Hodnoty a limity</th><th>Predvolené</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>runway/gen-4.5</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Povinné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>2, 3, 4, 5, 6, 7, 8, 9, 10</div><div>Minimum: 1</div><div>Maximum: 600</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>720p</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>16:9, 9:16</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>false</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">frame_images</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Minimálny počet položiek: 1</div><div>Maximálny počet položiek: 1</div><div>Vstupný obsah: Pole objektov snímok. Každý objekt má type=image_url, image_url obsahujúce url a frame_type. Použite HTTPS URL obrázka a nastavte frame_type na first_frame. Každá rola snímky sa môže vyskytnúť najviac raz.</div><div>Presné kľúče: type, image_url, frame_type</div><div>Podmienky: Tieto kľúče opisujú každý objekt snímky; image_url obsahuje iba url. Pri čisto textovej požiadavke vynechajte frame_images.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">size</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>1280x720, 720x1280</div><div>Vzor: ^[1-9][0-9]*x[1-9][0-9]*$</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Minimum: -9 223 372 036 854 775 808</div><div>Maximum: 9 223 372 036 854 775 807</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">callback_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Vzor: ^https://</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Požiadavka\"><span class=\"card-cell-label\">Požiadavka</span>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinácie vstupných podkladov</summary><p class=\"note-s\"><b>Z textu na video</b> · Textové zadanie. · Povinné: model, prompt, duration</p><p class=\"note-s\"><code>Zadajte prompt ako text a duration v celých sekundách. Vyberte podporované rozlíšenie; pridajte pomer strán alebo použite uvedenú veľkosť.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · runway/gen-4.5</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximálny počet bajtov UTF-8: 10 000 · Vyžaduje sa aspoň jeden znak, ktorý nie je bielym znakom: Áno</p><p class=\"note-s\"><b>Z obrázka na video</b> · Textové zadanie a obrázok prvej snímky. · Povinné: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images je pole. Každý objekt snímky má type, image_url a frame_type; image_url obsahuje url. Nastavte type na image_url. Použite first_frame. Každá rola snímky sa môže vyskytnúť najviac raz. Pre každú snímku zadajte verejnú HTTPS URL obrázka. Vyberte podporované rozlíšenie; pridajte pomer strán alebo použite uvedenú veľkosť.</code></p><p class=\"note-s\">Presné kľúče: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · runway/gen-4.5</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximálny počet bajtov UTF-8: 10 000 · Vyžaduje sa aspoň jeden znak, ktorý nie je bielym znakom: Áno</p></details><details class=\"note-s\" data-method-contract><summary>Parametre a životný cyklus metódy</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Špecifikácia</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>model, prompt, duration</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>text, image</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>additional_properties</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Životný cyklus: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenník</h3><div class=\"card-result-process\" data-billing-basis><h5>Ako sa vypočíta konečný poplatok</h5><p class=\"note-s\">Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.</p><dl data-price-conditions><dt>Rýchly režim</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený rýchly režim</span></dd><dt>Režim Flex</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený režim flex</span></dd><dt>Maximálna úroveň uvažovania</dt><dd>Neuvedené <span class=\"note-s\">Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Odhadované sadzby na porovnanie</h4><h4>Ceny podľa konfigurácie</h4><p class=\"note-s\">Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurácia</th><th>Sadzobník</th><th>Odhadované množstvo</th><th>Účtovacia jednotka</th><th>Podmienky účtovania</th><th>Poplatok</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Základné sadzby za tokeny</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>Základná sadzba</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>—</td><td data-cell-label=\"Účtovacia jednotka\"><span class=\"card-cell-label\">Účtovacia jednotka</span>—</td><td data-cell-label=\"Podmienky účtovania\"><span class=\"card-cell-label\">Podmienky účtovania</span>—</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Vstup · Vstupné tokeny · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Výstup · Výstupné tokeny · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Čítanie cache · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Zápis do cache · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div><div><span>Vstup · Zápis do cache, 1 hod · Odhad iba na porovnanie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenov</span></div></td></tr><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Cena videa</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>—</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>—</td><td data-cell-label=\"Účtovacia jednotka\"><span class=\"card-cell-label\">Účtovacia jednotka</span>za sekundu videa</td><td data-cell-label=\"Podmienky účtovania\"><span class=\"card-cell-label\">Podmienky účtovania</span>V tomto cenovom kľúči nie je uvedená žiadna ďalšia podmienka.</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · Cena videa · Odhad iba na porovnanie</span> <b>$0.24</b> <span class=\"price-unit\">za sekundu videa</span></div></td></tr><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Odhadované náklady na generovanie</th><td data-cell-label=\"Sadzobník\"><span class=\"card-cell-label\">Sadzobník</span>—</td><td data-cell-label=\"Odhadované množstvo\"><span class=\"card-cell-label\">Odhadované množstvo</span>odhad pre jedno generovanie</td><td data-cell-label=\"Účtovacia jednotka\"><span class=\"card-cell-label\">Účtovacia jednotka</span>—</td><td data-cell-label=\"Podmienky účtovania\"><span class=\"card-cell-label\">Podmienky účtovania</span>—</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · Odhadované náklady na generovanie · Odhad iba na porovnanie</span> <b>$0.48</b> <span class=\"price-unit\">odhad pred generovaním</span></div><p class=\"note-s\">Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.</p></td></tr></tbody></table></div></div><p class=\"note-s\">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. <a href=\"/docs/sk/billing/reserve/\">Ako funguje rezervácia a vyúčtovanie →</a></p><div data-declared-reference-pricing><h4>Podrobnosti referenčnej tarify</h4><p class=\"note-s\">Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Cenové referencie konfigurácií videa</summary><h4>Ceny podľa konfigurácie</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurácia</th><th>Podmienky účtovania</th><th>Poplatok</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurácia\" scope=\"row\"><span class=\"card-cell-label\">Konfigurácia</span>Cena videa</th><td data-cell-label=\"Podmienky účtovania\"><span class=\"card-cell-label\">Podmienky účtovania</span>V tomto cenovom kľúči nie je uvedená žiadna ďalšia podmienka.</td><td data-cell-label=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · Cena videa</span> <b>$0.24</b> <span class=\"price-unit\">za sekundu videa</span></div><p class=\"note-s\">Zverejnený cenový údaj pre zobrazenú konfiguráciu. Konečné poplatky sa riadia skutočne účtovanou konfiguráciou.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Príklady požiadaviek</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianty kódu\"><button class=\"cg-tab\" id=\"model-code-2563-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2563-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · vytvoriť video</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Skopírovať kód\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2563-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2563-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;aspect_ratio&quot;:&quot;16:9&quot;,&quot;duration&quot;:8,&quot;model&quot;:&quot;runway/gen-4.5&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;resolution&quot;:&quot;720p&quot;}&#39;, encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Prijať a uložiť výsledky</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">podpísané URL obsahu vo vašom vlastníctve</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_id}/content</code></li></ul><h5>Skontrolovať stav úlohy</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianty kódu\"><button class=\"cg-tab\" id=\"model-code-2564-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2564-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET stav pôvodnej operácie</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Skopírovať kód\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2564-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2564-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>Čítanie ďalšieho obsahu</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianty kódu\"><button class=\"cg-tab\" id=\"model-code-2565-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2565-panel-0\" aria-selected=\"true\" tabindex=\"0\">Uložiť každý dokončený výstup, ktorý vám patrí</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Skopírovať kód\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2565-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2565-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Uchovať všetky dokončené výsledky</h5><p class=\"note-s\">Uložte každé dokončené video alebo vrátený súbor; načítajte obsah každej skutočne vrátenej URL podkladu.</p><p class=\"note-s\">Zachovajte každý skutočný výstup vo vašom vlastníctve a jeho vrátené namerané metadáta.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Ak treba overiť pôvodnú odpoveď</h5><p class=\"note-s\">503 result_pending_check + pôvodné id + X-Should-Retry:false; pôvodnú požiadavku nikdy znova neodosielajte</p></div><details class=\"card-about\" data-output-fields><summary>Polia odpovede</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Pole</th><th>Typ</th><th>Význam</th></tr></thead><tbody><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Pozícia tohto videa v zozname výstupov, číslovaná od nuly.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Podpísaná HTTPS URL na stiahnutie tohto dokončeného videa.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Odtlačok SHA-256 pôvodných bajtov videa; null, ak nie je dostupný.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Veľkosť pôvodného videosúboru v bajtoch; null, ak nie je dostupná.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Nameraná dĺžka videa v milisekundách; null, ak nie je dostupná.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Šírka videa v pixeloch; null, ak nie je dostupná.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Výška videa v pixeloch; null, ak nie je dostupná.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Identifikátor video kodeku; null, ak nie je zaznamenaný.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>boolean | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Či video obsahuje zvukovú stopu; null, ak sa to nemeralo.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Identifikátor zvukového kodeku; null, keď nie je zaznamenaný žiadny identifikátor.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Chyby a ďalšie kroky</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odpoveď</th><th>Podmienka</th><th>Ďalší krok</th></tr></thead><tbody><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Prístup k videu nie je dostupný alebo sa toto ID videa nenašlo.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Skontrolujte prístup k videu. Pri existujúcom videu použite jeho pôvodné verejné ID a rovnaký kľúč API.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Kľúč API nezodpovedá overenému účtu.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Pred odoslaním skontrolujte svoj kľúč API a prístup účtu.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Požiadavku sa nepodarilo načítať alebo je index sťahovania neplatný.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Opravte telo požiadavky. Pri sťahovaní vyberte index výstupu vrátený pôvodnou úlohou.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Cenu vybranej konfigurácie videa nemožno určiť.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Vyberte podporovanú konfiguráciu videa a pred odoslaním opravenej požiadavky vyplňte jej povinné možnosti.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Vstup videa alebo pôvodná úloha pokračovania sú neplatné.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Použite platné vstupy HTTPS. Pri pokračovaní použite verejné ID svojho dokončeného pôvodného videa s rovnakým kľúčom API.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>402 · <code>billing_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Dostupný zostatok alebo limity neumožňujú rezerváciu.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Pred odoslaním novej požiadavky skontrolujte dostupný zostatok a limity.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>503 · <code>server_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Overovanie videa, úložisko alebo prístup k službe sú dočasne nedostupné.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Počkajte na dostupnosť služby. Ak už máte ID videa, skontrolujte pôvodnú úlohu namiesto vytvorenia ďalšieho generovania.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Pôvodný výsledok videa a poplatok treba skontrolovať.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Zachovajte vrátené ID videa a skontrolujte danú úlohu. Počas jej kontroly neodosielajte náhradnú požiadavku na generovanie.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Stiahnutie existujúceho videa je dočasne nedostupné.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Neskôr skontrolujte tú istú úlohu videa a stiahnite jej existujúci výstup. Nové generovanie vytvára samostatnú operáciu.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Obsah videa nebol zverejnený.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Skontrolujte stav pôvodnej úlohy. Keď hlási completed, stiahnite jej výsledok; ak hlási failed, riaďte sa jej oznámením o kontrole poplatku.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasy</h3><h4>Aliasy modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=runway%2Fgen-4.5&amp;route=Ultra&amp;caller=runway%2Fgen-4.5&amp;fmt=videos\"><code>runway/gen-4.5</code></a></span></p><h4>Aliasy ciest metód</h4><p class=\"note-s\">Použite cesty metód uvedené vyššie.</p><h4>Súvisiace ID na volanie</h4><p class=\"note-s\"><a href=\"#m=runway%2Fgen-4.5&amp;route=Ultra&amp;caller=runway%2Fgen-4.5&amp;fmt=videos\"><code>runway/gen-4.5</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "runway/gen-4.5",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "runway/gen-4.5",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|runway%2Fgen-4.5",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Zachovajte každý skutočný výstup vo vašom vlastníctve a jeho vrátené namerané metadáta.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Prístup k videu nie je dostupný alebo sa toto ID videa nenašlo.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Skontrolujte prístup k videu. Pri existujúcom videu použite jeho pôvodné verejné ID a rovnaký kľúč API.",
                "type": "not_found_error"
              },
              {
                "condition": "Kľúč API nezodpovedá overenému účtu.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Pred odoslaním skontrolujte svoj kľúč API a prístup účtu.",
                "type": "authentication_error"
              },
              {
                "condition": "Požiadavku sa nepodarilo načítať alebo je index sťahovania neplatný.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Opravte telo požiadavky. Pri sťahovaní vyberte index výstupu vrátený pôvodnou úlohou.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Cenu vybranej konfigurácie videa nemožno určiť.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Vyberte podporovanú konfiguráciu videa a pred odoslaním opravenej požiadavky vyplňte jej povinné možnosti.",
                "type": "price_unavailable"
              },
              {
                "condition": "Vstup videa alebo pôvodná úloha pokračovania sú neplatné.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Použite platné vstupy HTTPS. Pri pokračovaní použite verejné ID svojho dokončeného pôvodného videa s rovnakým kľúčom API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Dostupný zostatok alebo limity neumožňujú rezerváciu.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Pred odoslaním novej požiadavky skontrolujte dostupný zostatok a limity.",
                "type": "billing_error"
              },
              {
                "condition": "Overovanie videa, úložisko alebo prístup k službe sú dočasne nedostupné.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Počkajte na dostupnosť služby. Ak už máte ID videa, skontrolujte pôvodnú úlohu namiesto vytvorenia ďalšieho generovania.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Pôvodný výsledok videa a poplatok treba skontrolovať.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Zachovajte vrátené ID videa a skontrolujte danú úlohu. Počas jej kontroly neodosielajte náhradnú požiadavku na generovanie.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Stiahnutie existujúceho videa je dočasne nedostupné.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Neskôr skontrolujte tú istú úlohu videa a stiahnite jej existujúci výstup. Nové generovanie vytvára samostatnú operáciu.",
                "type": "server_error"
              },
              {
                "condition": "Obsah videa nebol zverejnený.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Skontrolujte stav pôvodnej úlohy. Keď hlási completed, stiahnite jej výsledok; ak hlási failed, riaďte sa jej oznámením o kontrole poplatku.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + pôvodné id + X-Should-Retry:false; pôvodnú požiadavku nikdy znova neodosielajte"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "runway/gen-4.5"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Zadajte prompt ako text a duration v celých sekundách. Vyberte podporované rozlíšenie; pridajte pomer strán alebo použite uvedenú veľkosť.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Textové zadanie."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "runway/gen-4.5"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images je pole. Každý objekt snímky má type, image_url a frame_type; image_url obsahuje url. Nastavte type na image_url. Použite first_frame. Každá rola snímky sa môže vyskytnúť najviac raz. Pre každú snímku zadajte verejnú HTTPS URL obrázka. Vyberte podporované rozlíšenie; pridajte pomer strán alebo použite uvedenú veľkosť.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Textové zadanie a obrázok prvej snímky."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Pozícia tohto videa v zozname výstupov, číslovaná od nuly.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Podpísaná HTTPS URL na stiahnutie tohto dokončeného videa.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Odtlačok SHA-256 pôvodných bajtov videa; null, ak nie je dostupný.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Veľkosť pôvodného videosúboru v bajtoch; null, ak nie je dostupná.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Nameraná dĺžka videa v milisekundách; null, ak nie je dostupná.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Šírka videa v pixeloch; null, ak nie je dostupná.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Výška videa v pixeloch; null, ak nie je dostupná.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identifikátor video kodeku; null, ak nie je zaznamenaný.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Či video obsahuje zvukovú stopu; null, ak sa to nemeralo.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identifikátor zvukového kodeku; null, keď nie je zaznamenaný žiadny identifikátor.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "podpísané URL obsahu vo vašom vlastníctve",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "runway/gen-4.5"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "runway/gen-4.5"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "720p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Tieto kľúče opisujú každý objekt snímky; image_url obsahuje iba url. Pri čisto textovej požiadavke vynechajte frame_images.",
                "content": "Pole objektov snímok. Každý objekt má type=image_url, image_url obsahujúce url a frame_type. Použite HTTPS URL obrázka a nastavte frame_type na first_frame. Každá rola snímky sa môže vyskytnúť najviac raz.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1280x720",
                  "720x1280"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "1280x720",
                    "720x1280"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "runway/gen-4.5"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "720p"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "1280x720",
                    "720x1280"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Odhadované náklady na generovanie",
            "units": [
              {
                "amount": "0.48",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.48",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"runway/gen-4.5\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.48",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.48",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "runway/gen-4.5",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.24",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.24",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.48",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.48",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "runway/gen-4.5",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "8ea8182137e39748f14d12119dd2b25ab81bf60001afe7cde14c912cfb0b3172",
    "input_html_sha256": "7fab6635046eaa16e0f3cb4f4aa2dcff37de86db76391c837134f1aeb7d4e5e9",
    "private_audit_sha256": "8599a29029633aaa667976633bba2d6755b30d7104752811b334af41191ab034",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sk/runway-gen-4-5/",
    "description": "Runway Gen-4.5 vytvára videá z opisu scény alebo obrázka s pokynmi pohybu. Jeho klipy 2–10 sekúnd, explicitné kamerové zadania a samostatné kompozičné voľby prevodu textu a obrázka na video podporujú filmové koncepty, doplnkové zábery a animované vizuálne scény.",
    "locale": "sk",
    "md_url": "https://ailoot.ai/models/sk/runway-gen-4-5/index.md",
    "title": "Runway: Gen-4.5 — Ailoot",
    "url": "https://ailoot.ai/models/sk/runway-gen-4-5/"
  },
  "rawModel": {
    "about": "Runway Gen-4.5 je model generovania videa s režimami prevodu textu na video a obrázka na video. Dokáže sledovať zadanie opisujúce kompozíciu scény, akciu subjektu, choreografiu kamery a postupnosť udalostí. Užitočným výsledkom je krátky generovaný záber, ktorý možno skontrolovať, uchovať alebo zostaviť s ďalšími zábermi.\n\n### Vyberte vstupný režim pre záber\n\nPrevod textu na video začína písaným opisom scény. Zahrňte viditeľný obsah aj pohyb: subjekt, prostredie, osvetlenie, záber, akciu a správanie kamery. Tento režim je užitočný pre novú scénu, doplnkové zábery, podklad pozadia alebo vizuálny koncept, kde východisková snímka nemusí reprodukovať dodaný obrázok.\n\nPrevod obrázka na video začína obrázkom pôsobiacim ako prvá snímka. Tento obrázok dodáva kompozíciu, obsah, osvetlenie a štýl. Písaný prompt sústreďte na to, čo sa má stať ďalej: akciu subjektu, pohyb v prostredí, pohyb kamery a vývoj záberu.\n\nPripravte jasný obrázok s už viditeľnými dôležitými detailmi. Rozmazané tváre, ruky alebo iné artefakty sa pri animácii môžu zvýrazniť. Referencia naznačujúca rýchly pohyb prachom alebo pohybovou neostrosťou môže tiež odporovať promptu žiadajúcemu nehybný subjekt.\n\n### Vizuál a pohyb opisujte priamo\n\nPoužívajte jasný prirodzený jazyk a pozitívne opisy zamýšľaného výsledku. Zadanie prevodu textu na video môže najprv uviesť pohľad kamery, subjekt a akciu a potom pridať spracovanie scény. Podrobný opis je užitočný pri definovaných požiadavkách záberu; jednoduchší poskytuje viac priestoru na skúmanie. Neexistuje ideálny počet slov nahrádzajúci jasnosť.\n\nNapríklad opíšte blízky pohľad na mosadznú stolovú lampu pri zapnutí jej svetla a nasledujúci pomalý pohyb kamery odhaľujúci zošit vedľa nej. Pri prevode textu na video uveďte viditeľné materiály a svetlo. Ak dodaný obrázok už tieto detaily stanovuje, prompt prevodu obrázka na video sa môže sústrediť na zmenu svetla a kamerové odhalenie.\n\nVyhnite sa protirečivým pokynom. Pevný pohľad s jemným pohybom subjektu sa líši od energického sledovacieho záberu z ruky. Pridávajte detaily definujúce užitočný záber namiesto dlhého zoznamu nesúvisiacich vizuálnych štýlov.\n\n### Kamerové pojmy a postupná akcia\n\nKamerová príručka výrobcu rozlišuje záber, uhly, pohyb a zaostrenie. Detail mení to, čo vypĺňa záber, podhľad mení perspektívu, panorámovanie otáča pohľad kamery a sledovací pohyb nasleduje subjekt. Pokyn preostrenia presúva zaostrenie medzi viditeľnými subjektmi. Uveďte, čo má byť viditeľné alebo odhalené počas vývoja pohybu.\n\nPostupné prompty môžu vyjadrovať udalosti bežným jazykom alebo približnými časovými značkami. Tieto značky usmerňujú poradie a približné časovanie; nie sú zárukou vykonania presného na snímku. Požadovaným akciám dajte dostatok času na prirodzený priebeh v zvolenej dĺžke klipu.\n\nPri statickom zábere opíšte pohyb patriaci do záberu a posilnite zamýšľanú nehybnú kameru. Výrobca uvádza, že úplne nehybné pohľady môžu byť náročné, najmä pri niektorých širokých alebo úvodných záberoch. V skutočnom výsledku skontrolujte malé nechcené pohyby a nepredpokladajte, že fráza o statickej kamere ich znemožňuje.\n\n### Dĺžka, rozmery a snímková frekvencia\n\nGen-4.5 podporuje dĺžky klipov 2 až 10 sekúnd. Dlhšia voľba môže pojať viacero usporiadaných akcií, kým krátka reakcia alebo odhalenie môže použiť kratší záber. Dokumentovaný výstup je 720p s 24 alebo 25 snímkami za sekundu v generovacom postupe výrobcu.\n\nŠpecifikácia prevodu textu na video uvádza 16:9 pri 1280 × 720 pixeloch. Prevod obrázka na video navyše uvádza 9:16 pri 720 × 1280, 1:1 pri 960 × 960, 4:3 pri 1104 × 832, 3:4 pri 832 × 1104 a 21:9 pri 1584 × 672. Režim a skutočné rozmery držte spolu a nepredpokladajte rovnaký súbor pomerov strán v oboch vstupných režimoch.\n\nPomer obrázka môže určiť predvolenú kompozíciu a jeho zmena môže vstup orezať. Pred hodnotením pohybu skontrolujte umiestnenie subjektu: správna akcia nie je užitočná, ak bola dôležitá časť zdrojového obrázka odrezaná.\n\n### Zostavte dlhšiu postupnosť z dokončených záberov\n\nPri práci vedenej obrázkom výrobca opisuje pokračovanie postupnosti použitím poslednej snímky dokončeného klipu ako obrazového vstupu ďalšieho generovania. Klipy sa potom kombinujú vo video editore so spoločnou snímkou a časovaním riešenými pri strihu. Ide o postupnosť samostatných záberov, nie jedno generovanie s neobmedzenou dĺžkou.\n\nKoncovú snímku a príslušné zadanie uchovajte, aby ďalší záber začal zo zamýšľaného vizuálneho stavu. V spojených záberoch skontrolujte kontinuitu vrátane vzhľadu subjektu, smeru kamery a prechodu medzi klipmi.\n\n### Uchovajte a skontrolujte produkčný výsledok\n\nPo generovaní skontrolujte celý klip a uchovajte dokončený výstup. Postup výrobcu poskytuje aj samostatné možnosti zväčšenia a produkčného exportu ako ProRes alebo postupnosť PNG. Sú to ďalšie možnosti postupu; natívne rozmery generovania zostávajú odlišné od neskôr zväčšeného výsledku.\n\nGen-4.5 použite pre filmové koncepty, animované vizuálne nápady, doplnkové zábery a vývoj krátkych scén. Prompt, použitý vstupný obrázok, dĺžku, režim a vrátený klip uchovajte spolu. Skontrolujte poradie akcií, správanie kamery, detaily subjektu, nechcené strihy a zamýšľaný záber a potom vykonajte cielenú opravu záberu.",
    "alias_of": null,
    "aliases": [],
    "author": "Runway",
    "available": null,
    "canonical_model": "runway/gen-4.5",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.48",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.48",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Úplný cenník konfigurácie nájdete v podrobnostiach."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "cb4a8a486aaac9d58ece6322",
        "label": "Cenové referencie konfigurácií videa",
        "profiles": [
          {
            "basis": "Zverejnený cenový údaj pre zobrazenú konfiguráciu. Konečné poplatky sa riadia skutočne účtovanou konfiguráciou.",
            "dimensions": {
              "conditions": "V tomto cenovom kľúči nie je uvedená žiadna ďalšia podmienka."
            },
            "label": "Cena videa",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "runway/gen-4.5",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Zachovajte každý skutočný výstup vo vašom vlastníctve a jeho vrátené namerané metadáta.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Prístup k videu nie je dostupný alebo sa toto ID videa nenašlo.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Skontrolujte prístup k videu. Pri existujúcom videu použite jeho pôvodné verejné ID a rovnaký kľúč API.",
                "type": "not_found_error"
              },
              {
                "condition": "Kľúč API nezodpovedá overenému účtu.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Pred odoslaním skontrolujte svoj kľúč API a prístup účtu.",
                "type": "authentication_error"
              },
              {
                "condition": "Požiadavku sa nepodarilo načítať alebo je index sťahovania neplatný.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Opravte telo požiadavky. Pri sťahovaní vyberte index výstupu vrátený pôvodnou úlohou.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Cenu vybranej konfigurácie videa nemožno určiť.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Vyberte podporovanú konfiguráciu videa a pred odoslaním opravenej požiadavky vyplňte jej povinné možnosti.",
                "type": "price_unavailable"
              },
              {
                "condition": "Vstup videa alebo pôvodná úloha pokračovania sú neplatné.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Použite platné vstupy HTTPS. Pri pokračovaní použite verejné ID svojho dokončeného pôvodného videa s rovnakým kľúčom API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Dostupný zostatok alebo limity neumožňujú rezerváciu.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Pred odoslaním novej požiadavky skontrolujte dostupný zostatok a limity.",
                "type": "billing_error"
              },
              {
                "condition": "Overovanie videa, úložisko alebo prístup k službe sú dočasne nedostupné.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Počkajte na dostupnosť služby. Ak už máte ID videa, skontrolujte pôvodnú úlohu namiesto vytvorenia ďalšieho generovania.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Pôvodný výsledok videa a poplatok treba skontrolovať.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Zachovajte vrátené ID videa a skontrolujte danú úlohu. Počas jej kontroly neodosielajte náhradnú požiadavku na generovanie.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Stiahnutie existujúceho videa je dočasne nedostupné.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Neskôr skontrolujte tú istú úlohu videa a stiahnite jej existujúci výstup. Nové generovanie vytvára samostatnú operáciu.",
                "type": "server_error"
              },
              {
                "condition": "Obsah videa nebol zverejnený.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Skontrolujte stav pôvodnej úlohy. Keď hlási completed, stiahnite jej výsledok; ak hlási failed, riaďte sa jej oznámením o kontrole poplatku.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + pôvodné id + X-Should-Retry:false; pôvodnú požiadavku nikdy znova neodosielajte"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "runway/gen-4.5"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Zadajte prompt ako text a duration v celých sekundách. Vyberte podporované rozlíšenie; pridajte pomer strán alebo použite uvedenú veľkosť.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Textové zadanie."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "runway/gen-4.5"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images je pole. Každý objekt snímky má type, image_url a frame_type; image_url obsahuje url. Nastavte type na image_url. Použite first_frame. Každá rola snímky sa môže vyskytnúť najviac raz. Pre každú snímku zadajte verejnú HTTPS URL obrázka. Vyberte podporované rozlíšenie; pridajte pomer strán alebo použite uvedenú veľkosť.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Textové zadanie a obrázok prvej snímky."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Pozícia tohto videa v zozname výstupov, číslovaná od nuly.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Podpísaná HTTPS URL na stiahnutie tohto dokončeného videa.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Odtlačok SHA-256 pôvodných bajtov videa; null, ak nie je dostupný.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Veľkosť pôvodného videosúboru v bajtoch; null, ak nie je dostupná.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Nameraná dĺžka videa v milisekundách; null, ak nie je dostupná.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Šírka videa v pixeloch; null, ak nie je dostupná.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Výška videa v pixeloch; null, ak nie je dostupná.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identifikátor video kodeku; null, ak nie je zaznamenaný.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Či video obsahuje zvukovú stopu; null, ak sa to nemeralo.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identifikátor zvukového kodeku; null, keď nie je zaznamenaný žiadny identifikátor.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "podpísané URL obsahu vo vašom vlastníctve",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "runway/gen-4.5"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "runway/gen-4.5"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "720p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Tieto kľúče opisujú každý objekt snímky; image_url obsahuje iba url. Pri čisto textovej požiadavke vynechajte frame_images.",
                "content": "Pole objektov snímok. Každý objekt má type=image_url, image_url obsahujúce url a frame_type. Použite HTTPS URL obrázka a nastavte frame_type na first_frame. Každá rola snímky sa môže vyskytnúť najviac raz.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1280x720",
                  "720x1280"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "1280x720",
                    "720x1280"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "runway/gen-4.5"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "720p"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "1280x720",
                    "720x1280"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Odhadované náklady na generovanie",
            "units": [
              {
                "amount": "0.48",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.48",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"runway/gen-4.5\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.48",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.48",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "runway/gen-4.5",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.24",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.24",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.48",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.48",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "runway/gen-4.5",
        "request_model_id": "runway/gen-4.5",
        "route_label": "Ultra"
      }
    ],
    "name": "Runway: Gen-4.5",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.48,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.48,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "credit_usd": "0.01",
          "credits_per_second": "12"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.24",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "credit_usd": "0.01",
              "credits_per_second": "12"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "format_class": "prores_or_png_sequence",
          "surcharge_adds_to_model_base": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.10",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "format_class": "prores_or_png_sequence",
              "surcharge_adds_to_model_base": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "format_class": "10bit_or_hdr_up_to_4mp",
          "surcharge_adds_to_model_base": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.40",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "format_class": "10bit_or_hdr_up_to_4mp",
              "surcharge_adds_to_model_base": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "format_class": "10bit_or_hdr_above_4mp",
          "surcharge_adds_to_model_base": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.80",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "format_class": "10bit_or_hdr_above_4mp",
              "surcharge_adds_to_model_base": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.24",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "output second",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "24",
            "key": "cents_per_second_output",
            "label": "output second",
            "native_amount_usd_per_unit": "0.24",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "runway/gen-4.5",
    "short": "Runway Gen-4.5 vytvára videá z opisu scény alebo obrázka s pokynmi pohybu. Jeho klipy 2–10 sekúnd, explicitné kamerové zadania a samostatné kompozičné voľby prevodu textu a obrázka na video podporujú filmové koncepty, doplnkové zábery a animované vizuálne scény."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Runway Gen-4.5 vytvára videá z opisu scény alebo obrázka s pokynmi pohybu. Jeho klipy 2–10 sekúnd, explicitné kamerové zadania a samostatné kompozičné voľby prevodu textu a obrázka na video podporujú filmové koncepty, doplnkové zábery a animované vizuálne scény.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "88426b476044ee52fcf874be8221bc7b0b51a98fe6584b53842fa218353ce4f9",
    "raw_model_js_projection_sha256": "603849e0439caba284ded393414b438a76ec53922d5d6e835f9bbf170f125928",
    "raw_model_json_sha256": "88426b476044ee52fcf874be8221bc7b0b51a98fe6584b53842fa218353ce4f9",
    "renderer_sha256": "94893ba0fa4d7b7d32370787b705f436a4c2569f84ec7b33063549adc74b07e0"
  },
  "sourceRevision": "8e7b6913db5cf6539d670c717e1a7d7b5f7948b19d59f81843f5dc37028b8ba8"
}
