{
  "aboutHtml": "<p>Vidu Q2 vytvára video z písomného opisu scény prostredníctvom profilu na tvorbu videa z textu vybraného identifikátorom viduq2. Povinnými vstupmi sú presný identifikátor modelu a prompt opisujúci scénu. Použite ho pre krátky produktový koncept, úvodný celkový záber alebo činnosť postavy, ktorej vzhľad a pohyb možno určiť slovami. Táto nakonfigurovaná metóda vytvára video z textu; jej opis nepriraďuje identifikátoru samostatný režim obrazovej referencie ani úprav videa.</p><p>Zadanie zostavte okolo viditeľnej postupnosti. Určte hlavný objekt, miesto, činnosť, veľkosť záberu, pohyb kamery a konečnú kompozíciu. Pri produktovom koncepte opíšte predmet na stole, svetlo prechádzajúce po jeho materiáli a pomalé približovanie kamery, ktoré sa skončí na rozpoznateľnom detaile. Pri scéne lokality najskôr predstavte prostredie a až potom sa presúvajte k ústrednému bodu. Činnosť prispôsobte zvolenej dĺžke klipu, aby mala scéna priestor na zamýšľaný záver.</p><p>Limit promptu je 2,000 znakov. Najskôr uveďte podstatný hlavný objekt a činnosť, potom pridajte detaily osvetlenia, materiálu, prostredia a kamery, ktoré menia požadovaný výsledok. Vizuálny štýl určte v prompte. Príručka pre Q2 uvádza, že samostatné parametre style a movement_amplitude nemajú pri tomto modeli účinok, preto predvoľba general či anime a možnosti amplitúdy pohybu nenahrádzajú jasný opis scény.</p><p>Nastavenie trvania pre tento model prijíma celé sekundy od jednej do desiatich. Voľby rozlíšenia pre Q2 sú 540p, 720p a 1080p, pričom zdokumentovanou predvolenou hodnotou je 720p. Trvanie a rozlíšenie vyberajte spolu podľa činnosti a cieľového použitia. Krátke odhalenie a dlhší pohyb potrebujú odlišné načasovanie; predĺženie požadovaného trvania má slúžiť viditeľnej postupnosti, nie iba natiahnuť nezmenené zadanie. Pri príprave konečného umiestnenia skontrolujte skutočné rozmery a dĺžku vráteného klipu.</p><p>Zdokumentované voľby aspect_ratio sú 16:9, 9:16, 3:4, 4:3 a 1:1, s predvolenou hodnotou 16:9. Príručka výslovne zahŕňa 3:4 a 4:3 pre rodinu Q2. Formát vyberte pred generovaním a opíšte vhodnú kompozíciu: pri obraze na výšku zachovajte hlavnému objektu dobrú čitateľnosť alebo využite šírku vodorovného obrazu pre okolité prostredie. Záverečný pohľad nechajte dostatočne prehľadný pre zamýšľanú stránku, prezentáciu alebo neskoršie doplnenie titulku.</p><p>Pole seed riadi variácie. Jeho vynechanie alebo hodnota 0 vyberie náhodnú hodnotu; nenulová hodnota vyberie zdokumentovanú voľbu pevného počiatočného nastavenia pre opakovateľné generovanie. Pri porovnávaní verzií uchovajte vrátený seed spolu s promptom a nastaveniami. Spoločná operácia dokumentuje aj nastavenia audio a off_peak určené konkrétne pre modely Q3. Tieto voľby Q3 nie sú schopnosťami priradenými tomuto profilu Q2; požiadavku plánujte podľa jeho zdokumentovaného textového vstupu a výstupu v podobe videa.</p><p>Generovanie je asynchrónne. Odoslanie vráti task_id a počiatočný stav, pričom pri novo vytvorenej úlohe sa používa created. Túto identitu úlohy uchovajte počas sledovania spracovania. Zdokumentovaný dotaz na výsledok používa state=success pre úspešný výsledok a vracia pole creations. Každá položka má URL videa v creations[].url; uložte každé vrátené video namiesto predpokladu, že úloha vždy obsahuje presne jeden vytvorený výsledok.</p><p>Dokumentácia výsledku uvádza aj skutočné trvanie videa, fps a šírku a výšku rozlíšenia. Tieto vykázané hodnoty uchovajte spolu s dokončeným klipom namiesto považovania snímkovej frekvencie či rozmerov príkladu za pevnú špecifikáciu Q2. Odpoveď na vytvorenie úlohy obsahuje hodnotu credits spolu s konfiguráciou požiadavky. Tieto vykázané metadáta úlohy a identitu dokončeného výsledku uchovajte pri výsledku, aby každé video zostalo prepojené s nastaveniami jeho generovania.</p><p>Celú sekvenciu porovnajte s pôvodným zadaním: vzhľad hlavného objektu, tvar predmetu, smer pohybu, nadväznosť pohybu kamery a zamýšľaný konečný pohľad. Pri úprave určte konkrétny detail, ktorý nezodpovedal zadaniu, a zachovajte vydarené časti scény. Prompt, presný identifikátor, nastavenia, identitu úlohy a dokončené videá uchovajte spolu, aby neskoršie porovnanie vychádzalo zo skutočných výsledkov.</p>",
  "aboutText": "Vidu Q2 vytvára video z písomného opisu scény prostredníctvom profilu na tvorbu videa z textu vybraného identifikátorom viduq2. Povinnými vstupmi sú presný identifikátor modelu a prompt opisujúci scénu. Použite ho pre krátky produktový koncept, úvodný celkový záber alebo činnosť postavy, ktorej vzhľad a pohyb možno určiť slovami. Táto nakonfigurovaná metóda vytvára video z textu; jej opis nepriraďuje identifikátoru samostatný režim obrazovej referencie ani úprav videa.\n\nZadanie zostavte okolo viditeľnej postupnosti. Určte hlavný objekt, miesto, činnosť, veľkosť záberu, pohyb kamery a konečnú kompozíciu. Pri produktovom koncepte opíšte predmet na stole, svetlo prechádzajúce po jeho materiáli a pomalé približovanie kamery, ktoré sa skončí na rozpoznateľnom detaile. Pri scéne lokality najskôr predstavte prostredie a až potom sa presúvajte k ústrednému bodu. Činnosť prispôsobte zvolenej dĺžke klipu, aby mala scéna priestor na zamýšľaný záver.\n\nLimit promptu je 2,000 znakov. Najskôr uveďte podstatný hlavný objekt a činnosť, potom pridajte detaily osvetlenia, materiálu, prostredia a kamery, ktoré menia požadovaný výsledok. Vizuálny štýl určte v prompte. Príručka pre Q2 uvádza, že samostatné parametre style a movement_amplitude nemajú pri tomto modeli účinok, preto predvoľba general či anime a možnosti amplitúdy pohybu nenahrádzajú jasný opis scény.\n\nNastavenie trvania pre tento model prijíma celé sekundy od jednej do desiatich. Voľby rozlíšenia pre Q2 sú 540p, 720p a 1080p, pričom zdokumentovanou predvolenou hodnotou je 720p. Trvanie a rozlíšenie vyberajte spolu podľa činnosti a cieľového použitia. Krátke odhalenie a dlhší pohyb potrebujú odlišné načasovanie; predĺženie požadovaného trvania má slúžiť viditeľnej postupnosti, nie iba natiahnuť nezmenené zadanie. Pri príprave konečného umiestnenia skontrolujte skutočné rozmery a dĺžku vráteného klipu.\n\nZdokumentované voľby aspect_ratio sú 16:9, 9:16, 3:4, 4:3 a 1:1, s predvolenou hodnotou 16:9. Príručka výslovne zahŕňa 3:4 a 4:3 pre rodinu Q2. Formát vyberte pred generovaním a opíšte vhodnú kompozíciu: pri obraze na výšku zachovajte hlavnému objektu dobrú čitateľnosť alebo využite šírku vodorovného obrazu pre okolité prostredie. Záverečný pohľad nechajte dostatočne prehľadný pre zamýšľanú stránku, prezentáciu alebo neskoršie doplnenie titulku.\n\nPole seed riadi variácie. Jeho vynechanie alebo hodnota 0 vyberie náhodnú hodnotu; nenulová hodnota vyberie zdokumentovanú voľbu pevného počiatočného nastavenia pre opakovateľné generovanie. Pri porovnávaní verzií uchovajte vrátený seed spolu s promptom a nastaveniami. Spoločná operácia dokumentuje aj nastavenia audio a off_peak určené konkrétne pre modely Q3. Tieto voľby Q3 nie sú schopnosťami priradenými tomuto profilu Q2; požiadavku plánujte podľa jeho zdokumentovaného textového vstupu a výstupu v podobe videa.\n\nGenerovanie je asynchrónne. Odoslanie vráti task_id a počiatočný stav, pričom pri novo vytvorenej úlohe sa používa created. Túto identitu úlohy uchovajte počas sledovania spracovania. Zdokumentovaný dotaz na výsledok používa state=success pre úspešný výsledok a vracia pole creations. Každá položka má URL videa v creations[].url; uložte každé vrátené video namiesto predpokladu, že úloha vždy obsahuje presne jeden vytvorený výsledok.\n\nDokumentácia výsledku uvádza aj skutočné trvanie videa, fps a šírku a výšku rozlíšenia. Tieto vykázané hodnoty uchovajte spolu s dokončeným klipom namiesto považovania snímkovej frekvencie či rozmerov príkladu za pevnú špecifikáciu Q2. Odpoveď na vytvorenie úlohy obsahuje hodnotu credits spolu s konfiguráciou požiadavky. Tieto vykázané metadáta úlohy a identitu dokončeného výsledku uchovajte pri výsledku, aby každé video zostalo prepojené s nastaveniami jeho generovania.\n\nCelú sekvenciu porovnajte s pôvodným zadaním: vzhľad hlavného objektu, tvar predmetu, smer pohybu, nadväznosť pohybu kamery a zamýšľaný konečný pohľad. Pri úprave určte konkrétny detail, ktorý nezodpovedal zadaniu, a zachovajte vydarené časti scény. Prompt, presný identifikátor, nastavenia, identitu úlohy a dokončené videá uchovajte spolu, aby neskoršie porovnanie vychádzalo zo skutočných výsledkov.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "26ec9d240b2e4dbdbd0532370c0b82fd65ba858ad57a69cfca3334d37aca01b4",
    "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\">Vidu: Q2 Text-to-Video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zavrieť\">×</button></div><div class=\"idline\"><span>Vidu /</span><code>viduq2</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|viduq2\">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\">Vidu Q2 vytvára video z textového zadania scény s trvaním 1–10 sekúnd, výstupom 540p, 720p alebo 1080p a piatimi pomermi strán. Tento konkrétny profil viduq2 určuje štýl a pohyb podľa promptu a vracia výsledok prostredníctvom asynchrónnej úlohy.</p><dl class=\"card-io\" data-card-io><div><dt>Povolené vstupy</dt><dd>Text</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>Vidu Q2 vytvára video z písomného opisu scény prostredníctvom profilu na tvorbu videa z textu vybraného identifikátorom viduq2. Povinnými vstupmi sú presný identifikátor modelu a prompt opisujúci scénu. Použite ho pre krátky produktový koncept, úvodný celkový záber alebo činnosť postavy, ktorej vzhľad a pohyb možno určiť slovami. Táto nakonfigurovaná metóda vytvára video z textu; jej opis nepriraďuje identifikátoru samostatný režim obrazovej referencie ani úprav videa.</p><p>Zadanie zostavte okolo viditeľnej postupnosti. Určte hlavný objekt, miesto, činnosť, veľkosť záberu, pohyb kamery a konečnú kompozíciu. Pri produktovom koncepte opíšte predmet na stole, svetlo prechádzajúce po jeho materiáli a pomalé približovanie kamery, ktoré sa skončí na rozpoznateľnom detaile. Pri scéne lokality najskôr predstavte prostredie a až potom sa presúvajte k ústrednému bodu. Činnosť prispôsobte zvolenej dĺžke klipu, aby mala scéna priestor na zamýšľaný záver.</p><p>Limit promptu je 2,000 znakov. Najskôr uveďte podstatný hlavný objekt a činnosť, potom pridajte detaily osvetlenia, materiálu, prostredia a kamery, ktoré menia požadovaný výsledok. Vizuálny štýl určte v prompte. Príručka pre Q2 uvádza, že samostatné parametre style a movement_amplitude nemajú pri tomto modeli účinok, preto predvoľba general či anime a možnosti amplitúdy pohybu nenahrádzajú jasný opis scény.</p><p>Nastavenie trvania pre tento model prijíma celé sekundy od jednej do desiatich. Voľby rozlíšenia pre Q2 sú 540p, 720p a 1080p, pričom zdokumentovanou predvolenou hodnotou je 720p. Trvanie a rozlíšenie vyberajte spolu podľa činnosti a cieľového použitia. Krátke odhalenie a dlhší pohyb potrebujú odlišné načasovanie; predĺženie požadovaného trvania má slúžiť viditeľnej postupnosti, nie iba natiahnuť nezmenené zadanie. Pri príprave konečného umiestnenia skontrolujte skutočné rozmery a dĺžku vráteného klipu.</p><p>Zdokumentované voľby aspect_ratio sú 16:9, 9:16, 3:4, 4:3 a 1:1, s predvolenou hodnotou 16:9. Príručka výslovne zahŕňa 3:4 a 4:3 pre rodinu Q2. Formát vyberte pred generovaním a opíšte vhodnú kompozíciu: pri obraze na výšku zachovajte hlavnému objektu dobrú čitateľnosť alebo využite šírku vodorovného obrazu pre okolité prostredie. Záverečný pohľad nechajte dostatočne prehľadný pre zamýšľanú stránku, prezentáciu alebo neskoršie doplnenie titulku.</p><p>Pole seed riadi variácie. Jeho vynechanie alebo hodnota 0 vyberie náhodnú hodnotu; nenulová hodnota vyberie zdokumentovanú voľbu pevného počiatočného nastavenia pre opakovateľné generovanie. Pri porovnávaní verzií uchovajte vrátený seed spolu s promptom a nastaveniami. Spoločná operácia dokumentuje aj nastavenia audio a off_peak určené konkrétne pre modely Q3. Tieto voľby Q3 nie sú schopnosťami priradenými tomuto profilu Q2; požiadavku plánujte podľa jeho zdokumentovaného textového vstupu a výstupu v podobe videa.</p><p>Generovanie je asynchrónne. Odoslanie vráti task_id a počiatočný stav, pričom pri novo vytvorenej úlohe sa používa created. Túto identitu úlohy uchovajte počas sledovania spracovania. Zdokumentovaný dotaz na výsledok používa state=success pre úspešný výsledok a vracia pole creations. Každá položka má URL videa v creations[].url; uložte každé vrátené video namiesto predpokladu, že úloha vždy obsahuje presne jeden vytvorený výsledok.</p><p>Dokumentácia výsledku uvádza aj skutočné trvanie videa, fps a šírku a výšku rozlíšenia. Tieto vykázané hodnoty uchovajte spolu s dokončeným klipom namiesto považovania snímkovej frekvencie či rozmerov príkladu za pevnú špecifikáciu Q2. Odpoveď na vytvorenie úlohy obsahuje hodnotu credits spolu s konfiguráciou požiadavky. Tieto vykázané metadáta úlohy a identitu dokončeného výsledku uchovajte pri výsledku, aby každé video zostalo prepojené s nastaveniami jeho generovania.</p><p>Celú sekvenciu porovnajte s pôvodným zadaním: vzhľad hlavného objektu, tvar predmetu, smer pohybu, nadväznosť pohybu kamery a zamýšľaný konečný pohľad. Pri úprave určte konkrétny detail, ktorý nezodpovedal zadaniu, a zachovajte vydarené časti scény. Prompt, presný identifikátor, nastavenia, identitu úlohy a dokončené videá uchovajte spolu, aby neskoršie porovnanie vychádzalo zo skutočných výsledkov.</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 · Generovanie videa</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Vstup</dt><dd><code>text</code></dd></div><div><dt>Výstup</dt><dd><code>video</code></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>viduq2</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><div>Podmienky: Opíšte generovanú scénu. Zdokumentovaný limit je 2000 znakov; Ailoot kontroluje neprázdny reťazec a zachováva text.</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\">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>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Minimum: 1</div><div>Maximum: 10</div><div>Podmienky: Opis špecifický pre model viduq2 určuje 1–10 celých sekúnd. Nie je zdokumentovaná žiadna predvolená dĺžka špecifická pre model.</div><div>Jednotka: sekundy</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>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>Podmienky: Pre náhodnosť vynechajte alebo odošlite reťazec &quot;0&quot;. Zadaná nenulová hodnota seed vyberie zdokumentované správanie s pevnou hodnotou seed; nie je určený žiadny číselný rozsah.</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, 3:4, 4:3, 1:1</div></td><td data-cell-label=\"Predvolené\" data-default=\"known\"><span class=\"card-cell-label\">Predvolené</span>16:9</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>540p, 720p, 1080p</div><div>Podmienky: Zoznam špecifický pre model viduq2 dokumentuje tieto pásma pre 1–10 sekúnd. Spoločný enum a tabuľka uvádzajú aj 360p; jeho použiteľnosť je v rozpore s týmto zoznamom a tu sa nepotvrdzuje.</div></td><td data-cell-label=\"Predvolené\" data-default=\"known\"><span class=\"card-cell-label\">Predvolené</span>720p</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\">style</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>general, anime</div><div>Podmienky: Spoločná požiadavka prijíma toto pole, dokumentácia však výslovne uvádza, že pri viduq2 nemá žiadny účinok.</div></td><td data-cell-label=\"Predvolené\" data-default=\"known\"><span class=\"card-cell-label\">Predvolené</span>general</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\">movement_amplitude</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>auto, small, medium, large</div><div>Podmienky: Spoločná požiadavka prijíma toto pole, dokumentácia však výslovne uvádza, že pri modeloch q2 nemá žiadny účinok.</div></td><td data-cell-label=\"Predvolené\" data-default=\"known\"><span class=\"card-cell-label\">Predvolené</span>auto</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinácie vstupných podkladov</summary><p class=\"note-s\"><b></b></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</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>duration, seed, aspect_ratio, resolution, style, movement_amplitude</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</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>true</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>validation_scope</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>Ailoot overuje neprázdne reťazce model/prompt. Voliteľné typy a limity nižšie predstavujú zdokumentovaný kontrakt požiadavky; ostatné polia požiadavky sa zachovávajú pre vybraný model.</td></tr></tbody></table></div><p>Aliasy metódy: <code>/v1/videos/generations</code></p><p>Životný cyklus: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Vytvorte iba raz a zachovajte vrátené verejné id a polling_url.</p><p class=\"note-s\">Priebežne zisťujte stav pôvodnej operácie; hranicou dokončenia je success a výsledok creations[].url vo vašom vlastníctve.</p><p class=\"note-s\">Stiahnite každú vrátenú URL videa vo vašom vlastníctve; z príkladu nevyvodzujte pevný počet výstupov, dĺžku ani snímkovú frekvenciu.</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>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=\"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>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=\"Poplatok\"><span class=\"card-cell-label\">Poplatok</span><div><span>Výstup · Odhadované náklady na generovanie · Odhad iba na porovnanie</span> <b>$5.12</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></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Príklady požiadaviek</h3><h4>Ailoot Ultra · Generovanie videa</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-2782-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2782-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · vytvoriť video</button><button class=\"cg-tab\" id=\"model-code-2782-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2782-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · prečítať pôvodnú úlohu</button><button class=\"cg-tab\" id=\"model-code-2782-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2782-panel-2\" aria-selected=\"false\" tabindex=\"-1\">curl · stiahnuť každé vlastné 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-2782-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2782-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON_REQUEST&#39;\n{&quot;model&quot;:&quot;viduq2&quot;,&quot;prompt&quot;:&quot;In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene.&quot;}\nJSON_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\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2782-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2782-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_POLL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\ni=r.get(&quot;id&quot;)\nif not isinstance(i,str) or not i:raise SystemExit(&quot;Keep original response/headers/id; do not resubmit creation.&quot;)\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r.get(&quot;polling_url&quot;) or &quot;/v1/videos/&quot;+quote(i,safe=&quot;&quot;))\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/videos/&quot;):raise SystemExit(&quot;Use the actual Ailoot lookup path.&quot;)\nPath(&quot;poll-url.txt&quot;).write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error &quot;$(cat poll-url.txt)&quot; -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2782-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2782-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nif r.get(&quot;state&quot;)!=&quot;success&quot;:raise SystemExit(&quot;Poll the same original job until its owned result is returned.&quot;)\ncreations=r.get(&quot;creations&quot;)\nif not isinstance(creations,list) or not creations:raise SystemExit(&quot;No completed video creations.&quot;)\nurls=[]\nfor item in creations:\n    value=item.get(&quot;url&quot;) if isinstance(item,dict) else None\n    values=[value] if isinstance(value,str) else value\n    if not isinstance(values,list) or not values:raise SystemExit(&quot;No completed video URL.&quot;)\n    for u in values:\n        if not isinstance(u,str):raise SystemExit(&quot;Invalid returned URL.&quot;)\n        p=urlsplit(u)\n        if p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/media/assets/&quot;) or not p.path.endswith(&quot;/content&quot;) or not p.query:raise SystemExit(&quot;Wait for the actual Ailoot-owned signed result.&quot;)\n        urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; -o &quot;video-${index}.bin&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\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 · Generovanie videa</h4><p class=\"note-s\">JSON zachováva natívny stav a pole creations, pričom pridáva verejné id/provider_task_id/polling_url. Vybrané URL videa sú pred zverejnením prázdne a po dokončení sa zmenia na podpísané URL vo vlastníctve Ailoot.</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><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\">Stiahnite každú skutočne vrátenú URL v creations[].url; index obsahu označuje jeden skutočne vrátený výstup.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Ak treba overiť pôvodnú odpoveď</h5><p class=\"note-s\">Pevne stanovená deklarácia neuvádza žiadny konečný stav zlyhania. Zachovajte pôvodnú odpoveď, hlavičky a id a pri akomkoľvek nerozpoznanom stave alebo chybe result_pending_check skontrolujte tú istú operáciu; vytvorenie s neznámym výsledkom 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\">id</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>Vrátený verejný identifikátor úlohy alebo operácie Ailoot.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">provider_task_id</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>Pôvodný identifikátor úlohy, oddelený od verejného id.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">polling_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>Vrátená cesta Ailoot na vyhľadanie pôvodnej úlohy.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string when supplied</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Pôvodný identifikátor prítomný v odpovedi na vytvorenie.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">state</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string when supplied</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Natívny stav úlohy: created pre pevne stanovený čakajúci stav a success pre dokončenie.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">err_code</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string when supplied</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Diagnostika úlohy; uložená špecifikácia nedeklaruje žiadny vymenovaný zoznam chybových kódov.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">creations[].url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string|string[]</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Každá vybraná URL dokončeného videa sa nahradí podpísanou URL vo vlastníctve Ailoot.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">creations[].video.duration</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>number when supplied</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Vrátená dĺžka videa; overte skutočný dokončený výsledok.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">creations[].video.fps</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer when supplied</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Vrátená snímková frekvencia; nesľubuje sa žiadna pevná snímková frekvencia.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">creations[].video.resolution.width</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer when supplied</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Vrátená šírka výstupu v pixeloch.</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">creations[].video.resolution.height</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer when supplied</td><td data-cell-label=\"Význam\"><span class=\"card-cell-label\">Význam</span>Vrátená výška výstupu v pixeloch.</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>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Neplatný JSON/model, chýbajúce alebo prázdne povinné reťazce alebo neplatný index obsahu.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span></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>Neplatný kľúč API služby Ailoot.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span></td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>403 · <code>permission_error</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Skupina kľúča API nemá povolený prístup k tejto mediálnej trase.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span></td></tr><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>Pôvodná úloha alebo požadovaný výstup chýbajú alebo nepatria rovnakému používateľovi, kľúču API či skupine.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span></td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span>502 · <code>result_pending_check</code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Pôvodné odoslanie alebo stav sú neúplné alebo ich nemožno zosúladiť; zachovajte pôvodné ID a požiadavku znova neodosielajte.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span></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é priradenie, trasa alebo médium vo vašom vlastníctve sa stále kontrolujú; pokračujte v kontrole pôvodnej operácie.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span></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>Mediálna služba alebo úložisko pôvodnej úlohy nie sú dostupné.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span></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=viduq2&amp;route=Ultra&amp;caller=viduq2&amp;fmt=videos\"><code>viduq2</code></a></span></p><h4>Aliasy ciest metód</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>Súvisiace ID na volanie</h4><p class=\"note-s\"><a href=\"#m=viduq2&amp;route=Ultra&amp;caller=viduq2&amp;fmt=videos\"><code>viduq2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "viduq2",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "viduq2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|viduq2",
      "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": {
            "errors": [
              {
                "condition": "Neplatný JSON/model, chýbajúce alebo prázdne povinné reťazce alebo neplatný index obsahu.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Neplatný kľúč API služby Ailoot.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Skupina kľúča API nemá povolený prístup k tejto mediálnej trase.",
                "http_status": 403,
                "type": "permission_error"
              },
              {
                "condition": "Pôvodná úloha alebo požadovaný výstup chýbajú alebo nepatria rovnakému používateľovi, kľúču API či skupine.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Pôvodné odoslanie alebo stav sú neúplné alebo ich nemožno zosúladiť; zachovajte pôvodné ID a požiadavku znova neodosielajte.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Pôvodné priradenie, trasa alebo médium vo vašom vlastníctve sa stále kontrolujú; pokračujte v kontrole pôvodnej operácie.",
                "http_status": 503,
                "type": "result_pending_check"
              },
              {
                "condition": "Mediálna služba alebo úložisko pôvodnej úlohy nie sú dostupné.",
                "http_status": 503,
                "type": "server_error"
              }
            ],
            "ignored_fields": [
              "style",
              "movement_amplitude"
            ],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "success"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "created"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "state_field": "state",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Pevne stanovená deklarácia neuvádza žiadny konečný stav zlyhania. Zachovajte pôvodnú odpoveď, hlavičky a id a pri akomkoľvek nerozpoznanom stave alebo chybe result_pending_check skontrolujte tú istú operáciu; vytvorenie s neznámym výsledkom nikdy znova neodosielajte.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ]
            ],
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
              "all_results": "Stiahnite každú skutočne vrátenú URL v creations[].url; index obsahu označuje jeden skutočne vrátený výstup.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": "Vrátený verejný identifikátor úlohy alebo operácie Ailoot.",
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": "Pôvodný identifikátor úlohy, oddelený od verejného id.",
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": "Vrátená cesta Ailoot na vyhľadanie pôvodnej úlohy.",
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": "Pôvodný identifikátor prítomný v odpovedi na vytvorenie.",
                  "name": "task_id",
                  "type": "string when supplied"
                },
                {
                  "description": "Natívny stav úlohy: created pre pevne stanovený čakajúci stav a success pre dokončenie.",
                  "name": "state",
                  "type": "string when supplied"
                },
                {
                  "description": "Diagnostika úlohy; uložená špecifikácia nedeklaruje žiadny vymenovaný zoznam chybových kódov.",
                  "name": "err_code",
                  "type": "string when supplied"
                },
                {
                  "description": "Každá vybraná URL dokončeného videa sa nahradí podpísanou URL vo vlastníctve Ailoot.",
                  "name": "creations[].url",
                  "type": "string|string[]"
                },
                {
                  "description": "Vrátená dĺžka videa; overte skutočný dokončený výsledok.",
                  "name": "creations[].video.duration",
                  "type": "number when supplied"
                },
                {
                  "description": "Vrátená snímková frekvencia; nesľubuje sa žiadna pevná snímková frekvencia.",
                  "name": "creations[].video.fps",
                  "type": "integer when supplied"
                },
                {
                  "description": "Vrátená šírka výstupu v pixeloch.",
                  "name": "creations[].video.resolution.width",
                  "type": "integer when supplied"
                },
                {
                  "description": "Vrátená výška výstupu v pixeloch.",
                  "name": "creations[].video.resolution.height",
                  "type": "integer when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "JSON zachováva natívny stav a pole creations, pričom pridáva verejné id/provider_task_id/polling_url. Vybrané URL videa sú pred zverejnením prázdne a po dokončení sa zmenia na podpísané URL vo vlastníctve Ailoot."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "viduq2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Opíšte generovanú scénu. Zdokumentovaný limit je 2000 znakov; Ailoot kontroluje neprázdny reťazec a zachováva text.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 2000,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Opis špecifický pre model viduq2 určuje 1–10 celých sekúnd. Nie je zdokumentovaná žiadna predvolená dĺžka špecifická pre model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 10,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "sekundy"
              },
              {
                "availability": "source_interface",
                "conditions": "Pre náhodnosť vynechajte alebo odošlite reťazec \"0\". Zadaná nenulová hodnota seed vyberie zdokumentované správanie s pevnou hodnotou seed; nie je určený žiadny číselný rozsah.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "seed",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "16:9",
                  "9:16",
                  "3:4",
                  "4:3",
                  "1:1"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Zoznam špecifický pre model viduq2 dokumentuje tieto pásma pre 1–10 sekúnd. Spoločný enum a tabuľka uvádzajú aj 360p; jeho použiteľnosť je v rozpore s týmto zoznamom a tu sa nepotvrdzuje.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "540p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Spoločná požiadavka prijíma toto pole, dokumentácia však výslovne uvádza, že pri viduq2 nemá žiadny účinok.",
                "default": "general",
                "default_known": true,
                "enum": [
                  "general",
                  "anime"
                ],
                "enum_known": true,
                "name": "style",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Spoločná požiadavka prijíma toto pole, dokumentácia však výslovne uvádza, že pri modeloch q2 nemá žiadny účinok.",
                "default": "auto",
                "default_known": true,
                "enum": [
                  "auto",
                  "small",
                  "medium",
                  "large"
                ],
                "enum_known": true,
                "name": "movement_amplitude",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Literal viduq2 model with the documented Ailoot videos interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "default": "16:9",
                  "enum": [
                    "16:9",
                    "9:16",
                    "3:4",
                    "4:3",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "model": {
                  "const": "viduq2",
                  "minLength": 1,
                  "type": "string"
                },
                "movement_amplitude": {
                  "default": "auto",
                  "enum": [
                    "auto",
                    "small",
                    "medium",
                    "large"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 2000,
                  "minLength": 1,
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "540p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "type": "string"
                },
                "style": {
                  "default": "general",
                  "enum": [
                    "general",
                    "anime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "The shared enum and table mention 360p, while the model-specific viduq2 resolution description lists 540p/720p/1080p. The method asserts only the explicit model-specific list.",
              "The shared duration example uses a quoted string despite an integer schema. The copyable viduq2 example omits that optional field; an explicit duration follows the documented integer type.",
              "No model-specific default duration, maximum output count, generated-file retention period, cancellation endpoint or terminal failure-state list is established by these saved documents.",
              "The documented fetch uses an id path parameter; the pinned declaration names that same substituted value task_id. The fetch example has no task_id field, which the current client accepts only by retaining the original task identity."
            ],
            "unsupported": [
              "Image-guided input, video editing and extension are not part of this text-to-video method.",
              "The audio and off_peak parameters are documented only for other model selectors, not viduq2.",
              "No live streaming, callback completion or owned cover-image result contract is established here."
            ]
          },
          "hints": [
            "Vytvorte iba raz a zachovajte vrátené verejné id a polling_url.",
            "Priebežne zisťujte stav pôvodnej operácie; hranicou dokončenia je success a výsledok creations[].url vo vašom vlastníctve.",
            "Stiahnite každú vrátenú URL videa vo vašom vlastníctve; z príkladu nevyvodzujte pevný počet výstupov, dĺžku ani snímkovú frekvenciu."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "duration",
              "seed",
              "aspect_ratio",
              "resolution",
              "style",
              "movement_amplitude"
            ],
            "required": [
              "model",
              "prompt"
            ],
            "validation_scope": "Ailoot overuje neprázdne reťazce model/prompt. Voliteľné typy a limity nižšie predstavujú zdokumentovaný kontrakt požiadavky; ostatné polia požiadavky sa zachovávajú pre vybraný model."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "success"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "created"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "state_field": "state",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "The pinned declaration enumerates no terminal failure state. Preserve original response/headers/id and check that same operation for any unrecognized state or result_pending_check error; never resubmit an unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
            "all_results": "Download every actual returned URL in creations[].url; a content index identifies one real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": "Returned public Ailoot task or operation identifier.",
                "name": "id",
                "type": "string"
              },
              {
                "description": "Original task identifier, separate from the public id.",
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": "Returned Ailoot lookup path for the original task.",
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": "Original identifier present in the creation response.",
                "name": "task_id",
                "type": "string when supplied"
              },
              {
                "description": "Native task state: created for the pinned pending state and success for completion.",
                "name": "state",
                "type": "string when supplied"
              },
              {
                "description": "Task diagnostic; the saved specification declares no enumerated error-code list.",
                "name": "err_code",
                "type": "string when supplied"
              },
              {
                "description": "Every selected completed video URL is replaced with an Ailoot-owned signed URL.",
                "name": "creations[].url",
                "type": "string|string[]"
              },
              {
                "description": "Returned video duration; inspect the actual completed result.",
                "name": "creations[].video.duration",
                "type": "number when supplied"
              },
              {
                "description": "Returned frame rate; no fixed frame rate is promised.",
                "name": "creations[].video.fps",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output width in pixels.",
                "name": "creations[].video.resolution.width",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output height in pixels.",
                "name": "creations[].video.resolution.height",
                "type": "integer when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "JSON retains the native state and creations array, with public id/provider_task_id/polling_url added. Selected video URLs are blank before publication and become Ailoot-owned signed URLs after completion."
          }
        },
        "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"
              }
            ]
          },
          {
            "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": "5.12",
                "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": "5.12",
                "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}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"viduq2\",\"prompt\":\"In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene.\"}\nJSON_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\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i:raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use the actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"state\")!=\"success\":raise SystemExit(\"Poll the same original job until its owned result is returned.\")\ncreations=r.get(\"creations\")\nif not isinstance(creations,list) or not creations:raise SystemExit(\"No completed video creations.\")\nurls=[]\nfor item in creations:\n    value=item.get(\"url\") if isinstance(item,dict) else None\n    values=[value] if isinstance(value,str) else value\n    if not isinstance(values,list) or not values:raise SystemExit(\"No completed video URL.\")\n    for u in values:\n        if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n        p=urlsplit(u)\n        if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for the actual Ailoot-owned signed result.\")\n        urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download every owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain the returned public id and polling_url.",
          "Poll the original operation and read state; success and an owned creations[].url result are the completion boundary.",
          "Download every returned owned video URL; do not infer a fixed output count, duration or frame rate from the example."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Generovanie videa",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "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"
              }
            ]
          },
          {
            "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": "5.12",
                "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": "5.12",
                "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": "viduq2",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_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": "5.12",
            "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": "5.12",
            "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": "viduq2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "930b2b8f738e11a578de0198750133d17bd4f95e847129d255de8bb6aa8b668e",
    "input_html_sha256": "63cf7d546838d24a34acc7ff0bf34844e974889b1106e71a996326cd552854a2",
    "private_audit_sha256": "cd356875265099aaf30945eb1b8e4ed1cde71949d06169348e8b2186c05c8390",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sk/viduq2/",
    "description": "Vidu Q2 vytvára video z textového zadania scény s trvaním 1–10 sekúnd, výstupom 540p, 720p alebo 1080p a piatimi pomermi strán. Tento konkrétny profil viduq2 určuje štýl a pohyb podľa promptu a vracia výsledok prostredníctvom asynchrónnej úlohy.",
    "locale": "sk",
    "md_url": "https://ailoot.ai/models/sk/viduq2/index.md",
    "title": "Vidu: Q2 Text-to-Video — Ailoot",
    "url": "https://ailoot.ai/models/sk/viduq2/"
  },
  "rawModel": {
    "about": "Vidu Q2 vytvára video z písomného opisu scény prostredníctvom profilu na tvorbu videa z textu vybraného identifikátorom viduq2. Povinnými vstupmi sú presný identifikátor modelu a prompt opisujúci scénu. Použite ho pre krátky produktový koncept, úvodný celkový záber alebo činnosť postavy, ktorej vzhľad a pohyb možno určiť slovami. Táto nakonfigurovaná metóda vytvára video z textu; jej opis nepriraďuje identifikátoru samostatný režim obrazovej referencie ani úprav videa.\n\nZadanie zostavte okolo viditeľnej postupnosti. Určte hlavný objekt, miesto, činnosť, veľkosť záberu, pohyb kamery a konečnú kompozíciu. Pri produktovom koncepte opíšte predmet na stole, svetlo prechádzajúce po jeho materiáli a pomalé približovanie kamery, ktoré sa skončí na rozpoznateľnom detaile. Pri scéne lokality najskôr predstavte prostredie a až potom sa presúvajte k ústrednému bodu. Činnosť prispôsobte zvolenej dĺžke klipu, aby mala scéna priestor na zamýšľaný záver.\n\nLimit promptu je 2,000 znakov. Najskôr uveďte podstatný hlavný objekt a činnosť, potom pridajte detaily osvetlenia, materiálu, prostredia a kamery, ktoré menia požadovaný výsledok. Vizuálny štýl určte v prompte. Príručka pre Q2 uvádza, že samostatné parametre style a movement_amplitude nemajú pri tomto modeli účinok, preto predvoľba general či anime a možnosti amplitúdy pohybu nenahrádzajú jasný opis scény.\n\nNastavenie trvania pre tento model prijíma celé sekundy od jednej do desiatich. Voľby rozlíšenia pre Q2 sú 540p, 720p a 1080p, pričom zdokumentovanou predvolenou hodnotou je 720p. Trvanie a rozlíšenie vyberajte spolu podľa činnosti a cieľového použitia. Krátke odhalenie a dlhší pohyb potrebujú odlišné načasovanie; predĺženie požadovaného trvania má slúžiť viditeľnej postupnosti, nie iba natiahnuť nezmenené zadanie. Pri príprave konečného umiestnenia skontrolujte skutočné rozmery a dĺžku vráteného klipu.\n\nZdokumentované voľby aspect_ratio sú 16:9, 9:16, 3:4, 4:3 a 1:1, s predvolenou hodnotou 16:9. Príručka výslovne zahŕňa 3:4 a 4:3 pre rodinu Q2. Formát vyberte pred generovaním a opíšte vhodnú kompozíciu: pri obraze na výšku zachovajte hlavnému objektu dobrú čitateľnosť alebo využite šírku vodorovného obrazu pre okolité prostredie. Záverečný pohľad nechajte dostatočne prehľadný pre zamýšľanú stránku, prezentáciu alebo neskoršie doplnenie titulku.\n\nPole seed riadi variácie. Jeho vynechanie alebo hodnota 0 vyberie náhodnú hodnotu; nenulová hodnota vyberie zdokumentovanú voľbu pevného počiatočného nastavenia pre opakovateľné generovanie. Pri porovnávaní verzií uchovajte vrátený seed spolu s promptom a nastaveniami. Spoločná operácia dokumentuje aj nastavenia audio a off_peak určené konkrétne pre modely Q3. Tieto voľby Q3 nie sú schopnosťami priradenými tomuto profilu Q2; požiadavku plánujte podľa jeho zdokumentovaného textového vstupu a výstupu v podobe videa.\n\nGenerovanie je asynchrónne. Odoslanie vráti task_id a počiatočný stav, pričom pri novo vytvorenej úlohe sa používa created. Túto identitu úlohy uchovajte počas sledovania spracovania. Zdokumentovaný dotaz na výsledok používa state=success pre úspešný výsledok a vracia pole creations. Každá položka má URL videa v creations[].url; uložte každé vrátené video namiesto predpokladu, že úloha vždy obsahuje presne jeden vytvorený výsledok.\n\nDokumentácia výsledku uvádza aj skutočné trvanie videa, fps a šírku a výšku rozlíšenia. Tieto vykázané hodnoty uchovajte spolu s dokončeným klipom namiesto považovania snímkovej frekvencie či rozmerov príkladu za pevnú špecifikáciu Q2. Odpoveď na vytvorenie úlohy obsahuje hodnotu credits spolu s konfiguráciou požiadavky. Tieto vykázané metadáta úlohy a identitu dokončeného výsledku uchovajte pri výsledku, aby každé video zostalo prepojené s nastaveniami jeho generovania.\n\nCelú sekvenciu porovnajte s pôvodným zadaním: vzhľad hlavného objektu, tvar predmetu, smer pohybu, nadväznosť pohybu kamery a zamýšľaný konečný pohľad. Pri úprave určte konkrétny detail, ktorý nezodpovedal zadaniu, a zachovajte vydarené časti scény. Prompt, presný identifikátor, nastavenia, identitu úlohy a dokončené videá uchovajte spolu, aby neskoršie porovnanie vychádzalo zo skutočných výsledkov.",
    "alias_of": null,
    "aliases": [],
    "author": "Vidu",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "5.12",
            "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": "5.12",
            "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,
    "display_name": "Vidu: Q2 Text-to-Video",
    "formats": [
      "videos"
    ],
    "id": "viduq2",
    "input": [
      "text"
    ],
    "kind": "video",
    "locale": "en",
    "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": {
            "errors": [
              {
                "condition": "Neplatný JSON/model, chýbajúce alebo prázdne povinné reťazce alebo neplatný index obsahu.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Neplatný kľúč API služby Ailoot.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Skupina kľúča API nemá povolený prístup k tejto mediálnej trase.",
                "http_status": 403,
                "type": "permission_error"
              },
              {
                "condition": "Pôvodná úloha alebo požadovaný výstup chýbajú alebo nepatria rovnakému používateľovi, kľúču API či skupine.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Pôvodné odoslanie alebo stav sú neúplné alebo ich nemožno zosúladiť; zachovajte pôvodné ID a požiadavku znova neodosielajte.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Pôvodné priradenie, trasa alebo médium vo vašom vlastníctve sa stále kontrolujú; pokračujte v kontrole pôvodnej operácie.",
                "http_status": 503,
                "type": "result_pending_check"
              },
              {
                "condition": "Mediálna služba alebo úložisko pôvodnej úlohy nie sú dostupné.",
                "http_status": 503,
                "type": "server_error"
              }
            ],
            "ignored_fields": [
              "style",
              "movement_amplitude"
            ],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "success"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "created"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "state_field": "state",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Pevne stanovená deklarácia neuvádza žiadny konečný stav zlyhania. Zachovajte pôvodnú odpoveď, hlavičky a id a pri akomkoľvek nerozpoznanom stave alebo chybe result_pending_check skontrolujte tú istú operáciu; vytvorenie s neznámym výsledkom nikdy znova neodosielajte.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ]
            ],
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
              "all_results": "Stiahnite každú skutočne vrátenú URL v creations[].url; index obsahu označuje jeden skutočne vrátený výstup.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": "Vrátený verejný identifikátor úlohy alebo operácie Ailoot.",
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": "Pôvodný identifikátor úlohy, oddelený od verejného id.",
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": "Vrátená cesta Ailoot na vyhľadanie pôvodnej úlohy.",
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": "Pôvodný identifikátor prítomný v odpovedi na vytvorenie.",
                  "name": "task_id",
                  "type": "string when supplied"
                },
                {
                  "description": "Natívny stav úlohy: created pre pevne stanovený čakajúci stav a success pre dokončenie.",
                  "name": "state",
                  "type": "string when supplied"
                },
                {
                  "description": "Diagnostika úlohy; uložená špecifikácia nedeklaruje žiadny vymenovaný zoznam chybových kódov.",
                  "name": "err_code",
                  "type": "string when supplied"
                },
                {
                  "description": "Každá vybraná URL dokončeného videa sa nahradí podpísanou URL vo vlastníctve Ailoot.",
                  "name": "creations[].url",
                  "type": "string|string[]"
                },
                {
                  "description": "Vrátená dĺžka videa; overte skutočný dokončený výsledok.",
                  "name": "creations[].video.duration",
                  "type": "number when supplied"
                },
                {
                  "description": "Vrátená snímková frekvencia; nesľubuje sa žiadna pevná snímková frekvencia.",
                  "name": "creations[].video.fps",
                  "type": "integer when supplied"
                },
                {
                  "description": "Vrátená šírka výstupu v pixeloch.",
                  "name": "creations[].video.resolution.width",
                  "type": "integer when supplied"
                },
                {
                  "description": "Vrátená výška výstupu v pixeloch.",
                  "name": "creations[].video.resolution.height",
                  "type": "integer when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "JSON zachováva natívny stav a pole creations, pričom pridáva verejné id/provider_task_id/polling_url. Vybrané URL videa sú pred zverejnením prázdne a po dokončení sa zmenia na podpísané URL vo vlastníctve Ailoot."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "viduq2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Opíšte generovanú scénu. Zdokumentovaný limit je 2000 znakov; Ailoot kontroluje neprázdny reťazec a zachováva text.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 2000,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Opis špecifický pre model viduq2 určuje 1–10 celých sekúnd. Nie je zdokumentovaná žiadna predvolená dĺžka špecifická pre model.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 10,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "sekundy"
              },
              {
                "availability": "source_interface",
                "conditions": "Pre náhodnosť vynechajte alebo odošlite reťazec \"0\". Zadaná nenulová hodnota seed vyberie zdokumentované správanie s pevnou hodnotou seed; nie je určený žiadny číselný rozsah.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "seed",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "16:9",
                  "9:16",
                  "3:4",
                  "4:3",
                  "1:1"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Zoznam špecifický pre model viduq2 dokumentuje tieto pásma pre 1–10 sekúnd. Spoločný enum a tabuľka uvádzajú aj 360p; jeho použiteľnosť je v rozpore s týmto zoznamom a tu sa nepotvrdzuje.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "540p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Spoločná požiadavka prijíma toto pole, dokumentácia však výslovne uvádza, že pri viduq2 nemá žiadny účinok.",
                "default": "general",
                "default_known": true,
                "enum": [
                  "general",
                  "anime"
                ],
                "enum_known": true,
                "name": "style",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Spoločná požiadavka prijíma toto pole, dokumentácia však výslovne uvádza, že pri modeloch q2 nemá žiadny účinok.",
                "default": "auto",
                "default_known": true,
                "enum": [
                  "auto",
                  "small",
                  "medium",
                  "large"
                ],
                "enum_known": true,
                "name": "movement_amplitude",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Literal viduq2 model with the documented Ailoot videos interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "default": "16:9",
                  "enum": [
                    "16:9",
                    "9:16",
                    "3:4",
                    "4:3",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "model": {
                  "const": "viduq2",
                  "minLength": 1,
                  "type": "string"
                },
                "movement_amplitude": {
                  "default": "auto",
                  "enum": [
                    "auto",
                    "small",
                    "medium",
                    "large"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 2000,
                  "minLength": 1,
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "540p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "type": "string"
                },
                "style": {
                  "default": "general",
                  "enum": [
                    "general",
                    "anime"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "The shared enum and table mention 360p, while the model-specific viduq2 resolution description lists 540p/720p/1080p. The method asserts only the explicit model-specific list.",
              "The shared duration example uses a quoted string despite an integer schema. The copyable viduq2 example omits that optional field; an explicit duration follows the documented integer type.",
              "No model-specific default duration, maximum output count, generated-file retention period, cancellation endpoint or terminal failure-state list is established by these saved documents.",
              "The documented fetch uses an id path parameter; the pinned declaration names that same substituted value task_id. The fetch example has no task_id field, which the current client accepts only by retaining the original task identity."
            ],
            "unsupported": [
              "Image-guided input, video editing and extension are not part of this text-to-video method.",
              "The audio and off_peak parameters are documented only for other model selectors, not viduq2.",
              "No live streaming, callback completion or owned cover-image result contract is established here."
            ]
          },
          "hints": [
            "Vytvorte iba raz a zachovajte vrátené verejné id a polling_url.",
            "Priebežne zisťujte stav pôvodnej operácie; hranicou dokončenia je success a výsledok creations[].url vo vašom vlastníctve.",
            "Stiahnite každú vrátenú URL videa vo vašom vlastníctve; z príkladu nevyvodzujte pevný počet výstupov, dĺžku ani snímkovú frekvenciu."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "duration",
              "seed",
              "aspect_ratio",
              "resolution",
              "style",
              "movement_amplitude"
            ],
            "required": [
              "model",
              "prompt"
            ],
            "validation_scope": "Ailoot overuje neprázdne reťazce model/prompt. Voliteľné typy a limity nižšie predstavujú zdokumentovaný kontrakt požiadavky; ostatné polia požiadavky sa zachovávajú pre vybraný model."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "success"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use the actual returned public id or X-Ailoot-Task-Id and polling_url. Keep task_id/provider_task_id separate; status lookup can retain the original task identity when the native fetch omits it.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "created"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "state_field": "state",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "The pinned declaration enumerates no terminal failure state. Preserve original response/headers/id and check that same operation for any unrecognized state or result_pending_check error; never resubmit an unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only creations[].url is selected for owned video delivery. No owned cover-image or callback result flow is established.",
            "all_results": "Download every actual returned URL in creations[].url; a content index identifies one real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": "Returned public Ailoot task or operation identifier.",
                "name": "id",
                "type": "string"
              },
              {
                "description": "Original task identifier, separate from the public id.",
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": "Returned Ailoot lookup path for the original task.",
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": "Original identifier present in the creation response.",
                "name": "task_id",
                "type": "string when supplied"
              },
              {
                "description": "Native task state: created for the pinned pending state and success for completion.",
                "name": "state",
                "type": "string when supplied"
              },
              {
                "description": "Task diagnostic; the saved specification declares no enumerated error-code list.",
                "name": "err_code",
                "type": "string when supplied"
              },
              {
                "description": "Every selected completed video URL is replaced with an Ailoot-owned signed URL.",
                "name": "creations[].url",
                "type": "string|string[]"
              },
              {
                "description": "Returned video duration; inspect the actual completed result.",
                "name": "creations[].video.duration",
                "type": "number when supplied"
              },
              {
                "description": "Returned frame rate; no fixed frame rate is promised.",
                "name": "creations[].video.fps",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output width in pixels.",
                "name": "creations[].video.resolution.width",
                "type": "integer when supplied"
              },
              {
                "description": "Returned output height in pixels.",
                "name": "creations[].video.resolution.height",
                "type": "integer when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Selected video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "JSON retains the native state and creations array, with public id/provider_task_id/polling_url added. Selected video URLs are blank before publication and become Ailoot-owned signed URLs after completion."
          }
        },
        "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"
              }
            ]
          },
          {
            "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": "5.12",
                "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": "5.12",
                "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}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"viduq2\",\"prompt\":\"In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene.\"}\nJSON_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\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i:raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use the actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"state\")!=\"success\":raise SystemExit(\"Poll the same original job until its owned result is returned.\")\ncreations=r.get(\"creations\")\nif not isinstance(creations,list) or not creations:raise SystemExit(\"No completed video creations.\")\nurls=[]\nfor item in creations:\n    value=item.get(\"url\") if isinstance(item,dict) else None\n    values=[value] if isinstance(value,str) else value\n    if not isinstance(values,list) or not values:raise SystemExit(\"No completed video URL.\")\n    for u in values:\n        if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n        p=urlsplit(u)\n        if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for the actual Ailoot-owned signed result.\")\n        urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download every owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain the returned public id and polling_url.",
          "Poll the original operation and read state; success and an owned creations[].url result are the completion boundary.",
          "Download every returned owned video URL; do not infer a fixed output count, duration or frame rate from the example."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Generovanie videa",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "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"
              }
            ]
          },
          {
            "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": "5.12",
                "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": "5.12",
                "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": "viduq2",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_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": "5.12",
            "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": "5.12",
            "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": "viduq2",
        "request_model_id": "viduq2",
        "route_label": "Ultra"
      }
    ],
    "name": "Vidu: Q2 Text-to-Video",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 5.12,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 5.12,
      "varies": false
    },
    "short": "Vidu Q2 vytvára video z textového zadania scény s trvaním 1–10 sekúnd, výstupom 540p, 720p alebo 1080p a piatimi pomermi strán. Tento konkrétny profil viduq2 určuje štýl a pohyb podľa promptu a vracia výsledok prostredníctvom asynchrónnej úlohy."
  },
  "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": "Vidu Q2 vytvára video z textového zadania scény s trvaním 1–10 sekúnd, výstupom 540p, 720p alebo 1080p a piatimi pomermi strán. Tento konkrétny profil viduq2 určuje štýl a pohyb podľa promptu a vracia výsledok prostredníctvom asynchrónnej úlohy.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "5f4b372198810976983885ecde879370419797633b2af56fc1a4dff6ecc95bba",
    "renderer_sha256": "94893ba0fa4d7b7d32370787b705f436a4c2569f84ec7b33063549adc74b07e0"
  },
  "sourceRevision": "d0dfe363f1a2649902937bc2c9ded6463db31a2ba8f57087a3ec607368f24ceb"
}
