{
  "aboutHtml": "<p>PixVerse v5 on videomalli videon luomiseen tekstistä ja kuvasta. Kirjallinen ohjeistus määrittelee tapahtuman, ja valinnainen viitekuva antaa lähtötilanteen ulkonäön ja sommittelun. Käytä kutakin luotua otosta määriteltyyn tarkoitukseen, kuten pääkohteen esittelyyn, eleen näyttämiseen tai visuaalisen yksityiskohdan paljastamiseen.</p><p>Kuvaile toiminta havaittavilla termeillä. Laatikon avaava käsi, sisäpihan poikki kulkeva hahmo tai valoon siirtyvä esine antaa jaksolle tunnistettavan muutoksen. Kerro, mikä kohde liikkuu, mitä sen ympärillä on ja miten tapahtuman pitäisi päättyä. Säilytä yksityiskohdat, joiden avulla kohtaus tunnistetaan.</p><p>Valitse kuvan pohjalta luomiseen viitekuva, joka sopii jo tavoiteltuun sommitteluun. Pidä tunnusomaiset piirteet näkyvissä ja varaa tilaa pyydetylle liikkeelle. Selitä, miten kohtaus kehittyy tästä kuvasta. Säilytä lähde valmiin videon kanssa, jotta jatkuvuutta voi arvioida suoralla vertailulla.</p><p>Dokumentoidussa malliluettelossa on useita kuvasuhteita ja resoluutiovaihtoehtoja sekä viiden ja kahdeksan sekunnin kestovaihtoehdot. Valitse työnkulussa tarjottu yhdistelmä ja kirjaa sen todelliset arvot. Suunnittele toiminta ja loppu valitun otospituuden ja käyttökohteen kuva-alan mukaan.</p><p>Ohjaa huomiota kameran ohjeistuksella. Kiinteä kuvakulma voi korostaa pääkohteen toimintaa, kun taas liikkuva kuvakulma voi paljastaa ympäristön tai yksityiskohdan. Selitä kameran suhde pääkohteeseen, jotta liike palvelee kohtausta. Tarkista lopusta, jättääkö se tarkoitetun tiedon näkyviin.</p><p>Pidä toisiinsa liittyvien otosten sarjassa toistuvan pääkohteen ja ympäristön kuvaukset johdonmukaisina tarvittavissa ohjeistuksissa. Säilytä kukin viitekuva ja valittu malli tuloksensa kanssa. Kokoa valmiit leikkeet suunniteltuun järjestykseen ja tarkastele ulkonäön, valaistuksen ja tilasuhteiden muutoksia koko leikkauksessa.</p><p>Katso jokainen video kokonaan ja arvioi pyydettyä toimintaa, jatkuvuutta ja ajoitusta. Tarkkaile käsiä, kasvoja, esineiden ääriviivoja ja materiaalin yksityiskohtia, kun ne ovat kohtauksen kannalta tärkeitä. Tarkista hetket, joissa kohteet menevät päällekkäin tai siirtyvät toiseen kuvakulmaan. Käyttökelpoinen otos hahmottuu selkeästi kokonaisuudessaan, ei vain sen onnistuneimmassa yksittäisessä ruudussa.</p><p>Tallenna valmis video kehotteen, lähdekuvan ja asetusten kanssa. Kun vaihtoehto tarvitsee korjausta, määrittele konkreettinen poikkeama ja muuta siihen liittyvää ohjetta. Pidä onnistuneet sommittelu- ja ulkonäkövalinnat samoina, jotta seuraavaa tulosta voi verrata samaan visuaaliseen tavoitteeseen.</p>",
  "aboutText": "PixVerse v5 on videomalli videon luomiseen tekstistä ja kuvasta. Kirjallinen ohjeistus määrittelee tapahtuman, ja valinnainen viitekuva antaa lähtötilanteen ulkonäön ja sommittelun. Käytä kutakin luotua otosta määriteltyyn tarkoitukseen, kuten pääkohteen esittelyyn, eleen näyttämiseen tai visuaalisen yksityiskohdan paljastamiseen.\n\nKuvaile toiminta havaittavilla termeillä. Laatikon avaava käsi, sisäpihan poikki kulkeva hahmo tai valoon siirtyvä esine antaa jaksolle tunnistettavan muutoksen. Kerro, mikä kohde liikkuu, mitä sen ympärillä on ja miten tapahtuman pitäisi päättyä. Säilytä yksityiskohdat, joiden avulla kohtaus tunnistetaan.\n\nValitse kuvan pohjalta luomiseen viitekuva, joka sopii jo tavoiteltuun sommitteluun. Pidä tunnusomaiset piirteet näkyvissä ja varaa tilaa pyydetylle liikkeelle. Selitä, miten kohtaus kehittyy tästä kuvasta. Säilytä lähde valmiin videon kanssa, jotta jatkuvuutta voi arvioida suoralla vertailulla.\n\nDokumentoidussa malliluettelossa on useita kuvasuhteita ja resoluutiovaihtoehtoja sekä viiden ja kahdeksan sekunnin kestovaihtoehdot. Valitse työnkulussa tarjottu yhdistelmä ja kirjaa sen todelliset arvot. Suunnittele toiminta ja loppu valitun otospituuden ja käyttökohteen kuva-alan mukaan.\n\nOhjaa huomiota kameran ohjeistuksella. Kiinteä kuvakulma voi korostaa pääkohteen toimintaa, kun taas liikkuva kuvakulma voi paljastaa ympäristön tai yksityiskohdan. Selitä kameran suhde pääkohteeseen, jotta liike palvelee kohtausta. Tarkista lopusta, jättääkö se tarkoitetun tiedon näkyviin.\n\nPidä toisiinsa liittyvien otosten sarjassa toistuvan pääkohteen ja ympäristön kuvaukset johdonmukaisina tarvittavissa ohjeistuksissa. Säilytä kukin viitekuva ja valittu malli tuloksensa kanssa. Kokoa valmiit leikkeet suunniteltuun järjestykseen ja tarkastele ulkonäön, valaistuksen ja tilasuhteiden muutoksia koko leikkauksessa.\n\nKatso jokainen video kokonaan ja arvioi pyydettyä toimintaa, jatkuvuutta ja ajoitusta. Tarkkaile käsiä, kasvoja, esineiden ääriviivoja ja materiaalin yksityiskohtia, kun ne ovat kohtauksen kannalta tärkeitä. Tarkista hetket, joissa kohteet menevät päällekkäin tai siirtyvät toiseen kuvakulmaan. Käyttökelpoinen otos hahmottuu selkeästi kokonaisuudessaan, ei vain sen onnistuneimmassa yksittäisessä ruudussa.\n\nTallenna valmis video kehotteen, lähdekuvan ja asetusten kanssa. Kun vaihtoehto tarvitsee korjausta, määrittele konkreettinen poikkeama ja muuta siihen liittyvää ohjetta. Pidä onnistuneet sommittelu- ja ulkonäkövalinnat samoina, jotta seuraavaa tulosta voi verrata samaan visuaaliseen tavoitteeseen.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "693d6770d3c9b69745c567d32069b9f88d2b5c4812dac101b477c833fe047a2d",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">PixVerse v5</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>PixVerse /</span><code>pixverse-v5</code><button type=\"button\" id=\"copy-id\">Kopioi ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Mallikortin osiot\"><button type=\"button\" data-card-jump=\"overview\">Aloitus</button><button type=\"button\" data-card-jump=\"methods\">Syötteet &amp; menetelmät</button><button type=\"button\" data-card-jump=\"pricing\">Hinnoittelu</button><button type=\"button\" data-card-jump=\"examples\">Esimerkit</button><button type=\"button\" data-card-jump=\"results\">Tulokset</button><button type=\"button\" data-card-jump=\"aliases\">Aliakset</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-menetelmät\"><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|pixverse-v5\">Video</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Aloitus</h3><p class=\"mdesc-full\">PixVerse v5 luo lyhyitä videoita tekstistä tai kuvista. Kehitä kohtaus, jolla on käyttökelpoinen loppu, käyttämällä konkreettista toimintaohjeistusta, tarvittaessa valmisteltua viitekuvaa sekä dokumentoituja rajauksen ja resoluution säätimiä.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti · Kuvat</dd></div><div><dt>Tulokset</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Tietoa mallista</summary><p class=\"note-s\" data-model-method-boundary>Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.</p><div class=\"mabout\" id=\"m-about\"><p>PixVerse v5 on videomalli videon luomiseen tekstistä ja kuvasta. Kirjallinen ohjeistus määrittelee tapahtuman, ja valinnainen viitekuva antaa lähtötilanteen ulkonäön ja sommittelun. Käytä kutakin luotua otosta määriteltyyn tarkoitukseen, kuten pääkohteen esittelyyn, eleen näyttämiseen tai visuaalisen yksityiskohdan paljastamiseen.</p><p>Kuvaile toiminta havaittavilla termeillä. Laatikon avaava käsi, sisäpihan poikki kulkeva hahmo tai valoon siirtyvä esine antaa jaksolle tunnistettavan muutoksen. Kerro, mikä kohde liikkuu, mitä sen ympärillä on ja miten tapahtuman pitäisi päättyä. Säilytä yksityiskohdat, joiden avulla kohtaus tunnistetaan.</p><p>Valitse kuvan pohjalta luomiseen viitekuva, joka sopii jo tavoiteltuun sommitteluun. Pidä tunnusomaiset piirteet näkyvissä ja varaa tilaa pyydetylle liikkeelle. Selitä, miten kohtaus kehittyy tästä kuvasta. Säilytä lähde valmiin videon kanssa, jotta jatkuvuutta voi arvioida suoralla vertailulla.</p><p>Dokumentoidussa malliluettelossa on useita kuvasuhteita ja resoluutiovaihtoehtoja sekä viiden ja kahdeksan sekunnin kestovaihtoehdot. Valitse työnkulussa tarjottu yhdistelmä ja kirjaa sen todelliset arvot. Suunnittele toiminta ja loppu valitun otospituuden ja käyttökohteen kuva-alan mukaan.</p><p>Ohjaa huomiota kameran ohjeistuksella. Kiinteä kuvakulma voi korostaa pääkohteen toimintaa, kun taas liikkuva kuvakulma voi paljastaa ympäristön tai yksityiskohdan. Selitä kameran suhde pääkohteeseen, jotta liike palvelee kohtausta. Tarkista lopusta, jättääkö se tarkoitetun tiedon näkyviin.</p><p>Pidä toisiinsa liittyvien otosten sarjassa toistuvan pääkohteen ja ympäristön kuvaukset johdonmukaisina tarvittavissa ohjeistuksissa. Säilytä kukin viitekuva ja valittu malli tuloksensa kanssa. Kokoa valmiit leikkeet suunniteltuun järjestykseen ja tarkastele ulkonäön, valaistuksen ja tilasuhteiden muutoksia koko leikkauksessa.</p><p>Katso jokainen video kokonaan ja arvioi pyydettyä toimintaa, jatkuvuutta ja ajoitusta. Tarkkaile käsiä, kasvoja, esineiden ääriviivoja ja materiaalin yksityiskohtia, kun ne ovat kohtauksen kannalta tärkeitä. Tarkista hetket, joissa kohteet menevät päällekkäin tai siirtyvät toiseen kuvakulmaan. Käyttökelpoinen otos hahmottuu selkeästi kokonaisuudessaan, ei vain sen onnistuneimmassa yksittäisessä ruudussa.</p><p>Tallenna valmis video kehotteen, lähdekuvan ja asetusten kanssa. Kun vaihtoehto tarvitsee korjausta, määrittele konkreettinen poikkeama ja muuta siihen liittyvää ohjetta. Pidä onnistuneet sommittelu- ja ulkonäkövalinnat samoina, jotta seuraavaa tulosta voi verrata samaan visuaaliseen tavoitteeseen.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Saatavilla Ailootissa · syötteet &amp; menetelmät</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Tulostyypit</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kenttä</th><th>Tyyppi</th><th>Vaatimus</th><th>Arvot &amp; rajat</th><th>Oletus</th></tr></thead><tbody><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>pixverse-v5</div><div>Ehdot: Käytä täsmälleen tätä Ailoot-reititysvalitsinta.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Kuvaile kohtaus ja sen liike.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>16:9, 4:3, 1:1, 3:4, 9:16</div><div>Ehdot: Käytä jotakin valitulle mallille luetelluista kuvasuhteista.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">quality</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>360p, 540p, 720p, 1080p</div><div>Ehdot: Käytä valitulle mallille lueteltua laatuarvoa.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">motion_mode</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>normal, fast</div><div>Ehdot: Käytä valitulle mallille lueteltua liiketilaa.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>integer</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>5, 8</div><div>Ehdot: Käytä lueteltua kestoa; ilmoittamatonta oletusarvoa ei käytetä.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">end_image</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Valinnainen loppuruutu valitsee tuetun kuvatilan.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">lip_sync_tts_content</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Valinnaista puhesisältöä valitulle mallille.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">lip_sync_tts_speaker_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Käytä todellista palveluntarjoajan tukemaa äänitunnistetta; äänitunnistetta ei keksitä.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">image</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string or array&lt;string&gt;</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Käytä kuvan todellista, julkisesti saavutettavaa URL-osoitetta tai base64-kuvaa; valittu malli tukee kuvasyötettä.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">negative_prompt</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Kuvaile vältettävää sisältöä.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Menetelmän parametrit ja elinkaari</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametri</th><th>Sopimus</th></tr></thead><tbody><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>content_type</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>application/json</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>required</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>model, prompt</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>optional</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>aspect_ratio, quality, motion_mode, duration, end_image, lip_sync_tts_content, lip_sync_tts_speaker_id, image, negative_prompt</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>material_types</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>text, image</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>conditions</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>Käytä täsmälleen tätä Ailoot-reititysvalitsinta., Kuvaile kohtaus ja sen liike., Käytä jotakin valitulle mallille luetelluista kuvasuhteista., Käytä valitulle mallille lueteltua laatuarvoa., Käytä valitulle mallille lueteltua liiketilaa., Käytä lueteltua kestoa; ilmoittamatonta oletusarvoa ei käytetä., Valinnainen loppuruutu valitsee tuetun kuvatilan., Valinnaista puhesisältöä valitulle mallille., Käytä todellista palveluntarjoajan tukemaa äänitunnistetta; äänitunnistetta ei keksitä., Käytä kuvan todellista, julkisesti saavutettavaa URL-osoitetta tai base64-kuvaa; valittu malli tukee kuvasyötettä., Kuvaile vältettävää sisältöä.</td></tr></tbody></table></div><p>Menetelmien aliakset: <code>/v1/videos/generations</code></p><p>Elinkaari: <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\">Hinnoittelu</h3><div class=\"card-result-process\" data-billing-basis><h5>Lopullisen veloituksen laskenta</h5><p class=\"note-s\">Näytettyjen hintojen avulla arvioidaan kustannukset ennen generointia. Lopullinen veloitus lasketaan alkuperäiselle generoinnille kirjatun kustannuksen perusteella. Lopullisena laskutettavana määränä ei käytetä tulosteen mitattua kestoa eikä ennustettuja määriä.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.</p><dl data-price-conditions><dt>Nopea tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun nopea tila on valittu</span></dd><dt>Flex-tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun flex-tila on valittu</span></dd><dt>Päättelyn enimmäisteho</dt><dd>Ei määritetty <span class=\"note-s\">Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä</span></dd></dl></div><div data-declared-tariff-pricing><h4>Arvioidut vertailuhinnat</h4><h4>Hinnat asetusten mukaan</h4><p class=\"note-s\">Kohdista kukin veloitus näytettyihin ehtoihin. Käytä yhtä hintaa kutakin vaihtoehtoisten asetusten ryhmää kohden.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Asetukset</th><th>Hinnasto</th><th>Ennustettu määrä</th><th>Veloitus</th></tr></thead><tbody><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Tokenien perushinnat</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>Perushinta</td><td data-cell-label=\"Ennustettu määrä\"><span class=\"card-cell-label\">Ennustettu määrä</span>—</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · Syötetokenit · Arvio vain vertailua varten</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Tuloste · Tulostokenit · Arvio vain vertailua varten</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistin luku · Arvio vain vertailua varten</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus · Arvio vain vertailua varten</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus, 1 tunti · Arvio vain vertailua varten</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div></td></tr><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Arvioitu luontikustannus</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>—</td><td data-cell-label=\"Ennustettu määrä\"><span class=\"card-cell-label\">Ennustettu määrä</span>yhden generoinnin arvio</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Tuloste · Arvioidut generointikustannukset · Arvio vain vertailua varten</span> <b>$0.2</b> <span class=\"price-unit\">arvio ennen generointia</span></div><p class=\"note-s\">Tämä arvio ei ole lisämaksu eikä valmistuneen generoinnin kiinteä hinta.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. <a href=\"/docs/fi/billing/reserve/\">Varauksen ja lopullisen veloituksen toiminta →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esimerkkipyynnöt</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-2816-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2816-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · luo vain kerran ja säilytä kuitti</button><button class=\"cg-tab\" id=\"model-code-2816-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2816-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Lue alkuperäinen tehtävä</button><button class=\"cg-tab\" id=\"model-code-2816-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2816-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Tallenna kaikki valmistuneet omat tuotokset</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopioi koodi\"><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-2816-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2816-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;pixverse-v5&quot;,\n  &quot;prompt&quot;: &quot;A cat is walking on grass.&quot;\n}\nJSON\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# Create once; retain id, polling_url, original task identifiers and every header.\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2816-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2816-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-2816-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2816-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\">Vastaanota ja tallenna tulokset</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>Säilytä kaikki valmistuneet tulokset</h5><p class=\"note-s\">Tallenna jokainen valmistunut video tai palautettu tiedosto; nouda jokainen todellinen palautettu aineiston URL.</p><p class=\"note-s\">Säilytä koko vastaus ja otsakkeet, alkuperäiset tunnisteet, jokainen todellinen tulos sekä kaikki käyttö- ja veloitustietokentät. Tallenna jokainen yksilöllinen käyttäjälle kuuluva aineisto ja säilytä kaikki siihen viittaavat roolit.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jos alkuperäinen vastaus on tarkistettava</h5><p class=\"note-s\">Säilytä palautettu julkinen tehtävän tai operaation id ja kaikki otsakkeet. Lue vain alkuperäisen tehtävän tietoja; unknown tai result_pending_check ei oikeuta uuteen luontipyyntöön.</p></div><details class=\"card-about\" data-output-fields><summary>Vastauksen kentät</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kenttä</th><th>Tyyppi</th></tr></thead><tbody><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">video_url</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliakset</h3><h4>Mallin aliakset</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=pixverse-v5&amp;route=Ultra&amp;caller=pixverse-v5&amp;fmt=videos\"><code>pixverse-v5</code></a></span></p><h4>Menetelmäpolkujen aliakset</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>Liittyvät kutsujan ID:t</h4><p class=\"note-s\"><a href=\"#m=pixverse-v5&amp;route=Ultra&amp;caller=pixverse-v5&amp;fmt=videos\"><code>pixverse-v5</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "pixverse-v5",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "pixverse-v5",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|pixverse-v5",
      "ordinal": 0,
      "rawMethod": {
        "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.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "pending",
                "processing"
              ],
              "state_field": "status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Säilytä palautettu julkinen tehtävän tai operaation id ja kaikki otsakkeet. Lue vain alkuperäisen tehtävän tietoja; unknown tai result_pending_check ei oikeuta uuteen luontipyyntöön.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Säilytä koko vastaus ja otsakkeet, alkuperäiset tunnisteet, jokainen todellinen tulos sekä kaikki käyttö- ja veloitustietokentät. Tallenna jokainen yksilöllinen käyttäjälle kuuluva aineisto ja säilytä kaikki siihen viittaavat roolit.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Käytä täsmälleen tätä Ailoot-reititysvalitsinta.",
                "default_known": false,
                "enum": [
                  "pixverse-v5"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Kuvaile kohtaus ja sen liike.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Käytä jotakin valitulle mallille luetelluista kuvasuhteista.",
                "default_known": false,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä valitulle mallille lueteltua laatuarvoa.",
                "default_known": false,
                "enum": [
                  "360p",
                  "540p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "quality",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä valitulle mallille lueteltua liiketilaa.",
                "default_known": false,
                "enum": [
                  "normal",
                  "fast"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "motion_mode",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä lueteltua kestoa; ilmoittamatonta oletusarvoa ei käytetä.",
                "default_known": false,
                "enum": [
                  5,
                  8
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "conditions": "Valinnainen loppuruutu valitsee tuetun kuvatilan.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "end_image",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Valinnaista puhesisältöä valitulle mallille.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "lip_sync_tts_content",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä todellista palveluntarjoajan tukemaa äänitunnistetta; äänitunnistetta ei keksitä.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "lip_sync_tts_speaker_id",
                "required": false,
                "type": "string"
              },
              {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                ],
                "conditions": "Käytä kuvan todellista, julkisesti saavutettavaa URL-osoitetta tai base64-kuvaa; valittu malli tukee kuvasyötettä.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "image",
                "required": false,
                "type": "string or array<string>"
              },
              {
                "conditions": "Kuvaile vältettävää sisältöä.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ],
                  "type": "string"
                },
                "duration": {
                  "enum": [
                    5,
                    8
                  ],
                  "type": "integer"
                },
                "end_image": {
                  "type": "string"
                },
                "image": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  ]
                },
                "lip_sync_tts_content": {
                  "type": "string"
                },
                "lip_sync_tts_speaker_id": {
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "pixverse-v5"
                  ],
                  "type": "string"
                },
                "motion_mode": {
                  "enum": [
                    "normal",
                    "fast"
                  ],
                  "type": "string"
                },
                "negative_prompt": {
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                },
                "quality": {
                  "enum": [
                    "360p",
                    "540p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "pixverse-v5",
                "prompt": "A cat is walking on grass."
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Käytä täsmälleen tätä Ailoot-reititysvalitsinta.",
              "Kuvaile kohtaus ja sen liike.",
              "Käytä jotakin valitulle mallille luetelluista kuvasuhteista.",
              "Käytä valitulle mallille lueteltua laatuarvoa.",
              "Käytä valitulle mallille lueteltua liiketilaa.",
              "Käytä lueteltua kestoa; ilmoittamatonta oletusarvoa ei käytetä.",
              "Valinnainen loppuruutu valitsee tuetun kuvatilan.",
              "Valinnaista puhesisältöä valitulle mallille.",
              "Käytä todellista palveluntarjoajan tukemaa äänitunnistetta; äänitunnistetta ei keksitä.",
              "Käytä kuvan todellista, julkisesti saavutettavaa URL-osoitetta tai base64-kuvaa; valittu malli tukee kuvasyötettä.",
              "Kuvaile vältettävää sisältöä."
            ],
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "aspect_ratio",
              "quality",
              "motion_mode",
              "duration",
              "end_image",
              "lip_sync_tts_content",
              "lip_sync_tts_speaker_id",
              "image",
              "negative_prompt"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "pending",
              "processing"
            ],
            "state_field": "status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Tämä arvio ei ole lisämaksu eikä valmistuneen generoinnin kiinteä hinta.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Arvioitu luontikustannus",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"pixverse-v5\",\n  \"prompt\": \"A cat is walking on grass.\"\n}\nJSON\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# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Video",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "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": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.2",
                "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": "pixverse-v5",
        "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": "0.2",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.2",
            "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": "pixverse-v5",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "08d6814e69f62d61f1d5e7479e05586d8e4ffede3e6576f6c4b3398c058dac17",
    "input_html_sha256": "9436d54e89a519e8134b76ba9f2adfb865858c28798a31c1f318add9ba90a19d",
    "private_audit_sha256": "599276efec1999e3ef15a6bea91041aec1195706254ea53da5fb126da839cc3a",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/pixverse-v5/",
    "description": "PixVerse v5 luo lyhyitä videoita tekstistä tai kuvista. Kehitä kohtaus, jolla on käyttökelpoinen loppu, käyttämällä konkreettista toimintaohjeistusta, tarvittaessa valmisteltua viitekuvaa sekä dokumentoituja rajauksen ja resoluution säätimiä.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/pixverse-v5/index.md",
    "title": "PixVerse v5 — Ailoot",
    "url": "https://ailoot.ai/models/fi/pixverse-v5/"
  },
  "rawModel": {
    "about": "PixVerse v5 on videomalli videon luomiseen tekstistä ja kuvasta. Kirjallinen ohjeistus määrittelee tapahtuman, ja valinnainen viitekuva antaa lähtötilanteen ulkonäön ja sommittelun. Käytä kutakin luotua otosta määriteltyyn tarkoitukseen, kuten pääkohteen esittelyyn, eleen näyttämiseen tai visuaalisen yksityiskohdan paljastamiseen.\n\nKuvaile toiminta havaittavilla termeillä. Laatikon avaava käsi, sisäpihan poikki kulkeva hahmo tai valoon siirtyvä esine antaa jaksolle tunnistettavan muutoksen. Kerro, mikä kohde liikkuu, mitä sen ympärillä on ja miten tapahtuman pitäisi päättyä. Säilytä yksityiskohdat, joiden avulla kohtaus tunnistetaan.\n\nValitse kuvan pohjalta luomiseen viitekuva, joka sopii jo tavoiteltuun sommitteluun. Pidä tunnusomaiset piirteet näkyvissä ja varaa tilaa pyydetylle liikkeelle. Selitä, miten kohtaus kehittyy tästä kuvasta. Säilytä lähde valmiin videon kanssa, jotta jatkuvuutta voi arvioida suoralla vertailulla.\n\nDokumentoidussa malliluettelossa on useita kuvasuhteita ja resoluutiovaihtoehtoja sekä viiden ja kahdeksan sekunnin kestovaihtoehdot. Valitse työnkulussa tarjottu yhdistelmä ja kirjaa sen todelliset arvot. Suunnittele toiminta ja loppu valitun otospituuden ja käyttökohteen kuva-alan mukaan.\n\nOhjaa huomiota kameran ohjeistuksella. Kiinteä kuvakulma voi korostaa pääkohteen toimintaa, kun taas liikkuva kuvakulma voi paljastaa ympäristön tai yksityiskohdan. Selitä kameran suhde pääkohteeseen, jotta liike palvelee kohtausta. Tarkista lopusta, jättääkö se tarkoitetun tiedon näkyviin.\n\nPidä toisiinsa liittyvien otosten sarjassa toistuvan pääkohteen ja ympäristön kuvaukset johdonmukaisina tarvittavissa ohjeistuksissa. Säilytä kukin viitekuva ja valittu malli tuloksensa kanssa. Kokoa valmiit leikkeet suunniteltuun järjestykseen ja tarkastele ulkonäön, valaistuksen ja tilasuhteiden muutoksia koko leikkauksessa.\n\nKatso jokainen video kokonaan ja arvioi pyydettyä toimintaa, jatkuvuutta ja ajoitusta. Tarkkaile käsiä, kasvoja, esineiden ääriviivoja ja materiaalin yksityiskohtia, kun ne ovat kohtauksen kannalta tärkeitä. Tarkista hetket, joissa kohteet menevät päällekkäin tai siirtyvät toiseen kuvakulmaan. Käyttökelpoinen otos hahmottuu selkeästi kokonaisuudessaan, ei vain sen onnistuneimmassa yksittäisessä ruudussa.\n\nTallenna valmis video kehotteen, lähdekuvan ja asetusten kanssa. Kun vaihtoehto tarvitsee korjausta, määrittele konkreettinen poikkeama ja muuta siihen liittyvää ohjetta. Pidä onnistuneet sommittelu- ja ulkonäkövalinnat samoina, jotta seuraavaa tulosta voi verrata samaan visuaaliseen tavoitteeseen.",
    "about_sha256": "15d6c2e50a273f908cb72e51356e52245ce29115821a2add1ae98d55b5c96c81",
    "alias_of": null,
    "aliases": [],
    "author": "PixVerse",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.2",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.2",
            "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": "Konfiguraation täydet hintatiedot lisätiedoissa."
      }
    ],
    "ctx": null,
    "display_name": "PixVerse v5",
    "formats": [
      "videos"
    ],
    "id": "pixverse-v5",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "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.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "pending",
                "processing"
              ],
              "state_field": "status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Säilytä palautettu julkinen tehtävän tai operaation id ja kaikki otsakkeet. Lue vain alkuperäisen tehtävän tietoja; unknown tai result_pending_check ei oikeuta uuteen luontipyyntöön.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Säilytä koko vastaus ja otsakkeet, alkuperäiset tunnisteet, jokainen todellinen tulos sekä kaikki käyttö- ja veloitustietokentät. Tallenna jokainen yksilöllinen käyttäjälle kuuluva aineisto ja säilytä kaikki siihen viittaavat roolit.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Käytä täsmälleen tätä Ailoot-reititysvalitsinta.",
                "default_known": false,
                "enum": [
                  "pixverse-v5"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Kuvaile kohtaus ja sen liike.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Käytä jotakin valitulle mallille luetelluista kuvasuhteista.",
                "default_known": false,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä valitulle mallille lueteltua laatuarvoa.",
                "default_known": false,
                "enum": [
                  "360p",
                  "540p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "quality",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä valitulle mallille lueteltua liiketilaa.",
                "default_known": false,
                "enum": [
                  "normal",
                  "fast"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "motion_mode",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä lueteltua kestoa; ilmoittamatonta oletusarvoa ei käytetä.",
                "default_known": false,
                "enum": [
                  5,
                  8
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "conditions": "Valinnainen loppuruutu valitsee tuetun kuvatilan.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "end_image",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Valinnaista puhesisältöä valitulle mallille.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "lip_sync_tts_content",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Käytä todellista palveluntarjoajan tukemaa äänitunnistetta; äänitunnistetta ei keksitä.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "lip_sync_tts_speaker_id",
                "required": false,
                "type": "string"
              },
              {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                ],
                "conditions": "Käytä kuvan todellista, julkisesti saavutettavaa URL-osoitetta tai base64-kuvaa; valittu malli tukee kuvasyötettä.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "image",
                "required": false,
                "type": "string or array<string>"
              },
              {
                "conditions": "Kuvaile vältettävää sisältöä.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ],
                  "type": "string"
                },
                "duration": {
                  "enum": [
                    5,
                    8
                  ],
                  "type": "integer"
                },
                "end_image": {
                  "type": "string"
                },
                "image": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  ]
                },
                "lip_sync_tts_content": {
                  "type": "string"
                },
                "lip_sync_tts_speaker_id": {
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "pixverse-v5"
                  ],
                  "type": "string"
                },
                "motion_mode": {
                  "enum": [
                    "normal",
                    "fast"
                  ],
                  "type": "string"
                },
                "negative_prompt": {
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                },
                "quality": {
                  "enum": [
                    "360p",
                    "540p",
                    "720p",
                    "1080p"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "pixverse-v5",
                "prompt": "A cat is walking on grass."
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Käytä täsmälleen tätä Ailoot-reititysvalitsinta.",
              "Kuvaile kohtaus ja sen liike.",
              "Käytä jotakin valitulle mallille luetelluista kuvasuhteista.",
              "Käytä valitulle mallille lueteltua laatuarvoa.",
              "Käytä valitulle mallille lueteltua liiketilaa.",
              "Käytä lueteltua kestoa; ilmoittamatonta oletusarvoa ei käytetä.",
              "Valinnainen loppuruutu valitsee tuetun kuvatilan.",
              "Valinnaista puhesisältöä valitulle mallille.",
              "Käytä todellista palveluntarjoajan tukemaa äänitunnistetta; äänitunnistetta ei keksitä.",
              "Käytä kuvan todellista, julkisesti saavutettavaa URL-osoitetta tai base64-kuvaa; valittu malli tukee kuvasyötettä.",
              "Kuvaile vältettävää sisältöä."
            ],
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "aspect_ratio",
              "quality",
              "motion_mode",
              "duration",
              "end_image",
              "lip_sync_tts_content",
              "lip_sync_tts_speaker_id",
              "image",
              "negative_prompt"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "pending",
              "processing"
            ],
            "state_field": "status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Tämä arvio ei ole lisämaksu eikä valmistuneen generoinnin kiinteä hinta.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Arvioitu luontikustannus",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"pixverse-v5\",\n  \"prompt\": \"A cat is walking on grass.\"\n}\nJSON\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# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Video",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "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": "0.2",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.2",
                "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": "pixverse-v5",
        "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": "0.2",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.2",
            "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": "pixverse-v5",
        "request_model_id": "pixverse-v5",
        "route_label": "Ultra"
      }
    ],
    "name": "PixVerse v5",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.2,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.2,
      "varies": false
    },
    "short": "PixVerse v5 luo lyhyitä videoita tekstistä tai kuvista. Kehitä kohtaus, jolla on käyttökelpoinen loppu, käyttämällä konkreettista toimintaohjeistusta, tarvittaessa valmisteltua viitekuvaa sekä dokumentoituja rajauksen ja resoluution säätimiä.",
    "short_sha256": "598fa21d98d6ba178af95abee8cd023ea70cd890edf586e4ceec6e0ceb663533"
  },
  "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": "PixVerse v5 luo lyhyitä videoita tekstistä tai kuvista. Kehitä kohtaus, jolla on käyttökelpoinen loppu, käyttämällä konkreettista toimintaohjeistusta, tarvittaessa valmisteltua viitekuvaa sekä dokumentoituja rajauksen ja resoluution säätimiä.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d41a49b7c5762f5979cdab07dc57be824a1f08be6b01bfaa131445f34280f5e1",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "ab4b4960129fc75c0fe67b8d4d5e80a13df0fc45b4554782ad856a2b7fe65ad9"
}
