{
  "aboutHtml": "<h4>Videonäkymän luominen</h4><p>Grok Imagine Video 1.5 on xAI:n malli videoiden generointiin tekstikuvauksesta ja visuaalisesta aineistosta. Ailootin nykyisessä menetelmässä on julkaistu tekstipohjainen videogenerointi; itse mallin lisätilat mahdollistavat kuvan animoinnin, viiteaineistojen käytön ja näkymän tukiruutujen määrittämisen.</p><p>Tulos luodaan asynkronisesti: tehtävän asettamisen jälkeen valmistumista tarkistetaan sen tunnuksella. xAI:n mukaan prosessi voi kestää useita minuutteja näkymän vaativuudesta, kestosta ja tarkkuudesta riippuen. Tehtävätunnuksen saaminen ei vielä tarkoita videon valmistumista.</p><h4>Kesto, kuvasuhteet ja tarkkuus</h4><p>Luotava video kestää <strong>1–15 sekuntia</strong>. Valittavissa ovat <code>1:1</code>, <code>16:9</code>, <code>9:16</code>, <code>4:3</code>, <code>3:4</code>, <code>3:2</code> ja <code>2:3</code>; tekstin oletusmuoto on <code>16:9</code>. Kuvan animoinnissa sen kuvasuhde säilyy oletuksena.</p><p>Teksti- ja aloituskuvagenerointiin ovat saatavilla <strong>480p, 720p ja 1080p</strong>. Oletus on 480p; viiteaineistotila on rajattu 720p-tarkkuuteen. 1080p-tarkkuutta ei voi siirtää kaikkiin tiloihin vain siksi, että malli tukee sitä.</p><h4>Ulkonäön ohjaus</h4><p>Viiteaineistotilassa xAI vastaanottaa enintään <strong>7 kuvaa</strong>. Ne määrittävät ihmiset, esineet, vaatteet ja muut visuaaliset piirteet lukitsematta aloitusruutua. Tapa on tarkoitettu toistuvaa hahmoa sisältäviin näkymiin, tuote-esittelyyn ja halutun ulkonäön säilyttämiseen eri asetelmien välillä.</p><h4>Ensimmäinen, viimeinen ja väliruudut</h4><p>Versio 1.5 mahdollistaa tarkan ensimmäisen ruudun, tarkan viimeisen ruudun tai molempien lukitsemisen. Jos vain viimeinen on määritetty, malli rakentaa alun itse ja etenee määritettyyn kuvaan. Kun molemmat rajat on annettu, se luo liikkeen niiden välille; tekstiohje voi täsmentää liikettä ja kameratyötä.</p><p>Videon sisäistä kuvakäsikirjoitusta varten voidaan lukita enintään <strong>4 avainruutua</strong>. Kunkin ajan on oltava tiukasti alun jälkeen ja ennen loppua; sidonta tapahtuu <strong>1/3 sekunnin</strong> ruudukolla. Kaksi samaan ruudukkokohtaan pyöristyvää ruutua hylätään. Tämän välttämiseksi jätä niiden väliin vähintään 1/3 sekuntia. Ensimmäinen ja viimeinen ruutu määritetään erillään näistä neljästä väliruudusta.</p><p>Tukiruudut voidaan yhdistää visuaalisiin viiteaineistoihin ja esiasetettuihin ääniin. Jos vähintään yksi ruutu on lukittu, tekstikuvaus on valinnainen: kuvasarja itse määrittää näkymän. Avainruutuja ei voi käyttää videomuokkaustilan kanssa. Nämä xAI:n kyvyt eivät tarkoita niiden saatavuutta Ailootin julkaistussa tekstipohjaisessa videogeneroinnissa.</p><h4>Ääni ja puheäänet</h4><p>Luotavassa videossa on oletuksena ääniraita; myös äänetön tulos on tarjolla. xAI:n ääniviitetilassa voidaan valita enintään <strong>3 esiasetettua ääntä</strong> ja yhdistää ne näkymän puhuviin osallistujiin.</p><p>Oman äänitiedoston lähettäminen ääninäytteeksi ei ole mallin yleinen kyky: xAI tarjoaa sen erikseen pyynnöstä. Esiasetettu ääni ja ladattu ääni ovat eri syötetyyppejä.</p><h4>Toimintatilat</h4><p>Tekstipohjainen videogenerointi luo uuden näkymän; aloituskuva määrittää sen alun; viiteaineistot ohjaavat ulkonäköä; lukitut ruudut määrittävät visuaaliset pisteet ajassa. Jokaisella tilalla on omat rajoituksensa, joten yhden tavan asetuksia ei voi siirtää toiseen ehdoitta.</p>",
  "aboutText": "### Videonäkymän luominen\n\nGrok Imagine Video 1.5 on xAI:n malli videoiden generointiin tekstikuvauksesta ja visuaalisesta aineistosta. Ailootin nykyisessä menetelmässä on julkaistu tekstipohjainen videogenerointi; itse mallin lisätilat mahdollistavat kuvan animoinnin, viiteaineistojen käytön ja näkymän tukiruutujen määrittämisen.\n\nTulos luodaan asynkronisesti: tehtävän asettamisen jälkeen valmistumista tarkistetaan sen tunnuksella. xAI:n mukaan prosessi voi kestää useita minuutteja näkymän vaativuudesta, kestosta ja tarkkuudesta riippuen. Tehtävätunnuksen saaminen ei vielä tarkoita videon valmistumista.\n\n### Kesto, kuvasuhteet ja tarkkuus\n\nLuotava video kestää **1–15 sekuntia**. Valittavissa ovat `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2` ja `2:3`; tekstin oletusmuoto on `16:9`. Kuvan animoinnissa sen kuvasuhde säilyy oletuksena.\n\nTeksti- ja aloituskuvagenerointiin ovat saatavilla **480p, 720p ja 1080p**. Oletus on 480p; viiteaineistotila on rajattu 720p-tarkkuuteen. 1080p-tarkkuutta ei voi siirtää kaikkiin tiloihin vain siksi, että malli tukee sitä.\n\n### Ulkonäön ohjaus\n\nViiteaineistotilassa xAI vastaanottaa enintään **7 kuvaa**. Ne määrittävät ihmiset, esineet, vaatteet ja muut visuaaliset piirteet lukitsematta aloitusruutua. Tapa on tarkoitettu toistuvaa hahmoa sisältäviin näkymiin, tuote-esittelyyn ja halutun ulkonäön säilyttämiseen eri asetelmien välillä.\n\n### Ensimmäinen, viimeinen ja väliruudut\n\nVersio 1.5 mahdollistaa tarkan ensimmäisen ruudun, tarkan viimeisen ruudun tai molempien lukitsemisen. Jos vain viimeinen on määritetty, malli rakentaa alun itse ja etenee määritettyyn kuvaan. Kun molemmat rajat on annettu, se luo liikkeen niiden välille; tekstiohje voi täsmentää liikettä ja kameratyötä.\n\nVideon sisäistä kuvakäsikirjoitusta varten voidaan lukita enintään **4 avainruutua**. Kunkin ajan on oltava tiukasti alun jälkeen ja ennen loppua; sidonta tapahtuu **1/3 sekunnin** ruudukolla. Kaksi samaan ruudukkokohtaan pyöristyvää ruutua hylätään. Tämän välttämiseksi jätä niiden väliin vähintään 1/3 sekuntia. Ensimmäinen ja viimeinen ruutu määritetään erillään näistä neljästä väliruudusta.\n\nTukiruudut voidaan yhdistää visuaalisiin viiteaineistoihin ja esiasetettuihin ääniin. Jos vähintään yksi ruutu on lukittu, tekstikuvaus on valinnainen: kuvasarja itse määrittää näkymän. Avainruutuja ei voi käyttää videomuokkaustilan kanssa. Nämä xAI:n kyvyt eivät tarkoita niiden saatavuutta Ailootin julkaistussa tekstipohjaisessa videogeneroinnissa.\n\n### Ääni ja puheäänet\n\nLuotavassa videossa on oletuksena ääniraita; myös äänetön tulos on tarjolla. xAI:n ääniviitetilassa voidaan valita enintään **3 esiasetettua ääntä** ja yhdistää ne näkymän puhuviin osallistujiin.\n\nOman äänitiedoston lähettäminen ääninäytteeksi ei ole mallin yleinen kyky: xAI tarjoaa sen erikseen pyynnöstä. Esiasetettu ääni ja ladattu ääni ovat eri syötetyyppejä.\n\n### Toimintatilat\n\nTekstipohjainen videogenerointi luo uuden näkymän; aloituskuva määrittää sen alun; viiteaineistot ohjaavat ulkonäköä; lukitut ruudut määrittävät visuaaliset pisteet ajassa. Jokaisella tilalla on omat rajoituksensa, joten yhden tavan asetuksia ei voi siirtää toiseen ehdoitta.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "fbd8b4883fb0c383ee3236953c4315ba5f9b7fc058ad7c542324632e8462c922",
    "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\">x</span><h2 id=\"sheet-title\">grok-imagine-video-1.5-preview</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>xAI /</span><code>grok-imagine-video-1.5-preview</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=\"Core|videos|/v1/videos/generations|grok-imagine-video-1.5-preview\">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\">Grok Imagine Video 1.5 luo tekstistä 1–15 sekunnin videoita, myös 1080p-tarkkuudella. Itse malli tukee kuvien animointia, visuaalisia viiteaineistoja, avainruutujen asettamista ja ääniraitaa.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti</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\"><h4>Videonäkymän luominen</h4><p>Grok Imagine Video 1.5 on xAI:n malli videoiden generointiin tekstikuvauksesta ja visuaalisesta aineistosta. Ailootin nykyisessä menetelmässä on julkaistu tekstipohjainen videogenerointi; itse mallin lisätilat mahdollistavat kuvan animoinnin, viiteaineistojen käytön ja näkymän tukiruutujen määrittämisen.</p><p>Tulos luodaan asynkronisesti: tehtävän asettamisen jälkeen valmistumista tarkistetaan sen tunnuksella. xAI:n mukaan prosessi voi kestää useita minuutteja näkymän vaativuudesta, kestosta ja tarkkuudesta riippuen. Tehtävätunnuksen saaminen ei vielä tarkoita videon valmistumista.</p><h4>Kesto, kuvasuhteet ja tarkkuus</h4><p>Luotava video kestää <strong>1–15 sekuntia</strong>. Valittavissa ovat <code>1:1</code>, <code>16:9</code>, <code>9:16</code>, <code>4:3</code>, <code>3:4</code>, <code>3:2</code> ja <code>2:3</code>; tekstin oletusmuoto on <code>16:9</code>. Kuvan animoinnissa sen kuvasuhde säilyy oletuksena.</p><p>Teksti- ja aloituskuvagenerointiin ovat saatavilla <strong>480p, 720p ja 1080p</strong>. Oletus on 480p; viiteaineistotila on rajattu 720p-tarkkuuteen. 1080p-tarkkuutta ei voi siirtää kaikkiin tiloihin vain siksi, että malli tukee sitä.</p><h4>Ulkonäön ohjaus</h4><p>Viiteaineistotilassa xAI vastaanottaa enintään <strong>7 kuvaa</strong>. Ne määrittävät ihmiset, esineet, vaatteet ja muut visuaaliset piirteet lukitsematta aloitusruutua. Tapa on tarkoitettu toistuvaa hahmoa sisältäviin näkymiin, tuote-esittelyyn ja halutun ulkonäön säilyttämiseen eri asetelmien välillä.</p><h4>Ensimmäinen, viimeinen ja väliruudut</h4><p>Versio 1.5 mahdollistaa tarkan ensimmäisen ruudun, tarkan viimeisen ruudun tai molempien lukitsemisen. Jos vain viimeinen on määritetty, malli rakentaa alun itse ja etenee määritettyyn kuvaan. Kun molemmat rajat on annettu, se luo liikkeen niiden välille; tekstiohje voi täsmentää liikettä ja kameratyötä.</p><p>Videon sisäistä kuvakäsikirjoitusta varten voidaan lukita enintään <strong>4 avainruutua</strong>. Kunkin ajan on oltava tiukasti alun jälkeen ja ennen loppua; sidonta tapahtuu <strong>1/3 sekunnin</strong> ruudukolla. Kaksi samaan ruudukkokohtaan pyöristyvää ruutua hylätään. Tämän välttämiseksi jätä niiden väliin vähintään 1/3 sekuntia. Ensimmäinen ja viimeinen ruutu määritetään erillään näistä neljästä väliruudusta.</p><p>Tukiruudut voidaan yhdistää visuaalisiin viiteaineistoihin ja esiasetettuihin ääniin. Jos vähintään yksi ruutu on lukittu, tekstikuvaus on valinnainen: kuvasarja itse määrittää näkymän. Avainruutuja ei voi käyttää videomuokkaustilan kanssa. Nämä xAI:n kyvyt eivät tarkoita niiden saatavuutta Ailootin julkaistussa tekstipohjaisessa videogeneroinnissa.</p><h4>Ääni ja puheäänet</h4><p>Luotavassa videossa on oletuksena ääniraita; myös äänetön tulos on tarjolla. xAI:n ääniviitetilassa voidaan valita enintään <strong>3 esiasetettua ääntä</strong> ja yhdistää ne näkymän puhuviin osallistujiin.</p><p>Oman äänitiedoston lähettäminen ääninäytteeksi ei ole mallin yleinen kyky: xAI tarjoaa sen erikseen pyynnöstä. Esiasetettu ääni ja ladattu ääni ovat eri syötetyyppejä.</p><h4>Toimintatilat</h4><p>Tekstipohjainen videogenerointi luo uuden näkymän; aloituskuva määrittää sen alun; viiteaineistot ohjaavat ulkonäköä; lukitut ruudut määrittävät visuaaliset pisteet ajassa. Jokaisella tilalla on omat rajoituksensa, joten yhden tavan asetuksia ei voi siirtää toiseen ehdoitta.</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 · Videot</b> <code>POST /v1/videos/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>text</code></dd></div><div><dt>Tulostyypit</dt><dd><code>video</code></dd></div><div><dt>Tulosteen muoto</dt><dd>mp4</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 data-parameter-availability=\"source_interface\"><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>grok-imagine-video-1.5-preview</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Vähimmäispituus: 1</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>Vähimmäismäärä: 1</div><div>Enimmäismäärä: 15</div><div>Ehdot: Älä anna samanaikaisesti duration- ja seconds-kenttää</div><div>Yksikkö: sekuntia</div></td><td data-cell-label=\"Oletus\" data-default=\"known\"><span class=\"card-cell-label\">Oletus</span>1</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">seconds</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>integer|integer_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>Vähimmäismäärä: 1</div><div>Enimmäismäärä: 15</div><div>Vaihtoehto: duration</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">resolution</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>480p, 720p, 1080p</div></td><td data-cell-label=\"Oletus\" data-default=\"known\"><span class=\"card-cell-label\">Oletus</span>480p</td></tr><tr data-parameter-availability=\"source_interface\"><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>1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3</div><div>Ehdot: Jos kuvasyöte annetaan ja kuvasuhde jätetään pois, palveluntarjoaja perii kuvan kuvasuhteen</div></td><td data-cell-label=\"Oletus\" data-default=\"known\"><span class=\"card-cell-label\">Oletus</span>16:9</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">size</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>1280x720, 720x1280, 1920x1080, 1080x1920</div><div>Ehdot: On vastattava resolution/aspect_ratio-arvoja, jos molemmat annetaan</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>object</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: Todellinen tuettu syötekuva; sallii kehotteen pois jättämisen</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Syöteaineistojen yhdistelmät</summary><p class=\"note-s\"><b>Tekstistä videoksi</b> · Pakollinen: prompt</p><p class=\"note-s\"><b>Kuvasta videoksi</b> · Pakollinen: image</p></details><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>material_types</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>text</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>null</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>optional_controls</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>null</td></tr></tbody></table></div><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/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Hinnoittelu</h3><h4>Ailoot-menetelmien hinnat</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Videot</b><code>POST /v1/videos/generations</code></header><dl><div><dt>Syöte</dt><dd>0,01 $ <em>syötekuvaa kohden</em></dd></div><div><dt>Tuloste</dt><dd>0,25 $ <em>sekuntia kohden 1080p-tarkkuudella</em></dd></div><div><dt>Tuloste</dt><dd>0,08 $ <em>sekuntia kohden 480p-tarkkuudella</em></dd></div><div><dt>Tuloste</dt><dd>0,14 $ <em>sekuntia kohden 720p-tarkkuudella</em></dd></div></dl></section><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 · Videot</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-779-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-779-panel-0\" aria-selected=\"true\" tabindex=\"0\">Videoesimerkki</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-779-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-779-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  -H &quot;Content-Type: application/json&quot; \\\n  -d &#39;{&quot;model&quot;: &quot;grok-imagine-video-1.5-preview&quot;, &quot;prompt&quot;: &quot;A person walks slowly through a quiet garden as the camera tracks from the side.&quot;}&#39;</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Vastaanota ja tallenna tulokset</h3><h4>Ailoot · Videot</h4><p class=\"note-s\">mp4</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><h5>Tarkista työn tila</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-780-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-780-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET tila</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-780-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-780-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c &#39;import os, urllib.parse; print(urllib.parse.quote(os.environ[&quot;AILOOT_VIDEO_ID&quot;], safe=&quot;&quot;))&#39;) || exit 1\ncurl &quot;https://api.ailoot.ai/v1/videos/generations/$video_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot;</code></pre></div></div></div><details class=\"card-about\"><summary>Muut sisällön lukukerrat</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-781-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-781-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET sisältö</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-781-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-781-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}&quot;\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c &#39;import os, urllib.parse; print(urllib.parse.quote(os.environ[&quot;AILOOT_VIDEO_ID&quot;], safe=&quot;&quot;))&#39;) || exit 1\ncurl &quot;https://api.ailoot.ai/v1/videos/generations/$video_id/content&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  --output video.mp4</code></pre></div></div></div></details><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 tilan JSON ja todellinen request_id. Valmistunut vastaus, jossa status=done, sisältää video.url-kentässä käyttäjälle kuuluvan sisällön URL-osoitteen. Säilytä ilmoitettu kesto ja jokainen palautettu tuloskenttä.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jos alkuperäinen vastaus on tarkistettava</h5><p class=\"note-s\">Lue olemassa olevan alkuperäisen työn tietoja; älä koskaan lähetä tuntemattomaan tilaan jäänyttä pyyntöä uudelleen.</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\">request_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\">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>owned signed content URL</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">video.duration</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>number</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">video.respect_moderation</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>boolean</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Virheet ja seuraavat vaiheet</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Vastaus</th><th>Ehto</th><th>Seuraava vaihe</th></tr></thead><tbody><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Alkuperäisen tuloksen sisältö ei ole vielä saatavilla</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Kysy tilaa alkuperäisellä palautetulla tunnisteella ja noudata Retry-After-otsaketta.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span><code>server_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Palautettu vastaus ilmoittaa, että operaatio tai tulos edellyttää tarkistusta</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Säilytä alkuperäinen palautettu operaation tai tehtävän ID, pyynnön otsakkeet ja vastaus; jatka kyseisen alkuperäisen operaation tuettuja lukutoimintoja. Älä lähetä luontipyyntöä uudelleen.</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=\"Core\"><b>Ailoot</b> <a href=\"#m=grok-imagine-video-1.5-preview&amp;route=Core&amp;caller=grok-imagine-video-1.5-preview&amp;fmt=videos\"><code>grok-imagine-video-1.5-preview</code></a></span></p><h4>Menetelmäpolkujen aliakset</h4><p class=\"note-s\">Käytä yllä näytettyjä menetelmäpolkuja.</p><h4>Liittyvät kutsujan ID:t</h4><p class=\"note-s\"><a href=\"#m=grok-imagine-video-1.5-preview&amp;route=Core&amp;caller=grok-imagine-video-1.5-preview&amp;fmt=videos\"><code>grok-imagine-video-1.5-preview</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "grok-imagine-video-1.5-preview",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos/generations",
        "request_model_id": "grok-imagine-video-1.5-preview",
        "route_label": "Core"
      },
      "method_key": "Core|videos|/v1/videos/generations|grok-imagine-video-1.5-preview",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain fullstatusJSON and actualrequest_id. Completedstatusdone carriesvideo.url withowned signedcontent; retain the actualduration andallactualreturnedresultfields.",
            "errors": [
              {
                "code": null,
                "condition": "Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Alkuperäisen tuloksen sisältö ei ole vielä saatavilla",
                "http_status": 409,
                "recovery": "Kysy tilaa alkuperäisellä palautetulla tunnisteella ja noudata Retry-After-otsaketta.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Palautettu vastaus ilmoittaa, että operaatio tai tulos edellyttää tarkistusta",
                "http_status": null,
                "recovery": "Säilytä alkuperäinen palautettu operaation tai tehtävän ID, pyynnön otsakkeet ja vastaus; jatka kyseisen alkuperäisen operaation tuettuja lukutoimintoja. Älä lähetä luontipyyntöä uudelleen.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos/generations"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Lue olemassa olevan alkuperäisen työn tietoja; älä koskaan lähetä tuntemattomaan tilaan jäänyttä pyyntöä uudelleen.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              },
              {
                "mode": "image_to_video",
                "optional": [
                  "prompt"
                ],
                "required": [
                  "image"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "videos"
            ],
            "outputs": {
              "all_results": "Säilytä koko tilan JSON ja todellinen request_id. Valmistunut vastaus, jossa status=done, sisältää video.url-kentässä käyttäjälle kuuluvan sisällön URL-osoitteen. Säilytä ilmoitettu kesto ja jokainen palautettu tuloskenttä.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "request_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "video.url",
                  "type": "owned signed content URL"
                },
                {
                  "description": null,
                  "name": "video.duration",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "video.respect_moderation",
                  "type": "boolean"
                }
              ],
              "format": "mp4"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "grok-imagine-video-1.5-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Älä anna samanaikaisesti duration- ja seconds-kenttää",
                "default": 1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "sekuntia"
              },
              {
                "alternative": "duration",
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "seconds",
                "required": false,
                "type": "integer|integer_string"
              },
              {
                "availability": "source_interface",
                "default": "480p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Jos kuvasyöte annetaan ja kuvasuhde jätetään pois, palveluntarjoaja perii kuvan kuvasuhteen",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "1:1",
                  "16:9",
                  "9:16",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "On vastattava resolution/aspect_ratio-arvoja, jos molemmat annetaan",
                "default": null,
                "default_known": false,
                "enum": [
                  "1280x720",
                  "720x1280",
                  "1920x1080",
                  "1080x1920"
                ],
                "enum_known": true,
                "name": "size",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Todellinen tuettu syötekuva; sallii kehotteen pois jättämisen",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "image",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mask",
              "input_reference",
              "stream=true",
              "n/countotherthan1"
            ]
          },
          "hints": [
            "Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos/generations"
          },
          "operation_modes": [
            "videos"
          ],
          "output": {
            "family": [
              "video"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"grok-imagine-video-1.5-preview\", \"prompt\": \"A person walks slowly through a quiet garden as the camera tracks from the side.\"}'",
            "label": "Create video · retained exact shape",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\"",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --output video.mp4",
            "label": "GET content",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Videot",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.01,
                "amount_unit": "usd_per_display_unit",
                "key": "image_input",
                "label": "per input image",
                "side": "in"
              },
              {
                "amount": 0.25,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_1080p_second",
                "label": "per second at 1080p",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_480p_second",
                "label": "per second at 480p",
                "side": "out"
              },
              {
                "amount": 0.14,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_720p_second",
                "label": "per second at 720p",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "grok-imagine-video-1.5-preview",
        "route_label": "Core",
        "status_reads": [
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "tool_prices": null,
        "unit": "conditional",
        "units": [
          {
            "key": "image_input",
            "label": "per input image",
            "side": "in",
            "usd": 0.01
          },
          {
            "key": "video_output_1080p_second",
            "label": "per second at 1080p",
            "side": "out",
            "usd": 0.25
          },
          {
            "key": "video_output_480p_second",
            "label": "per second at 480p",
            "side": "out",
            "usd": 0.08
          },
          {
            "key": "video_output_720p_second",
            "label": "per second at 720p",
            "side": "out",
            "usd": 0.14
          }
        ]
      }
    }
  ],
  "model_id": "grok-imagine-video-1.5-preview",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ce010779d826ebee72e71610c8cdba6c711f5b6ca352873db5258ef45b78d6b7",
    "input_html_sha256": "13c0d4cd928c594b46e4b9ca0e99bc28f0334e4825f26a3703b9ac8907ba35c1",
    "private_audit_sha256": "47a0bf7807749cf9f7b5395822f45e9869f6fe60be9df7697056034bdfdf9295",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/grok-imagine-video-1-5-preview/",
    "description": "Grok Imagine Video 1.5 luo tekstistä 1–15 sekunnin videoita, myös 1080p-tarkkuudella. Itse malli tukee kuvien animointia, visuaalisia viiteaineistoja, avainruutujen asettamista ja ääniraitaa.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/grok-imagine-video-1-5-preview/index.md",
    "title": "grok-imagine-video-1.5-preview — Ailoot",
    "url": "https://ailoot.ai/models/fi/grok-imagine-video-1-5-preview/"
  },
  "rawModel": {
    "about": "### Videonäkymän luominen\n\nGrok Imagine Video 1.5 on xAI:n malli videoiden generointiin tekstikuvauksesta ja visuaalisesta aineistosta. Ailootin nykyisessä menetelmässä on julkaistu tekstipohjainen videogenerointi; itse mallin lisätilat mahdollistavat kuvan animoinnin, viiteaineistojen käytön ja näkymän tukiruutujen määrittämisen.\n\nTulos luodaan asynkronisesti: tehtävän asettamisen jälkeen valmistumista tarkistetaan sen tunnuksella. xAI:n mukaan prosessi voi kestää useita minuutteja näkymän vaativuudesta, kestosta ja tarkkuudesta riippuen. Tehtävätunnuksen saaminen ei vielä tarkoita videon valmistumista.\n\n### Kesto, kuvasuhteet ja tarkkuus\n\nLuotava video kestää **1–15 sekuntia**. Valittavissa ovat `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2` ja `2:3`; tekstin oletusmuoto on `16:9`. Kuvan animoinnissa sen kuvasuhde säilyy oletuksena.\n\nTeksti- ja aloituskuvagenerointiin ovat saatavilla **480p, 720p ja 1080p**. Oletus on 480p; viiteaineistotila on rajattu 720p-tarkkuuteen. 1080p-tarkkuutta ei voi siirtää kaikkiin tiloihin vain siksi, että malli tukee sitä.\n\n### Ulkonäön ohjaus\n\nViiteaineistotilassa xAI vastaanottaa enintään **7 kuvaa**. Ne määrittävät ihmiset, esineet, vaatteet ja muut visuaaliset piirteet lukitsematta aloitusruutua. Tapa on tarkoitettu toistuvaa hahmoa sisältäviin näkymiin, tuote-esittelyyn ja halutun ulkonäön säilyttämiseen eri asetelmien välillä.\n\n### Ensimmäinen, viimeinen ja väliruudut\n\nVersio 1.5 mahdollistaa tarkan ensimmäisen ruudun, tarkan viimeisen ruudun tai molempien lukitsemisen. Jos vain viimeinen on määritetty, malli rakentaa alun itse ja etenee määritettyyn kuvaan. Kun molemmat rajat on annettu, se luo liikkeen niiden välille; tekstiohje voi täsmentää liikettä ja kameratyötä.\n\nVideon sisäistä kuvakäsikirjoitusta varten voidaan lukita enintään **4 avainruutua**. Kunkin ajan on oltava tiukasti alun jälkeen ja ennen loppua; sidonta tapahtuu **1/3 sekunnin** ruudukolla. Kaksi samaan ruudukkokohtaan pyöristyvää ruutua hylätään. Tämän välttämiseksi jätä niiden väliin vähintään 1/3 sekuntia. Ensimmäinen ja viimeinen ruutu määritetään erillään näistä neljästä väliruudusta.\n\nTukiruudut voidaan yhdistää visuaalisiin viiteaineistoihin ja esiasetettuihin ääniin. Jos vähintään yksi ruutu on lukittu, tekstikuvaus on valinnainen: kuvasarja itse määrittää näkymän. Avainruutuja ei voi käyttää videomuokkaustilan kanssa. Nämä xAI:n kyvyt eivät tarkoita niiden saatavuutta Ailootin julkaistussa tekstipohjaisessa videogeneroinnissa.\n\n### Ääni ja puheäänet\n\nLuotavassa videossa on oletuksena ääniraita; myös äänetön tulos on tarjolla. xAI:n ääniviitetilassa voidaan valita enintään **3 esiasetettua ääntä** ja yhdistää ne näkymän puhuviin osallistujiin.\n\nOman äänitiedoston lähettäminen ääninäytteeksi ei ole mallin yleinen kyky: xAI tarjoaa sen erikseen pyynnöstä. Esiasetettu ääni ja ladattu ääni ovat eri syötetyyppejä.\n\n### Toimintatilat\n\nTekstipohjainen videogenerointi luo uuden näkymän; aloituskuva määrittää sen alun; viiteaineistot ohjaavat ulkonäköä; lukitut ruudut määrittävät visuaaliset pisteet ajassa. Jokaisella tilalla on omat rajoituksensa, joten yhden tavan asetuksia ei voi siirtää toiseen ehdoitta.",
    "alias_of": null,
    "aliases": [],
    "author": "xAI",
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "grok-imagine-video-1.5-preview",
    "input": [
      "text"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Retain fullstatusJSON and actualrequest_id. Completedstatusdone carriesvideo.url withowned signedcontent; retain the actualduration andallactualreturnedresultfields.",
            "errors": [
              {
                "code": null,
                "condition": "Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Alkuperäisen tuloksen sisältö ei ole vielä saatavilla",
                "http_status": 409,
                "recovery": "Kysy tilaa alkuperäisellä palautetulla tunnisteella ja noudata Retry-After-otsaketta.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Palautettu vastaus ilmoittaa, että operaatio tai tulos edellyttää tarkistusta",
                "http_status": null,
                "recovery": "Säilytä alkuperäinen palautettu operaation tai tehtävän ID, pyynnön otsakkeet ja vastaus; jatka kyseisen alkuperäisen operaation tuettuja lukutoimintoja. Älä lähetä luontipyyntöä uudelleen.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos/generations"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "operation_id_is_not_task_id": true,
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Lue olemassa olevan alkuperäisen työn tietoja; älä koskaan lähetä tuntemattomaan tilaan jäänyttä pyyntöä uudelleen.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              },
              {
                "mode": "image_to_video",
                "optional": [
                  "prompt"
                ],
                "required": [
                  "image"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "videos"
            ],
            "outputs": {
              "all_results": "Säilytä koko tilan JSON ja todellinen request_id. Valmistunut vastaus, jossa status=done, sisältää video.url-kentässä käyttäjälle kuuluvan sisällön URL-osoitteen. Säilytä ilmoitettu kesto ja jokainen palautettu tuloskenttä.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "request_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "video.url",
                  "type": "owned signed content URL"
                },
                {
                  "description": null,
                  "name": "video.duration",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "video.respect_moderation",
                  "type": "boolean"
                }
              ],
              "format": "mp4"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "grok-imagine-video-1.5-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Älä anna samanaikaisesti duration- ja seconds-kenttää",
                "default": 1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "duration",
                "required": false,
                "type": "integer",
                "unit": "sekuntia"
              },
              {
                "alternative": "duration",
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 15,
                "minimum": 1,
                "name": "seconds",
                "required": false,
                "type": "integer|integer_string"
              },
              {
                "availability": "source_interface",
                "default": "480p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Jos kuvasyöte annetaan ja kuvasuhde jätetään pois, palveluntarjoaja perii kuvan kuvasuhteen",
                "default": "16:9",
                "default_known": true,
                "enum": [
                  "1:1",
                  "16:9",
                  "9:16",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "On vastattava resolution/aspect_ratio-arvoja, jos molemmat annetaan",
                "default": null,
                "default_known": false,
                "enum": [
                  "1280x720",
                  "720x1280",
                  "1920x1080",
                  "1080x1920"
                ],
                "enum_known": true,
                "name": "size",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Todellinen tuettu syötekuva; sallii kehotteen pois jättämisen",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "image",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mask",
              "input_reference",
              "stream=true",
              "n/countotherthan1"
            ]
          },
          "hints": [
            "Menetelmien rakenteet ja ID:t ovat täsmällisiä; toimittajan kyvykkyys on erillinen pyynnön hyväksymisestä."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "id_source": "only actual ID/path from creation/status",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos/generations"
          },
          "operation_modes": [
            "videos"
          ],
          "output": {
            "family": [
              "video"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl https://api.ailoot.ai/v1/videos/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"grok-imagine-video-1.5-preview\", \"prompt\": \"A person walks slowly through a quiet garden as the camera tracks from the side.\"}'",
            "label": "Create video · retained exact shape",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\"",
            "label": "GET status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}\"\nexport AILOOT_VIDEO_ID\nvideo_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ[\"AILOOT_VIDEO_ID\"], safe=\"\"))') || exit 1\ncurl \"https://api.ailoot.ai/v1/videos/generations/$video_id/content\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --output video.mp4",
            "label": "GET content",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Videot",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos/generations",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.01,
                "amount_unit": "usd_per_display_unit",
                "key": "image_input",
                "label": "per input image",
                "side": "in"
              },
              {
                "amount": 0.25,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_1080p_second",
                "label": "per second at 1080p",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_480p_second",
                "label": "per second at 480p",
                "side": "out"
              },
              {
                "amount": 0.14,
                "amount_unit": "usd_per_display_unit",
                "key": "video_output_720p_second",
                "label": "per second at 720p",
                "side": "out"
              }
            ]
          }
        ],
        "request_model_id": "grok-imagine-video-1.5-preview",
        "route_label": "Core",
        "status_reads": [
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "tool_prices": null,
        "unit": "conditional",
        "units": [
          {
            "key": "image_input",
            "label": "per input image",
            "side": "in",
            "usd": 0.01
          },
          {
            "key": "video_output_1080p_second",
            "label": "per second at 1080p",
            "side": "out",
            "usd": 0.25
          },
          {
            "key": "video_output_480p_second",
            "label": "per second at 480p",
            "side": "out",
            "usd": 0.08
          },
          {
            "key": "video_output_720p_second",
            "label": "per second at 720p",
            "side": "out",
            "usd": 0.14
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "grok-imagine-video-1.5-preview",
        "request_model_id": "grok-imagine-video-1.5-preview",
        "route_label": "Core"
      }
    ],
    "name": "grok-imagine-video-1.5-preview",
    "price": {
      "in": 0.01,
      "in_label": "per input image",
      "out": 0.08,
      "out_label": "per second at 480p",
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Grok Imagine Video 1.5 luo tekstistä 1–15 sekunnin videoita, myös 1080p-tarkkuudella. Itse malli tukee kuvien animointia, visuaalisia viiteaineistoja, avainruutujen asettamista ja ääniraitaa."
  },
  "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": "Grok Imagine Video 1.5 luo tekstistä 1–15 sekunnin videoita, myös 1080p-tarkkuudella. Itse malli tukee kuvien animointia, visuaalisia viiteaineistoja, avainruutujen asettamista ja ääniraitaa.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "05025b8ac51d29496df7749a7811ed16a2d2da4f16655a4d10a716cbb7cb4526",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "0ff139db75bf21715a3e78b6389aa95c27a0ff175e554467e601f6f15357e763"
}
