{
  "aboutHtml": "<p>Kling v1.5 je verzia modelu Kling na generovanie videa, ktorá má v zdokumentovanom katalógu modelov schopnosť vytvárať video z obrázka. Dodaný statický obrázok poskytuje vizuálny východiskový bod a písomné zadanie opisuje, ako sa má scéna pohybovať. Použite ho na vytvorenie gesta postavy, pohybujúceho sa objektu alebo meniaceho sa prostredia z obrázka, ktorého kompozícia už zodpovedá záberu.</p><p>Pripravte obrázok s dôrazom na dôležité detaily subjektu. Postava potrebuje zreteľnú tvár, pózu a oblečenie; objekt potrebuje jasný obrys a viditeľné znaky materiálu. Nechajte v kompozícii priestor pre zamýšľaný pohyb. Uchovajte pôvodný statický obrázok s hotovou sekvenciou, aby sa zmeny vzhľadu dali posúdiť priamym porovnaním.</p><p>Opíšte akciu ako pozorovateľnú udalosť. Napríklad opíšte sediaceho človeka, ktorý sa otáča k oknu, alebo látkovú stuhu pohybujúcu sa v jemnom vánku. Uveďte smer a zamýšľaný záver. Keď sa v scéne nachádza viac objektov, určite, ktorý z nich koná a ktoré zostávajú na mieste.</p><p>Vysvetlite úlohu kamery. Pevný uhol pohľadu môže uľahčiť sledovanie drobného gesta, zatiaľ čo pohybujúca sa kamera môže odkryť novú stranu scény. Opíšte tento pohyb vo vzťahu k subjektu. Požiadavka na priblíženie k subjektu a požiadavka, aby sa subjekt priblížil ku kamere, predstavujú odlišné vizuálne zámery.</p><p>Zdokumentovaná položka pre tvorbu videa z obrázka uvádza výber trvania päť alebo desať sekúnd, režimy std a pro a formát na šírku, na výšku a štvorcový formát. Pred vyhodnotením výsledku vyberte nastavenia ponúkané pre zvolený postup. Pri porovnávaní návrhov záberov uchovajte skutočný režim, trvanie a formát obrazu spolu so zdrojovým obrázkom a promptom.</p><p>Pri prezentácii objektu určite vizuálnu vlastnosť, ktorú má pohyb odhaliť. Môže to byť odrazivý povrch, záhyb materiálu alebo tvar rukoväti. Zamerajte akciu tak, aby dôležitá vlastnosť zostala viditeľná. Posudzujte objekt počas celého pohybu aj v záverečnom pohľade použitom v strihu.</p><p>Pri scéne s postavou opíšte jedno zmysluplné gesto a vzťah postavy k blízkym objektom. Sledujte tvár, ruky, oblečenie a telesné proporcie v priebehu času. Skontrolujte, či gesto dosiahne zamýšľaný koniec a či si scéna zachováva ucelené usporiadanie prvkov v popredí a pozadí.</p><p>Uchovajte celý vygenerovaný klip aj jeho zdrojové materiály. Posúďte úvod, hlavnú akciu a záver ako jednu sekvenciu a potom vykonajte úpravy podľa konkrétneho nesúladu. Poznámka ako „postava sa otáča preč od okna“ dáva ďalšiemu zadaniu konkrétnu opravu a zároveň zachováva zvyšok scény.</p>",
  "aboutText": "Kling v1.5 je verzia modelu Kling na generovanie videa, ktorá má v zdokumentovanom katalógu modelov schopnosť vytvárať video z obrázka. Dodaný statický obrázok poskytuje vizuálny východiskový bod a písomné zadanie opisuje, ako sa má scéna pohybovať. Použite ho na vytvorenie gesta postavy, pohybujúceho sa objektu alebo meniaceho sa prostredia z obrázka, ktorého kompozícia už zodpovedá záberu.\n\nPripravte obrázok s dôrazom na dôležité detaily subjektu. Postava potrebuje zreteľnú tvár, pózu a oblečenie; objekt potrebuje jasný obrys a viditeľné znaky materiálu. Nechajte v kompozícii priestor pre zamýšľaný pohyb. Uchovajte pôvodný statický obrázok s hotovou sekvenciou, aby sa zmeny vzhľadu dali posúdiť priamym porovnaním.\n\nOpíšte akciu ako pozorovateľnú udalosť. Napríklad opíšte sediaceho človeka, ktorý sa otáča k oknu, alebo látkovú stuhu pohybujúcu sa v jemnom vánku. Uveďte smer a zamýšľaný záver. Keď sa v scéne nachádza viac objektov, určite, ktorý z nich koná a ktoré zostávajú na mieste.\n\nVysvetlite úlohu kamery. Pevný uhol pohľadu môže uľahčiť sledovanie drobného gesta, zatiaľ čo pohybujúca sa kamera môže odkryť novú stranu scény. Opíšte tento pohyb vo vzťahu k subjektu. Požiadavka na priblíženie k subjektu a požiadavka, aby sa subjekt priblížil ku kamere, predstavujú odlišné vizuálne zámery.\n\nZdokumentovaná položka pre tvorbu videa z obrázka uvádza výber trvania päť alebo desať sekúnd, režimy std a pro a formát na šírku, na výšku a štvorcový formát. Pred vyhodnotením výsledku vyberte nastavenia ponúkané pre zvolený postup. Pri porovnávaní návrhov záberov uchovajte skutočný režim, trvanie a formát obrazu spolu so zdrojovým obrázkom a promptom.\n\nPri prezentácii objektu určite vizuálnu vlastnosť, ktorú má pohyb odhaliť. Môže to byť odrazivý povrch, záhyb materiálu alebo tvar rukoväti. Zamerajte akciu tak, aby dôležitá vlastnosť zostala viditeľná. Posudzujte objekt počas celého pohybu aj v záverečnom pohľade použitom v strihu.\n\nPri scéne s postavou opíšte jedno zmysluplné gesto a vzťah postavy k blízkym objektom. Sledujte tvár, ruky, oblečenie a telesné proporcie v priebehu času. Skontrolujte, či gesto dosiahne zamýšľaný koniec a či si scéna zachováva ucelené usporiadanie prvkov v popredí a pozadí.\n\nUchovajte celý vygenerovaný klip aj jeho zdrojové materiály. Posúďte úvod, hlavnú akciu a záver ako jednu sekvenciu a potom vykonajte úpravy podľa konkrétneho nesúladu. Poznámka ako „postava sa otáča preč od okna“ dáva ďalšiemu zadaniu konkrétnu opravu a zároveň zachováva zvyšok scény.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "1ae3c7c22b53f792e3f595f087fed73257a020f311e58ab8c6413ffce2a283f3",
    "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\">Kling v1.5</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zavrieť\">×</button></div><div class=\"idline\"><span>Kling /</span><code>kling-v1-5</code><button type=\"button\" id=\"copy-id\">Skopírovať ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sekcie karty modelu\"><button type=\"button\" data-card-jump=\"overview\">Úvod</button><button type=\"button\" data-card-jump=\"methods\">Vstupy a metódy</button><button type=\"button\" data-card-jump=\"pricing\">Cenník</button><button type=\"button\" data-card-jump=\"examples\">Príklady</button><button type=\"button\" data-card-jump=\"results\">Výsledky</button><button type=\"button\" data-card-jump=\"aliases\">Aliasy</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metódy API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|kling-v1-5\">Video</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Úvod</h3><p class=\"mdesc-full\">Kling v1.5 je model na generovanie videa so zdokumentovaným postupom tvorby videa z obrázka. Začnite pripraveným statickým obrázkom a opíšte pohyb, uhol pohľadu a záverečnú kompozíciu krátkeho záberu postavy, objektu alebo prostredia.</p><dl class=\"card-io\" data-card-io><div><dt>Povolené vstupy</dt><dd>Text · Obrázky</dd></div><div><dt>Výsledky</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>O modeli</summary><p class=\"note-s\" data-model-method-boundary>Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.</p><div class=\"mabout\" id=\"m-about\"><p>Kling v1.5 je verzia modelu Kling na generovanie videa, ktorá má v zdokumentovanom katalógu modelov schopnosť vytvárať video z obrázka. Dodaný statický obrázok poskytuje vizuálny východiskový bod a písomné zadanie opisuje, ako sa má scéna pohybovať. Použite ho na vytvorenie gesta postavy, pohybujúceho sa objektu alebo meniaceho sa prostredia z obrázka, ktorého kompozícia už zodpovedá záberu.</p><p>Pripravte obrázok s dôrazom na dôležité detaily subjektu. Postava potrebuje zreteľnú tvár, pózu a oblečenie; objekt potrebuje jasný obrys a viditeľné znaky materiálu. Nechajte v kompozícii priestor pre zamýšľaný pohyb. Uchovajte pôvodný statický obrázok s hotovou sekvenciou, aby sa zmeny vzhľadu dali posúdiť priamym porovnaním.</p><p>Opíšte akciu ako pozorovateľnú udalosť. Napríklad opíšte sediaceho človeka, ktorý sa otáča k oknu, alebo látkovú stuhu pohybujúcu sa v jemnom vánku. Uveďte smer a zamýšľaný záver. Keď sa v scéne nachádza viac objektov, určite, ktorý z nich koná a ktoré zostávajú na mieste.</p><p>Vysvetlite úlohu kamery. Pevný uhol pohľadu môže uľahčiť sledovanie drobného gesta, zatiaľ čo pohybujúca sa kamera môže odkryť novú stranu scény. Opíšte tento pohyb vo vzťahu k subjektu. Požiadavka na priblíženie k subjektu a požiadavka, aby sa subjekt priblížil ku kamere, predstavujú odlišné vizuálne zámery.</p><p>Zdokumentovaná položka pre tvorbu videa z obrázka uvádza výber trvania päť alebo desať sekúnd, režimy std a pro a formát na šírku, na výšku a štvorcový formát. Pred vyhodnotením výsledku vyberte nastavenia ponúkané pre zvolený postup. Pri porovnávaní návrhov záberov uchovajte skutočný režim, trvanie a formát obrazu spolu so zdrojovým obrázkom a promptom.</p><p>Pri prezentácii objektu určite vizuálnu vlastnosť, ktorú má pohyb odhaliť. Môže to byť odrazivý povrch, záhyb materiálu alebo tvar rukoväti. Zamerajte akciu tak, aby dôležitá vlastnosť zostala viditeľná. Posudzujte objekt počas celého pohybu aj v záverečnom pohľade použitom v strihu.</p><p>Pri scéne s postavou opíšte jedno zmysluplné gesto a vzťah postavy k blízkym objektom. Sledujte tvár, ruky, oblečenie a telesné proporcie v priebehu času. Skontrolujte, či gesto dosiahne zamýšľaný koniec a či si scéna zachováva ucelené usporiadanie prvkov v popredí a pozadí.</p><p>Uchovajte celý vygenerovaný klip aj jeho zdrojové materiály. Posúďte úvod, hlavnú akciu a záver ako jednu sekvenciu a potom vykonajte úpravy podľa konkrétneho nesúladu. Poznámka ako „postava sa otáča preč od okna“ dáva ďalšiemu zadaniu konkrétnu opravu a zároveň zachováva zvyšok scény.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Dostupné v Ailoot · vstupy a metódy</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Vstup</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Výstup</dt><dd><code>video</code></dd></div></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><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>kling-v1-5</div><div>Podmienky: Použite presne tento smerovací selektor Ailoot.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">mode</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>std, pro</div><div>Podmienky: Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.</div></td><td data-cell-label=\"Predvolené\" data-default=\"known\"><span class=\"card-cell-label\">Predvolené</span>std</td></tr><tr><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, 1:1</div><div>Podmienky: Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><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>5, 10</div><div>Podmienky: Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">end_image</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: Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">image</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string or array&lt;string&gt;</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: Zadajte skutočnú dostupnú URL obrázka. Zoznam je prípustný iba vtedy, keď schéma parametra uvádza pole.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">negative_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>Voliteľné</td><td data-cell-label=\"Hodnoty a limity\"><span class=\"card-cell-label\">Hodnoty a limity</span><div>Podmienky: Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr><tr><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: Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.</div></td><td data-cell-label=\"Predvolené\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predvolené</span>—</td></tr></tbody></table></div><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, image</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>mode, aspect_ratio, duration, end_image, negative_prompt</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>text, image</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>conditions</code></th><td data-cell-label=\"Špecifikácia\"><span class=\"card-cell-label\">Špecifikácia</span>Použite presne tento smerovací selektor Ailoot., Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte., Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte., Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte., Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte., Zadajte skutočnú dostupnú URL obrázka. Zoznam je prípustný iba vtedy, keď schéma parametra uvádza pole., Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte., Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.</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/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenník</h3><div class=\"card-result-process\" data-billing-basis><h5>Ako sa vypočíta konečný poplatok</h5><p class=\"note-s\">Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.</p><dl data-price-conditions><dt>Rýchly režim</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený rýchly režim</span></dd><dt>Režim Flex</dt><dd>Neuvedené <span class=\"note-s\">Keď je zvolený režim flex</span></dd><dt>Maximálna úroveň uvažovania</dt><dd>Neuvedené <span class=\"note-s\">Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Odhadované sadzby na porovnanie</h4><h4>Ceny podľa konfigurácie</h4><p class=\"note-s\">Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurácia</th><th>Sadzobník</th><th>Odhadované množstvo</th><th>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>$6</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 · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianty kódu\"><button class=\"cg-tab\" id=\"model-code-2805-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2805-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · vytvoriť iba raz a uchovať úplný výsledok</button><button class=\"cg-tab\" id=\"model-code-2805-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2805-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Prečítať pôvodnú úlohu</button><button class=\"cg-tab\" id=\"model-code-2805-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2805-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Uložiť každý hotový výstup, ktorý vám patrí</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Skopírovať kód\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2805-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2805-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\n: &quot;${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}&quot;\nexport AILOOT_IMAGE_URL\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;kling-v1-5&quot;, &quot;prompt&quot;: &quot;A cat is walking on grass.&quot;, &quot;image&quot;: &quot;YOUR_ACCESSIBLE_IMAGE_URL&quot;}&#39;)\np[&#39;image&#39;]=os.environ[&#39;AILOOT_IMAGE_URL&#39;]\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Submit once. Retain the complete result, original identifiers and every response header.\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2805-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2805-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_STATUS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r[&quot;polling_url&quot;])\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or p.username or p.password:\n    raise SystemExit(&quot;Unexpected returned polling URL; preserve the response&quot;)\nsubprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-D&quot;,&quot;status-headers.txt&quot;,&quot;-o&quot;,&quot;status.json&quot;],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2805-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2805-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nroles={}\ndef visit(v,path=&quot;&quot;):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+&quot;/&quot;+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+&quot;/&quot;+str(i))\n    elif isinstance(v,str):\n        u=urljoin(&quot;https://api.ailoot.ai&quot;,v); p=urlsplit(u)\n        if p.scheme==&quot;https&quot; and p.netloc==&quot;api.ailoot.ai&quot; and not p.username and not p.password and p.path.startswith(&quot;/v1/media/assets/&quot;) and p.path.endswith(&quot;/content&quot;):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(&quot;No completed owned assets; retain the original status&quot;)\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f&quot;asset-{i}.bin&quot;)\n    subprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-o&quot;,str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(&quot;Empty asset; retain original status and metadata&quot;)\n    ext=&quot;glb&quot; if raw[:4]==b&quot;glTF&quot; else &quot;png&quot; if raw[:8]==b&quot;\\x89PNG\\r\\n\\x1a\\n&quot; else &quot;jpg&quot; if raw[:3]==b&quot;\\xff\\xd8\\xff&quot; else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;mp4&quot; if raw[4:8]==b&quot;ftyp&quot; else &quot;bin&quot;\n    name=f&quot;asset-{i}.{ext}&quot;\n    if target.name!=name: target.rename(name)\n    manifest.append({&quot;file&quot;:name,&quot;response_paths&quot;:paths,&quot;bytes&quot;:len(raw)})\nPath(&quot;asset-manifest.json&quot;).write_text(json.dumps(manifest,indent=2))\nprint(&quot;Saved&quot;,len(manifest),&quot;unique owned assets; every response role retained&quot;)\nPY_ASSETS\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Prijať a uložiť výsledky</h3><h4>Ailoot Ultra · Video</h4><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/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</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\">Zachovajte celú odpoveď a hlavičky, pôvodné identifikátory, každý skutočný výstup a všetky polia spotreby a účtovania. Uložte každý jedinečný súbor vo vašom vlastníctve a zachovajte každú rolu, ktorá naň odkazuje.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Ak treba overiť pôvodnú odpoveď</h5><p class=\"note-s\">Zachovajte vrátené verejné id úlohy alebo operácie a všetky hlavičky. Načítavajte iba pôvodnú úlohu; unknown ani result_pending_check neoprávňujú na ďalšie vytvorenie.</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></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></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></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></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</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Pole\" scope=\"row\"><span class=\"card-cell-label\">Pole</span><code class=\"card-field-name\">video_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</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>Povinné pole, selektor modelu, typ alebo podoba vstupu sú neplatné.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Pred prípravou samostatnej požiadavky si pozrite vrátené podrobnosti validácie.</td></tr><tr><th data-cell-label=\"Odpoveď\" scope=\"row\"><span class=\"card-cell-label\">Odpoveď</span><code></code></th><td data-cell-label=\"Podmienka\"><span class=\"card-cell-label\">Podmienka</span>Pôvodná požiadavka alebo výsledok je neznámy alebo vyžaduje kontrolu.</td><td data-cell-label=\"Ďalší krok\"><span class=\"card-cell-label\">Ďalší krok</span>Zachovajte pôvodné identifikátory a hlavičky; čítajte iba podporované záznamy o stave alebo záznamy knižnice. Požiadavku na vytvorenie znova neodosielajte.</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=kling-v1-5&amp;route=Ultra&amp;caller=kling-v1-5&amp;fmt=videos\"><code>kling-v1-5</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=kling-v1-5&amp;route=Ultra&amp;caller=kling-v1-5&amp;fmt=videos\"><code>kling-v1-5</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "kling-v1-5",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "kling-v1-5",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|kling-v1-5",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "authentication": {
              "header": "Authorization",
              "scheme": "Bearer",
              "value": "$AILOOT_API_KEY"
            },
            "errors": [
              {
                "condition": "Povinné pole, selektor modelu, typ alebo podoba vstupu sú neplatné.",
                "http_status": 400,
                "recovery": "Pred prípravou samostatnej požiadavky si pozrite vrátené podrobnosti validácie.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Pôvodná požiadavka alebo výsledok je neznámy alebo vyžaduje kontrolu.",
                "http_status": null,
                "recovery": "Zachovajte pôvodné identifikátory a hlavičky; čítajte iba podporované záznamy o stave alebo záznamy knižnice. Požiadavku na vytvorenie znova neodosielajte.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "pending",
                "processing"
              ],
              "state_field": "status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Zachovajte vrátené verejné id úlohy alebo operácie a všetky hlavičky. Načítavajte iba pôvodnú úlohu; unknown ani result_pending_check neoprávňujú na ďalšie vytvorenie.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Zachovajte celú odpoveď a hlavičky, pôvodné identifikátory, každý skutočný výstup a všetky polia spotreby a účtovania. Uložte každý jedinečný súbor vo vašom vlastníctve a zachovajte každú rolu, ktorá naň odkazuje.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Použite presne tento smerovací selektor Ailoot.",
                "default_known": false,
                "enum": [
                  "kling-v1-5"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default": "std",
                "default_known": true,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16",
                  "1:1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "end_image",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Zadajte skutočnú dostupnú URL obrázka. Zoznam je prípustný iba vtedy, keď schéma parametra uvádza pole.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "image",
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "end_image": {
                  "type": "string"
                },
                "image": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 10,
                      "type": "array"
                    }
                  ]
                },
                "mode": {
                  "default": "std",
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v1-5"
                  ],
                  "type": "string"
                },
                "negative_prompt": {
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "image"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "image": "YOUR_ACCESSIBLE_IMAGE_URL",
                "model": "kling-v1-5",
                "prompt": "A cat is walking on grass."
              },
              "content_type": "application/json",
              "example_is_offline_content": true
            },
            "usage": {
              "meter": "Use the accepted method price and actual recorded usage; the request reserve is an estimate. A billing unit does not add an input capability.",
              "preserve": "Keep all returned usage, accounting and request identifiers with every actual output.",
              "settlement": "Retain the original operation; reconcile its result and accounting once."
            }
          },
          "input": {
            "conditions": [
              "Použite presne tento smerovací selektor Ailoot.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Zadajte skutočnú dostupnú URL obrázka. Zoznam je prípustný iba vtedy, keď schéma parametra uvádza pole.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte."
            ],
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "mode",
              "aspect_ratio",
              "duration",
              "end_image",
              "negative_prompt"
            ],
            "required": [
              "model",
              "prompt",
              "image"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "pending",
              "processing"
            ],
            "state_field": "status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "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": "6",
                "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": "6",
                "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}\"\nexport AILOOT_API_KEY\n: \"${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}\"\nexport AILOOT_IMAGE_URL\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v1-5\", \"prompt\": \"A cat is walking on grass.\", \"image\": \"YOUR_ACCESSIBLE_IMAGE_URL\"}')\np['image']=os.environ['AILOOT_IMAGE_URL']\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Video",
        "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": "6",
                "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": "6",
                "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": "kling-v1-5",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "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": "6",
            "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": "6",
            "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": "kling-v1-5",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ef44906dfd3db98f9bc1e4ca409e035a2bf1c2999e3619f6ce6a79efd648e1ff",
    "input_html_sha256": "df9954fbaad0fbb61ebf9438ceef1f5e28ee0109ad3c8c75850699b7032d9bec",
    "private_audit_sha256": "8453c8df451d233613fe183716e4e061769b69481b555f5b73dcfb7651bfb4e9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sk/kling-v1-5/",
    "description": "Kling v1.5 je model na generovanie videa so zdokumentovaným postupom tvorby videa z obrázka. Začnite pripraveným statickým obrázkom a opíšte pohyb, uhol pohľadu a záverečnú kompozíciu krátkeho záberu postavy, objektu alebo prostredia.",
    "locale": "sk",
    "md_url": "https://ailoot.ai/models/sk/kling-v1-5/index.md",
    "title": "Kling v1.5 — Ailoot",
    "url": "https://ailoot.ai/models/sk/kling-v1-5/"
  },
  "rawModel": {
    "about": "Kling v1.5 je verzia modelu Kling na generovanie videa, ktorá má v zdokumentovanom katalógu modelov schopnosť vytvárať video z obrázka. Dodaný statický obrázok poskytuje vizuálny východiskový bod a písomné zadanie opisuje, ako sa má scéna pohybovať. Použite ho na vytvorenie gesta postavy, pohybujúceho sa objektu alebo meniaceho sa prostredia z obrázka, ktorého kompozícia už zodpovedá záberu.\n\nPripravte obrázok s dôrazom na dôležité detaily subjektu. Postava potrebuje zreteľnú tvár, pózu a oblečenie; objekt potrebuje jasný obrys a viditeľné znaky materiálu. Nechajte v kompozícii priestor pre zamýšľaný pohyb. Uchovajte pôvodný statický obrázok s hotovou sekvenciou, aby sa zmeny vzhľadu dali posúdiť priamym porovnaním.\n\nOpíšte akciu ako pozorovateľnú udalosť. Napríklad opíšte sediaceho človeka, ktorý sa otáča k oknu, alebo látkovú stuhu pohybujúcu sa v jemnom vánku. Uveďte smer a zamýšľaný záver. Keď sa v scéne nachádza viac objektov, určite, ktorý z nich koná a ktoré zostávajú na mieste.\n\nVysvetlite úlohu kamery. Pevný uhol pohľadu môže uľahčiť sledovanie drobného gesta, zatiaľ čo pohybujúca sa kamera môže odkryť novú stranu scény. Opíšte tento pohyb vo vzťahu k subjektu. Požiadavka na priblíženie k subjektu a požiadavka, aby sa subjekt priblížil ku kamere, predstavujú odlišné vizuálne zámery.\n\nZdokumentovaná položka pre tvorbu videa z obrázka uvádza výber trvania päť alebo desať sekúnd, režimy std a pro a formát na šírku, na výšku a štvorcový formát. Pred vyhodnotením výsledku vyberte nastavenia ponúkané pre zvolený postup. Pri porovnávaní návrhov záberov uchovajte skutočný režim, trvanie a formát obrazu spolu so zdrojovým obrázkom a promptom.\n\nPri prezentácii objektu určite vizuálnu vlastnosť, ktorú má pohyb odhaliť. Môže to byť odrazivý povrch, záhyb materiálu alebo tvar rukoväti. Zamerajte akciu tak, aby dôležitá vlastnosť zostala viditeľná. Posudzujte objekt počas celého pohybu aj v záverečnom pohľade použitom v strihu.\n\nPri scéne s postavou opíšte jedno zmysluplné gesto a vzťah postavy k blízkym objektom. Sledujte tvár, ruky, oblečenie a telesné proporcie v priebehu času. Skontrolujte, či gesto dosiahne zamýšľaný koniec a či si scéna zachováva ucelené usporiadanie prvkov v popredí a pozadí.\n\nUchovajte celý vygenerovaný klip aj jeho zdrojové materiály. Posúďte úvod, hlavnú akciu a záver ako jednu sekvenciu a potom vykonajte úpravy podľa konkrétneho nesúladu. Poznámka ako „postava sa otáča preč od okna“ dáva ďalšiemu zadaniu konkrétnu opravu a zároveň zachováva zvyšok scény.",
    "about_sha256": "f1e2aa1f98338a01eb461fbe7e6c3e7cda8fa7076aef23990d07cdaa1a38c56b",
    "alias_of": null,
    "aliases": [],
    "author": "Kling",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "6",
            "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": "6",
            "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": "Kling v1.5",
    "formats": [
      "videos"
    ],
    "id": "kling-v1-5",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "authentication": {
              "header": "Authorization",
              "scheme": "Bearer",
              "value": "$AILOOT_API_KEY"
            },
            "errors": [
              {
                "condition": "Povinné pole, selektor modelu, typ alebo podoba vstupu sú neplatné.",
                "http_status": 400,
                "recovery": "Pred prípravou samostatnej požiadavky si pozrite vrátené podrobnosti validácie.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Pôvodná požiadavka alebo výsledok je neznámy alebo vyžaduje kontrolu.",
                "http_status": null,
                "recovery": "Zachovajte pôvodné identifikátory a hlavičky; čítajte iba podporované záznamy o stave alebo záznamy knižnice. Požiadavku na vytvorenie znova neodosielajte.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "pending",
                "processing"
              ],
              "state_field": "status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Zachovajte vrátené verejné id úlohy alebo operácie a všetky hlavičky. Načítavajte iba pôvodnú úlohu; unknown ani result_pending_check neoprávňujú na ďalšie vytvorenie.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Zachovajte celú odpoveď a hlavičky, pôvodné identifikátory, každý skutočný výstup a všetky polia spotreby a účtovania. Uložte každý jedinečný súbor vo vašom vlastníctve a zachovajte každú rolu, ktorá naň odkazuje.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Použite presne tento smerovací selektor Ailoot.",
                "default_known": false,
                "enum": [
                  "kling-v1-5"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default": "std",
                "default_known": true,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16",
                  "1:1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "end_image",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Zadajte skutočnú dostupnú URL obrázka. Zoznam je prípustný iba vtedy, keď schéma parametra uvádza pole.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "image",
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "end_image": {
                  "type": "string"
                },
                "image": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 10,
                      "type": "array"
                    }
                  ]
                },
                "mode": {
                  "default": "std",
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v1-5"
                  ],
                  "type": "string"
                },
                "negative_prompt": {
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "image"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "image": "YOUR_ACCESSIBLE_IMAGE_URL",
                "model": "kling-v1-5",
                "prompt": "A cat is walking on grass."
              },
              "content_type": "application/json",
              "example_is_offline_content": true
            },
            "usage": {
              "meter": "Use the accepted method price and actual recorded usage; the request reserve is an estimate. A billing unit does not add an input capability.",
              "preserve": "Keep all returned usage, accounting and request identifiers with every actual output.",
              "settlement": "Retain the original operation; reconcile its result and accounting once."
            }
          },
          "input": {
            "conditions": [
              "Použite presne tento smerovací selektor Ailoot.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Zadajte skutočnú dostupnú URL obrázka. Zoznam je prípustný iba vtedy, keď schéma parametra uvádza pole.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte.",
              "Použite zdokumentované pole pre vybraný model a uvedené možnosti; nezadanú voliteľnú hodnotu vynechajte."
            ],
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "mode",
              "aspect_ratio",
              "duration",
              "end_image",
              "negative_prompt"
            ],
            "required": [
              "model",
              "prompt",
              "image"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "pending",
              "processing"
            ],
            "state_field": "status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "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": "6",
                "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": "6",
                "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}\"\nexport AILOOT_API_KEY\n: \"${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}\"\nexport AILOOT_IMAGE_URL\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v1-5\", \"prompt\": \"A cat is walking on grass.\", \"image\": \"YOUR_ACCESSIBLE_IMAGE_URL\"}')\np['image']=os.environ['AILOOT_IMAGE_URL']\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Video",
        "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": "6",
                "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": "6",
                "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": "kling-v1-5",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "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": "6",
            "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": "6",
            "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": "kling-v1-5",
        "request_model_id": "kling-v1-5",
        "route_label": "Ultra"
      }
    ],
    "name": "Kling v1.5",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 6,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 6,
      "varies": false
    },
    "short": "Kling v1.5 je model na generovanie videa so zdokumentovaným postupom tvorby videa z obrázka. Začnite pripraveným statickým obrázkom a opíšte pohyb, uhol pohľadu a záverečnú kompozíciu krátkeho záberu postavy, objektu alebo prostredia.",
    "short_sha256": "558a8b7e65d88706809794101986a0723e56fbfa5f6e152e7186404a71f537ae"
  },
  "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": "Kling v1.5 je model na generovanie videa so zdokumentovaným postupom tvorby videa z obrázka. Začnite pripraveným statickým obrázkom a opíšte pohyb, uhol pohľadu a záverečnú kompozíciu krátkeho záberu postavy, objektu alebo prostredia.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b0f5f7582e9e71aef088b740df3b5ff51eedfe272275cdd3260d43a49ba4696f",
    "renderer_sha256": "94893ba0fa4d7b7d32370787b705f436a4c2569f84ec7b33063549adc74b07e0"
  },
  "sourceRevision": "44b9ede488d7718abfca14f88cc9f65a47fd47731bef672e145fc8d026bb49e9"
}
