{
  "aboutHtml": "<p>Naudokite kling-v1 su model, prompt ir mode galiniame taške /v1/videos. Pasirinkite std arba pro ir aprašykite kadrą iki 500 simbolių apimties apraše. Užklausoje prieinami penkių arba dešimties sekundžių duration, aspect_ratio, model_name, cfg_scale ir iki 200 simbolių negative_prompt.</p><p>Turimą aprašo vietą skirkite pagrindiniam objektui, vienam veiksmui, aplinkai ir kameros krypčiai. Kompoziciją lemiančias detales pateikite prieš dekoratyvią kalbą. cfg_scale valdiklis priima reikšmes nuo 0 iki 1; lygindami vėlesnį variantą pasirinktą nustatymą išsaugokite kartu su aprašu.</p><p>Sekite pradinės užklausos ID, užuot kūrę antrą operaciją eigai tikrinti. Rezultate naudojami data.task_status ir data.task_result.videos[].url, o succeed žymi užbaigimą. Išsaugokite kiekvieną užbaigtą vaizdo įrašą ir visą jo atsakymą, tada patikrinkite visą kadrą pagal aprašą.</p>",
  "aboutText": "Naudokite kling-v1 su model, prompt ir mode galiniame taške /v1/videos. Pasirinkite std arba pro ir aprašykite kadrą iki 500 simbolių apimties apraše. Užklausoje prieinami penkių arba dešimties sekundžių duration, aspect_ratio, model_name, cfg_scale ir iki 200 simbolių negative_prompt.\n\nTurimą aprašo vietą skirkite pagrindiniam objektui, vienam veiksmui, aplinkai ir kameros krypčiai. Kompoziciją lemiančias detales pateikite prieš dekoratyvią kalbą. cfg_scale valdiklis priima reikšmes nuo 0 iki 1; lygindami vėlesnį variantą pasirinktą nustatymą išsaugokite kartu su aprašu.\n\nSekite pradinės užklausos ID, užuot kūrę antrą operaciją eigai tikrinti. Rezultate naudojami data.task_status ir data.task_result.videos[].url, o succeed žymi užbaigimą. Išsaugokite kiekvieną užbaigtą vaizdo įrašą ir visą jo atsakymą, tada patikrinkite visą kadrą pagal aprašą.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "ba4c5aa841e67219db813551a7db8e848689ae9c3e62801237a0c58e334f7ca3",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "lt",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">kling-v1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Uždaryti\">×</button></div><div class=\"idline\"><span>Kita /</span><code>kling-v1</code><button type=\"button\" id=\"copy-id\">Kopijuoti ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modelio kortelės skyriai\"><button type=\"button\" data-card-jump=\"overview\">Pradžia</button><button type=\"button\" data-card-jump=\"methods\">Įvestys ir metodai</button><button type=\"button\" data-card-jump=\"pricing\">Planai</button><button type=\"button\" data-card-jump=\"examples\">Pavyzdžiai</button><button type=\"button\" data-card-jump=\"results\">Rezultatai</button><button type=\"button\" data-card-jump=\"aliases\">Pseudonimai</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API metodai\"><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\">Vaizdo įrašai</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\">Pradžia</h3><p class=\"mdesc-full\">kling-v1 kuria vaizdo įrašą pagal tekstinį aprašą su aiškiai nurodytu std arba pro režimu. Nustatykite kadro trukmę ir aprašo valdiklius, tada per Ailoot gaukite visus užbaigtus vaizdo rezultatus.</p><dl class=\"card-io\" data-card-io><div><dt>Leidžiamos įvestys</dt><dd>Tekstas</dd></div><div><dt>Rezultatai</dt><dd>Vaizdo įrašai</dd></div></dl><details class=\"card-about\"><summary>Apie modelį</summary><p class=\"note-s\" data-model-method-boundary>Šis aprašas apima modelio galimybes. Pasirinktam metodui Ailoot prieinamos įvestys, išvestys ir parinktys nurodytos toliau.</p><div class=\"mabout\" id=\"m-about\"><p>Naudokite kling-v1 su model, prompt ir mode galiniame taške /v1/videos. Pasirinkite std arba pro ir aprašykite kadrą iki 500 simbolių apimties apraše. Užklausoje prieinami penkių arba dešimties sekundžių duration, aspect_ratio, model_name, cfg_scale ir iki 200 simbolių negative_prompt.</p><p>Turimą aprašo vietą skirkite pagrindiniam objektui, vienam veiksmui, aplinkai ir kameros krypčiai. Kompoziciją lemiančias detales pateikite prieš dekoratyvią kalbą. cfg_scale valdiklis priima reikšmes nuo 0 iki 1; lygindami vėlesnį variantą pasirinktą nustatymą išsaugokite kartu su aprašu.</p><p>Sekite pradinės užklausos ID, užuot kūrę antrą operaciją eigai tikrinti. Rezultate naudojami data.task_status ir data.task_result.videos[].url, o succeed žymi užbaigimą. Išsaugokite kiekvieną užbaigtą vaizdo įrašą ir visą jo atsakymą, tada patikrinkite visą kadrą pagal aprašą.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Prieinama Ailoot · įvestys ir metodai</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Įvestis</dt><dd><code>text</code></dd></div><div><dt>Išvestis</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Laukas</th><th>Tipas</th><th>Reikalavimas</th><th>Reikšmės ir ribos</th><th>Numatyta</th></tr></thead><tbody><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Privaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>kling-v1</div><div>Sąlygos: Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.</div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Privaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>Didžiausias ilgis: 500</div><div>Sąlygos: </div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">mode</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Privaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>std, pro</div><div>Sąlygos: </div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">model_name</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Neprivaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>Sąlygos: Pasirenkamas savosios nuostatos perrašymas. Jo nenurodžius, pasirinktas modelis naudojamas automatiškai; aiškiai nurodyta reikšmė išsaugoma.</div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">cfg_scale</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>number</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Neprivaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>Mažiausia reikšmė: 0</div><div>Didžiausia reikšmė: 1</div><div>Sąlygos: </div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Neprivaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>Sąlygos: </div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">negative_prompt</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>string</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Neprivaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>Didžiausias ilgis: 200</div><div>Sąlygos: </div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span><code>integer</code></td><td data-cell-label=\"Reikalavimas\"><span class=\"card-cell-label\">Reikalavimas</span>Neprivaloma</td><td data-cell-label=\"Reikšmės ir ribos\"><span class=\"card-cell-label\">Reikšmės ir ribos</span><div>5, 10</div><div>Sąlygos: </div></td><td data-cell-label=\"Numatyta\" data-default=\"unspecified\"><span class=\"card-cell-label\">Numatyta</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Metodo parametrai ir gyvavimo ciklas</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametras</th><th>Specifikacija</th></tr></thead><tbody><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>content_type</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>application/json</td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>required</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model, prompt, mode</td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>optional</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model_name, cfg_scale, aspect_ratio, negative_prompt, duration</td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>material_types</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>text</td></tr><tr><th data-cell-label=\"Parametras\" scope=\"row\"><span class=\"card-cell-label\">Parametras</span><code>conditions</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>Naudokite būtent šį Ailoot maršrutizavimo parinkiklį., Pasirenkamas savosios nuostatos perrašymas. Jo nenurodžius, pasirinktas modelis naudojamas automatiškai; aiškiai nurodyta reikšmė išsaugoma.</td></tr></tbody></table></div><p>Metodo pseudonimai: <code>/v1/videos/generations</code></p><p>Gyvavimo ciklas: <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\">Planai</h3><div class=\"card-result-process\" data-billing-basis><h5>Kaip apskaičiuojamas galutinis mokestis</h5><p class=\"note-s\">Rodomi įkainiai leidžia įvertinti kainą prieš generavimą. Galutinė suma apskaičiuojama pagal užfiksuotą pradinio generavimo kainą. Išmatuota rezultato trukmė ir prognozuoti kiekiai nėra galutinis apmokestinamas kiekis.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifų informacija neprideda užklausos parinkčių. Palaikomi parametrai nurodyti prie pasirinkto metodo.</p><dl data-price-conditions><dt>Spartusis režimas</dt><dd>Nenurodyta <span class=\"note-s\">Pasirinkus spartųjį režimą</span></dd><dt>Flex režimas</dt><dd>Nenurodyta <span class=\"note-s\">Pasirinkus flex režimą</span></dd><dt>Didžiausios samprotavimo pastangos</dt><dd>Nenurodyta <span class=\"note-s\">Kai didžiausioms samprotavimo pastangoms taikomas numatytasis koregavimas (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Numatomi įkainiai palyginimui</h4><h4>Kainos pagal konfigūraciją</h4><p class=\"note-s\">Kiekvieną mokestį susiekite su nurodytomis sąlygomis. Kiekvienam alternatyvių konfigūracijų rinkiniui taikykite vieną įkainį.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigūracija</th><th>Įkainių lentelė</th><th>Numatomas kiekis</th><th>Mokestis</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigūracija\" scope=\"row\"><span class=\"card-cell-label\">Konfigūracija</span>Baziniai žetonų įkainiai</th><td data-cell-label=\"Įkainių lentelė\"><span class=\"card-cell-label\">Įkainių lentelė</span>Bazinis įkainis</td><td data-cell-label=\"Numatomas kiekis\"><span class=\"card-cell-label\">Numatomas kiekis</span>—</td><td data-cell-label=\"Mokestis\"><span class=\"card-cell-label\">Mokestis</span><div><span>Įvestis · Įvesties tokenai · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Išvestis · Išvesties tokenai · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Įvestis · Talpyklos skaitymas · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Įvestis · Rašymas į talpyklą · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div><div><span>Įvestis · Rašymas į talpyklą, 1 val · Įvertis tik palyginimui</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenų</span></div></td></tr><tr><th data-cell-label=\"Konfigūracija\" scope=\"row\"><span class=\"card-cell-label\">Konfigūracija</span>Numatoma generavimo kaina</th><td data-cell-label=\"Įkainių lentelė\"><span class=\"card-cell-label\">Įkainių lentelė</span>—</td><td data-cell-label=\"Numatomas kiekis\"><span class=\"card-cell-label\">Numatomas kiekis</span>vieno generavimo įvertis</td><td data-cell-label=\"Mokestis\"><span class=\"card-cell-label\">Mokestis</span><div><span>Išvestis · Numatoma generavimo kaina · Įvertis tik palyginimui</span> <b>$6</b> <span class=\"price-unit\">įvertis prieš generavimą</span></div><p class=\"note-s\">Šis įvertis nėra papildomas mokestis ar fiksuotas užbaigto generavimo įkainis.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. <a href=\"/docs/lt/billing/reserve/\">Kaip veikia rezervavimas ir atsiskaitymas →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Užklausų pavyzdžiai</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodo variantai\"><button class=\"cg-tab\" id=\"model-code-2849-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2849-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · sukurkite vieną kartą ir išsaugokite visą rezultatą</button><button class=\"cg-tab\" id=\"model-code-2849-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2849-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Peržiūrėkite pirminę užduotį</button><button class=\"cg-tab\" id=\"model-code-2849-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2849-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Išsaugokite kiekvieną užbaigtą jums priklausantį išteklių</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopijuoti kodą\"><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-2849-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2849-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;kling-v1&quot;, &quot;prompt&quot;: &quot;A happy holiday scene at the beach.&quot;, &quot;mode&quot;: &quot;pro&quot;}&#39;)\n\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-2849-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2849-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-2849-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2849-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\">Gauti ir išsaugoti rezultatus</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>Išsaugoti visus baigtus rezultatus</h5><p class=\"note-s\">Išsaugokite kiekvieną baigtą vaizdo įrašą arba grąžintą failą; gaukite turinį iš kiekvieno faktiškai grąžinto medžiagos URL.</p><p class=\"note-s\">Išsaugokite visą atsakymą ir antraštes, pradinius identifikatorius, kiekvieną tikrą rezultatą ir visus naudojimo bei apskaitos laukus. Išsaugokite kiekvieną unikalų jums priklausantį išteklių ir visas į jį nukreiptas paskirtis.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jei reikia patikrinti pradinį atsakymą</h5><p class=\"note-s\">Išsaugokite grąžintą viešą užduoties ar operacijos id ir visas antraštes. Skaitykite tik pradinės užduoties duomenis; unknown arba result_pending_check nesuteikia leidimo kurti dar kartą.</p></div><details class=\"card-about\" data-output-fields><summary>Atsakymo laukai</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Laukas</th><th>Tipas</th></tr></thead><tbody><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.task_id</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.task_status</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr><tr><th data-cell-label=\"Laukas\" scope=\"row\"><span class=\"card-cell-label\">Laukas</span><code class=\"card-field-name\">data.task_result.videos[].url</code></th><td data-cell-label=\"Tipas\" data-field-type><span class=\"card-cell-label\">Tipas</span>string</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Klaidos ir tolesni veiksmai</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Atsakymas</th><th>Sąlyga</th><th>Kitas žingsnis</th></tr></thead><tbody><tr><th data-cell-label=\"Atsakymas\" scope=\"row\"><span class=\"card-cell-label\">Atsakymas</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Sąlyga\"><span class=\"card-cell-label\">Sąlyga</span>Privalomas laukas, modelio parinkiklis, tipas arba įvesties pateikimo forma yra netinkami.</td><td data-cell-label=\"Kitas žingsnis\"><span class=\"card-cell-label\">Kitas žingsnis</span>Prieš rengdami atskirą užklausą, peržiūrėkite grąžintą išsamią patikros informaciją.</td></tr><tr><th data-cell-label=\"Atsakymas\" scope=\"row\"><span class=\"card-cell-label\">Atsakymas</span><code></code></th><td data-cell-label=\"Sąlyga\"><span class=\"card-cell-label\">Sąlyga</span>Pradinė užklausa arba rezultatas nežinomi arba juos reikia patikrinti.</td><td data-cell-label=\"Kitas žingsnis\"><span class=\"card-cell-label\">Kitas žingsnis</span>Išsaugokite pradinius identifikatorius ir antraštes; skaitykite tik palaikomus būsenos ar bibliotekos įrašus. Nesiųskite kūrimo užklausos dar kartą.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Pseudonimai</h3><h4>Modelių pseudonimai</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=kling-v1&amp;route=Ultra&amp;caller=kling-v1&amp;fmt=videos\"><code>kling-v1</code></a></span></p><h4>Metodų kelių pseudonimai</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>Susiję ID iškvietimui</h4><p class=\"note-s\"><a href=\"#m=kling-v1&amp;route=Ultra&amp;caller=kling-v1&amp;fmt=videos\"><code>kling-v1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "kling-v1",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "kling-v1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|kling-v1",
      "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": "Privalomas laukas, modelio parinkiklis, tipas arba įvesties pateikimo forma yra netinkami.",
                "http_status": 400,
                "recovery": "Prieš rengdami atskirą užklausą, peržiūrėkite grąžintą išsamią patikros informaciją.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Pradinė užklausa arba rezultatas nežinomi arba juos reikia patikrinti.",
                "http_status": null,
                "recovery": "Išsaugokite pradinius identifikatorius ir antraštes; skaitykite tik palaikomus būsenos ar bibliotekos įrašus. Nesiųskite kūrimo užklausos dar kartą.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "succeed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "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": [
                "submitted"
              ],
              "state_field": "data.task_status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Išsaugokite grąžintą viešą užduoties ar operacijos id ir visas antraštes. Skaitykite tik pradinės užduoties duomenis; unknown arba result_pending_check nesuteikia leidimo kurti dar kartą.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Išsaugokite visą atsakymą ir antraštes, pradinius identifikatorius, kiekvieną tikrą rezultatą ir visus naudojimo bei apskaitos laukus. Išsaugokite kiekvieną unikalų jums priklausantį išteklių ir visas į jį nukreiptas paskirtis.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_status",
                  "type": "string"
                },
                {
                  "name": "data.task_result.videos[].url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
                "default_known": false,
                "enum": [
                  "kling-v1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 500,
                "maximum_length": 500,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Pasirenkamas savosios nuostatos perrašymas. Jo nenurodžius, pasirinktas modelis naudojamas automatiškai; aiškiai nurodyta reikšmė išsaugoma.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "model_name",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum": 1,
                "maximum_length": null,
                "minimum": 0,
                "name": "cfg_scale",
                "required": false,
                "type": "number"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 200,
                "maximum_length": 200,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "type": "string"
                },
                "cfg_scale": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "mode": {
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v1"
                  ],
                  "type": "string"
                },
                "model_name": {
                  "type": "string"
                },
                "negative_prompt": {
                  "maxLength": 200,
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 500,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "mode"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "mode": "pro",
                "model": "kling-v1",
                "prompt": "A happy holiday scene at the beach."
              },
              "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": [
              "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
              "Pasirenkamas savosios nuostatos perrašymas. Jo nenurodžius, pasirinktas modelis naudojamas automatiškai; aiškiai nurodyta reikšmė išsaugoma."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "model_name",
              "cfg_scale",
              "aspect_ratio",
              "negative_prompt",
              "duration"
            ],
            "required": [
              "model",
              "prompt",
              "mode"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "succeed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "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": [
              "submitted"
            ],
            "state_field": "data.task_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": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.task_status",
                "type": "string"
              },
              {
                "name": "data.task_result.videos[].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": "Šis įvertis nėra papildomas mokestis ar fiksuotas užbaigto generavimo įkainis.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Numatoma generavimo kaina",
            "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\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v1\", \"prompt\": \"A happy holiday scene at the beach.\", \"mode\": \"pro\"}')\n\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"
        ],
        "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",
        "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",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "1525e98c2484abcddb7ab1012e0f2854df67bb60b37a31f88234510178eb6dfe",
    "input_html_sha256": "2551fbd337a396ce2259518f6a8a8e126875cf6f345c72c22c2d83bacc9cd20e",
    "private_audit_sha256": "7fe9a8af300690ff43762dffbd8f1f688de5203890a78ccfa3ca9378ed6c105b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/lt/kling-v1/",
    "description": "kling-v1 kuria vaizdo įrašą pagal tekstinį aprašą su aiškiai nurodytu std arba pro režimu. Nustatykite kadro trukmę ir aprašo valdiklius, tada per Ailoot gaukite visus užbaigtus vaizdo rezultatus.",
    "locale": "lt",
    "md_url": "https://ailoot.ai/models/lt/kling-v1/index.md",
    "title": "kling-v1 — Ailoot",
    "url": "https://ailoot.ai/models/lt/kling-v1/"
  },
  "rawModel": {
    "about": "Naudokite kling-v1 su model, prompt ir mode galiniame taške /v1/videos. Pasirinkite std arba pro ir aprašykite kadrą iki 500 simbolių apimties apraše. Užklausoje prieinami penkių arba dešimties sekundžių duration, aspect_ratio, model_name, cfg_scale ir iki 200 simbolių negative_prompt.\n\nTurimą aprašo vietą skirkite pagrindiniam objektui, vienam veiksmui, aplinkai ir kameros krypčiai. Kompoziciją lemiančias detales pateikite prieš dekoratyvią kalbą. cfg_scale valdiklis priima reikšmes nuo 0 iki 1; lygindami vėlesnį variantą pasirinktą nustatymą išsaugokite kartu su aprašu.\n\nSekite pradinės užklausos ID, užuot kūrę antrą operaciją eigai tikrinti. Rezultate naudojami data.task_status ir data.task_result.videos[].url, o succeed žymi užbaigimą. Išsaugokite kiekvieną užbaigtą vaizdo įrašą ir visą jo atsakymą, tada patikrinkite visą kadrą pagal aprašą.",
    "alias_of": null,
    "aliases": [],
    "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": "Visa konfigūracijos kainodara pateikta išsamioje informacijoje."
      }
    ],
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "kling-v1",
    "input": [
      "text"
    ],
    "kind": "video",
    "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": "Privalomas laukas, modelio parinkiklis, tipas arba įvesties pateikimo forma yra netinkami.",
                "http_status": 400,
                "recovery": "Prieš rengdami atskirą užklausą, peržiūrėkite grąžintą išsamią patikros informaciją.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Pradinė užklausa arba rezultatas nežinomi arba juos reikia patikrinti.",
                "http_status": null,
                "recovery": "Išsaugokite pradinius identifikatorius ir antraštes; skaitykite tik palaikomus būsenos ar bibliotekos įrašus. Nesiųskite kūrimo užklausos dar kartą.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "succeed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "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": [
                "submitted"
              ],
              "state_field": "data.task_status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Išsaugokite grąžintą viešą užduoties ar operacijos id ir visas antraštes. Skaitykite tik pradinės užduoties duomenis; unknown arba result_pending_check nesuteikia leidimo kurti dar kartą.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Išsaugokite visą atsakymą ir antraštes, pradinius identifikatorius, kiekvieną tikrą rezultatą ir visus naudojimo bei apskaitos laukus. Išsaugokite kiekvieną unikalų jums priklausantį išteklių ir visas į jį nukreiptas paskirtis.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_status",
                  "type": "string"
                },
                {
                  "name": "data.task_result.videos[].url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
                "default_known": false,
                "enum": [
                  "kling-v1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 500,
                "maximum_length": 500,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Pasirenkamas savosios nuostatos perrašymas. Jo nenurodžius, pasirinktas modelis naudojamas automatiškai; aiškiai nurodyta reikšmė išsaugoma.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "model_name",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum": 1,
                "maximum_length": null,
                "minimum": 0,
                "name": "cfg_scale",
                "required": false,
                "type": "number"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 200,
                "maximum_length": 200,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "type": "string"
                },
                "cfg_scale": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "mode": {
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v1"
                  ],
                  "type": "string"
                },
                "model_name": {
                  "type": "string"
                },
                "negative_prompt": {
                  "maxLength": 200,
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 500,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "mode"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "mode": "pro",
                "model": "kling-v1",
                "prompt": "A happy holiday scene at the beach."
              },
              "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": [
              "Naudokite būtent šį Ailoot maršrutizavimo parinkiklį.",
              "Pasirenkamas savosios nuostatos perrašymas. Jo nenurodžius, pasirinktas modelis naudojamas automatiškai; aiškiai nurodyta reikšmė išsaugoma."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "model_name",
              "cfg_scale",
              "aspect_ratio",
              "negative_prompt",
              "duration"
            ],
            "required": [
              "model",
              "prompt",
              "mode"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "succeed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "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": [
              "submitted"
            ],
            "state_field": "data.task_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": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.task_status",
                "type": "string"
              },
              {
                "name": "data.task_result.videos[].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": "Šis įvertis nėra papildomas mokestis ar fiksuotas užbaigto generavimo įkainis.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Numatoma generavimo kaina",
            "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\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v1\", \"prompt\": \"A happy holiday scene at the beach.\", \"mode\": \"pro\"}')\n\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"
        ],
        "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",
        "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",
        "request_model_id": "kling-v1",
        "route_label": "Ultra"
      }
    ],
    "name": "kling-v1",
    "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 kuria vaizdo įrašą pagal tekstinį aprašą su aiškiai nurodytu std arba pro režimu. Nustatykite kadro trukmę ir aprašo valdiklius, tada per Ailoot gaukite visus užbaigtus vaizdo rezultatus.",
    "title": "kling-v1"
  },
  "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 kuria vaizdo įrašą pagal tekstinį aprašą su aiškiai nurodytu std arba pro režimu. Nustatykite kadro trukmę ir aprašo valdiklius, tada per Ailoot gaukite visus užbaigtus vaizdo rezultatus.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "80d84395bb0c1c55b67b038e07e793a326a867440c94f2f611625459f1c7678a",
    "renderer_sha256": "57bd2f8a61f57d341aae369006eca818e3eea645ec43af488ec7b2289eeca772"
  },
  "sourceRevision": "2cae0e534afc5059315896806356e0a7f048247a6ddb8bc0bc723479804b20f6"
}
