{
  "aboutHtml": "<p>FLUX Video Edit [fast] on Black Forest Labsin kehotteella ohjattu työnkulku olemassa olevan videon muuttamiseen. Se vastaanottaa yhden lähdeleikkeen ja muokkausta kuvaavan ohjeen ja palauttaa muokatun MP4:n. Lähde määrittää otoksen: sen kesto, rajaus, kameraliike ja ajoitus antavat lähtörakenteen. Tunnista kehotteella muutettava asia sen sijaan, että kirjoittaisit kokonaan uuden kohtauskuvauksen, jossa tarkoitettu muutos jää epäselväksi.</p><h4>Nimeä muutos ja sen sijainti</h4><p>Dokumentoidut muokkaukset sisältävät esineiden ja hahmojen poistamisen, lisäämisen tai korvaamisen, ympäristön uudelleenrakentamisen, leikkeen tyylin muuttamisen, näkyvän tekstin muuttamisen ja vuoropuhelun tai äänen muokkaamisen. Aloita kohteesta ja toiminnosta. Alkuperäinen ohje voisi poistaa laukun tuolilta säilyttäen istuvan henkilön ja huoneen tai korvata tavallisen mukin sinisellä emalimukilla muuttamatta käden toimintaa. Jos näkyvissä on useita samankaltaisia esineitä, erota kohde sijainnin, ulkoasun tai roolin perusteella.</p><p>Kuvaa lisäyksessä sijainti, mittakaava ja olennainen toiminta. Korkea punainen lamppu sohvan vieressä on täsmällisempi kuin määrittelemätön lisälamppu jossain otoksessa. Tunnista korvauksessa, mikä muuttuu miksi ja minkä liikkeen tai kosketuksen tulee säilyä. Valmistajan kehoteopas suosittelee lyhintä muutoksen kokonaan nimeävää ohjetta ja yksityiskohtien lisäämistä muokkauksen niitä vaatiessa. Säilytä lähteen piirteet tarkoituksella sen sijaan, että pyytäisit yleistä parannusta, jonka laajuutta ei voi arvioida.</p><h4>Ympäristöt, tyylit ja karkea animaatio</h4><p>Ympäristömuutos voi rakentaa näkyvän ympäristön uudelleen säilyttäen toiminnan. Valmistaja näyttää kiipeilypinnan korvaamisen toisella rakenteella ja uusien kosketuspisteiden määrittämisen, jotta hahmon käsillä ja jaloilla on edelleen mielekäs pinta. Kuvaa käytännön kohtauksessa muuttunut ympäristö ja geometria, johon olemassa oleva liike tukeutuu. Uutta taustaa on helpompi arvioida, kun alkuperäisellä toiminnalla on siihen selkeä suhde.</p><p>Opas näyttää myös karkean animaation muuttamisen viimeistellyksi visuaaliseksi käsittelyksi. Nimeä, mitkä asemointiesineet muuttuvat tarkoitetuiksi ajoneuvoiksi tai rekvisiitaksi, ja säilytä sitten niiden radat, nopeudet ja suhde kameraan. Kuvaa tyylinmuutoksessa syntyvät materiaalit, pinnat, valo ja heijastukset estetiikan lisäksi. Savimainen kohtaus ja valokuvamainen kohtaus tarvitsevat erilaiset näkyvät vihjeet saman toiminnan seuraamisestakin huolimatta.</p><p>Jatkomuokkaus voi käyttää ensimmäistä muokattua tulosta uutena lähteenään. Säilytä alkuperäinen ja jokainen valittu vaihe ja anna seuraavalle kierrokselle yksi selkeä tarkoitus. Dokumentoitu esimerkki vie karkean esikatselun viimeisteltyyn ympäristöön ja sitten uuteen valaistuskäsittelyyn. Vertaa jokaisen kierroksen jälkeen muokattua leikettä edelliseen lähteeseen ja tarkista säilytettäviksi tarkoitettujen piirteiden pysyminen.</p><h4>Vuoropuhelun täytyy mahtua olemassa olevaan aikaan</h4><p>Työnkulku kuljettaa lähdeäänen mukana, ellei ohje pyydä vuoropuhelun tai äänen muuttamista. Hiljainen lähde palauttaa hiljaisen tuloksen eikä siis anna olemassa olevaa puhetta muokattavaksi. Lainaa vuoropuhelumuokkauksessa tarkoitettu repliikki, tunnista puhuja ja sovita uudet sanat lähderepliikin käyttämään aikaan. Opas raportoi pidemmän korvaavan repliikin katkenneen käytettävissä olevan puhevälin ylittyessä. Useampien sanojen kirjoittaminen ei luo lisäpuheaikaa olemassa olevan otoksen sisälle.</p><p>Tarkista kuultava repliikki näkyvän esityksen rinnalla. Säilytä lähdesanamuoto ja tarkoitettu korvaus, jotta puuttuva sana, väärin ajoitettu ilmaus tai ei-toivottu äänimuutos voidaan tunnistaa. Hyödyllinen tulos on muokattu puhuttu hetki editoidussa kohtauksessa, ei oletettu uskollinen litterointi vain renderöinnin valmistumisen perusteella.</p><h4>Lähderajat ja peritty tuloste</h4><p>Tarkka valmistajaprofiili edellyttää videota ja muokkauskehotetta. Ohje on yhdestä 4 096 merkkiin ympäröivien välilyöntien poistamisen jälkeen. Leike annetaan URL:lla tai koodattuna MP4:nä, enimmäispituudeltaan viisitoista sekuntia ja syöterajaltaan viisikymmentä MiB. Kummankin sivun tulee olla vähintään 160 pikseliä, ja normalisoidun leikkeen tulee sisältää vähintään seitsemäntoista ruutua 24 fps:n nopeudella, noin seitsemän sekunnin kymmenesosaa. Ylipitkät lähteet hylätään hiljaisen leikkaamisen sijaan; liian pienet lähteet voivat epäonnistua käsittelyssä.</p><p>Dokumentoitu polku käyttää 24 fps:n käsittelyä ja seuraa lähteen pituutta sekä kuvasuhdetta. 720p-profiilin ylittävät syötteet pienennetään; valmistaja antaa esimerkin 1920×1088-lähteestä, joka palautuu koossa 1248×704. Kesto, tarkkuus ja kuvasuhde eivät ole itsenäisiä tulosteasetuksia tässä muokkausprofiilissa. Näytteistysresepti hoidetaan sisäisesti, eikä ilmoitettu pyyntösopimus hyväksy kenttiä kuten mode, version, seed tai generate_audio.</p><p>Vain liike- tai tyyli-inspiraationa uuteen generoituun otokseen käytetty video kuuluu eri työnkulkuun. Tämä editori ei hyväksy kuvaviitettä, pelkkää äänisyötettä, maskeja tai pyyntöä jatkaa leikettä. Valmistele varsinainen muutettava video ja säilytä sen valittu kesto ennen muokkauksen kirjoittamista. Asynkronisen käsittelyn jälkeen valmistaja palauttaa muokatun MP4:n väliaikaisella allekirjoitetulla toimituslinkillä, joka on voimassa noin tunnin. Tallenna tulos ja vertaa muutettua esinettä, ympäröiviä ruutuja, ajoitusta ja ääntä lähteeseen ennen leikkeen käyttöä pidemmässä editoinnissa.</p>",
  "aboutText": "FLUX Video Edit [fast] on Black Forest Labsin kehotteella ohjattu työnkulku olemassa olevan videon muuttamiseen. Se vastaanottaa yhden lähdeleikkeen ja muokkausta kuvaavan ohjeen ja palauttaa muokatun MP4:n. Lähde määrittää otoksen: sen kesto, rajaus, kameraliike ja ajoitus antavat lähtörakenteen. Tunnista kehotteella muutettava asia sen sijaan, että kirjoittaisit kokonaan uuden kohtauskuvauksen, jossa tarkoitettu muutos jää epäselväksi.\n\n### Nimeä muutos ja sen sijainti\n\nDokumentoidut muokkaukset sisältävät esineiden ja hahmojen poistamisen, lisäämisen tai korvaamisen, ympäristön uudelleenrakentamisen, leikkeen tyylin muuttamisen, näkyvän tekstin muuttamisen ja vuoropuhelun tai äänen muokkaamisen. Aloita kohteesta ja toiminnosta. Alkuperäinen ohje voisi poistaa laukun tuolilta säilyttäen istuvan henkilön ja huoneen tai korvata tavallisen mukin sinisellä emalimukilla muuttamatta käden toimintaa. Jos näkyvissä on useita samankaltaisia esineitä, erota kohde sijainnin, ulkoasun tai roolin perusteella.\n\nKuvaa lisäyksessä sijainti, mittakaava ja olennainen toiminta. Korkea punainen lamppu sohvan vieressä on täsmällisempi kuin määrittelemätön lisälamppu jossain otoksessa. Tunnista korvauksessa, mikä muuttuu miksi ja minkä liikkeen tai kosketuksen tulee säilyä. Valmistajan kehoteopas suosittelee lyhintä muutoksen kokonaan nimeävää ohjetta ja yksityiskohtien lisäämistä muokkauksen niitä vaatiessa. Säilytä lähteen piirteet tarkoituksella sen sijaan, että pyytäisit yleistä parannusta, jonka laajuutta ei voi arvioida.\n\n### Ympäristöt, tyylit ja karkea animaatio\n\nYmpäristömuutos voi rakentaa näkyvän ympäristön uudelleen säilyttäen toiminnan. Valmistaja näyttää kiipeilypinnan korvaamisen toisella rakenteella ja uusien kosketuspisteiden määrittämisen, jotta hahmon käsillä ja jaloilla on edelleen mielekäs pinta. Kuvaa käytännön kohtauksessa muuttunut ympäristö ja geometria, johon olemassa oleva liike tukeutuu. Uutta taustaa on helpompi arvioida, kun alkuperäisellä toiminnalla on siihen selkeä suhde.\n\nOpas näyttää myös karkean animaation muuttamisen viimeistellyksi visuaaliseksi käsittelyksi. Nimeä, mitkä asemointiesineet muuttuvat tarkoitetuiksi ajoneuvoiksi tai rekvisiitaksi, ja säilytä sitten niiden radat, nopeudet ja suhde kameraan. Kuvaa tyylinmuutoksessa syntyvät materiaalit, pinnat, valo ja heijastukset estetiikan lisäksi. Savimainen kohtaus ja valokuvamainen kohtaus tarvitsevat erilaiset näkyvät vihjeet saman toiminnan seuraamisestakin huolimatta.\n\nJatkomuokkaus voi käyttää ensimmäistä muokattua tulosta uutena lähteenään. Säilytä alkuperäinen ja jokainen valittu vaihe ja anna seuraavalle kierrokselle yksi selkeä tarkoitus. Dokumentoitu esimerkki vie karkean esikatselun viimeisteltyyn ympäristöön ja sitten uuteen valaistuskäsittelyyn. Vertaa jokaisen kierroksen jälkeen muokattua leikettä edelliseen lähteeseen ja tarkista säilytettäviksi tarkoitettujen piirteiden pysyminen.\n\n### Vuoropuhelun täytyy mahtua olemassa olevaan aikaan\n\nTyönkulku kuljettaa lähdeäänen mukana, ellei ohje pyydä vuoropuhelun tai äänen muuttamista. Hiljainen lähde palauttaa hiljaisen tuloksen eikä siis anna olemassa olevaa puhetta muokattavaksi. Lainaa vuoropuhelumuokkauksessa tarkoitettu repliikki, tunnista puhuja ja sovita uudet sanat lähderepliikin käyttämään aikaan. Opas raportoi pidemmän korvaavan repliikin katkenneen käytettävissä olevan puhevälin ylittyessä. Useampien sanojen kirjoittaminen ei luo lisäpuheaikaa olemassa olevan otoksen sisälle.\n\nTarkista kuultava repliikki näkyvän esityksen rinnalla. Säilytä lähdesanamuoto ja tarkoitettu korvaus, jotta puuttuva sana, väärin ajoitettu ilmaus tai ei-toivottu äänimuutos voidaan tunnistaa. Hyödyllinen tulos on muokattu puhuttu hetki editoidussa kohtauksessa, ei oletettu uskollinen litterointi vain renderöinnin valmistumisen perusteella.\n\n### Lähderajat ja peritty tuloste\n\nTarkka valmistajaprofiili edellyttää videota ja muokkauskehotetta. Ohje on yhdestä 4 096 merkkiin ympäröivien välilyöntien poistamisen jälkeen. Leike annetaan URL:lla tai koodattuna MP4:nä, enimmäispituudeltaan viisitoista sekuntia ja syöterajaltaan viisikymmentä MiB. Kummankin sivun tulee olla vähintään 160 pikseliä, ja normalisoidun leikkeen tulee sisältää vähintään seitsemäntoista ruutua 24 fps:n nopeudella, noin seitsemän sekunnin kymmenesosaa. Ylipitkät lähteet hylätään hiljaisen leikkaamisen sijaan; liian pienet lähteet voivat epäonnistua käsittelyssä.\n\nDokumentoitu polku käyttää 24 fps:n käsittelyä ja seuraa lähteen pituutta sekä kuvasuhdetta. 720p-profiilin ylittävät syötteet pienennetään; valmistaja antaa esimerkin 1920×1088-lähteestä, joka palautuu koossa 1248×704. Kesto, tarkkuus ja kuvasuhde eivät ole itsenäisiä tulosteasetuksia tässä muokkausprofiilissa. Näytteistysresepti hoidetaan sisäisesti, eikä ilmoitettu pyyntösopimus hyväksy kenttiä kuten mode, version, seed tai generate_audio.\n\nVain liike- tai tyyli-inspiraationa uuteen generoituun otokseen käytetty video kuuluu eri työnkulkuun. Tämä editori ei hyväksy kuvaviitettä, pelkkää äänisyötettä, maskeja tai pyyntöä jatkaa leikettä. Valmistele varsinainen muutettava video ja säilytä sen valittu kesto ennen muokkauksen kirjoittamista. Asynkronisen käsittelyn jälkeen valmistaja palauttaa muokatun MP4:n väliaikaisella allekirjoitetulla toimituslinkillä, joka on voimassa noin tunnin. Tallenna tulos ja vertaa muutettua esinettä, ympäröiviä ruutuja, ajoitusta ja ääntä lähteeseen ennen leikkeen käyttöä pidemmässä editoinnissa.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "b19bfc2d925c9ea67bb8de5bc779c1330f94d26d5d75344ba3c98322ca58840e",
    "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\">Black Forest Labs: FLUX Video Edit</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-video-edit</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|black-forest-labs%2Fflux-video-edit\">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\">FLUX Video Edit [fast] muuntaa olemassa olevan leikkeen kirjoitetulla muokkausohjeella. Lisää, poista tai korvaa elementtejä, muuta ympäristöä tai tyyliä ja muokkaa olemassa olevaa vuoropuhelua dokumentoitujen lähdepituus-, rajaus- ja äänirajoitusten puitteissa.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti · Kuvat · Ääni · Video</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>FLUX Video Edit [fast] on Black Forest Labsin kehotteella ohjattu työnkulku olemassa olevan videon muuttamiseen. Se vastaanottaa yhden lähdeleikkeen ja muokkausta kuvaavan ohjeen ja palauttaa muokatun MP4:n. Lähde määrittää otoksen: sen kesto, rajaus, kameraliike ja ajoitus antavat lähtörakenteen. Tunnista kehotteella muutettava asia sen sijaan, että kirjoittaisit kokonaan uuden kohtauskuvauksen, jossa tarkoitettu muutos jää epäselväksi.</p><h4>Nimeä muutos ja sen sijainti</h4><p>Dokumentoidut muokkaukset sisältävät esineiden ja hahmojen poistamisen, lisäämisen tai korvaamisen, ympäristön uudelleenrakentamisen, leikkeen tyylin muuttamisen, näkyvän tekstin muuttamisen ja vuoropuhelun tai äänen muokkaamisen. Aloita kohteesta ja toiminnosta. Alkuperäinen ohje voisi poistaa laukun tuolilta säilyttäen istuvan henkilön ja huoneen tai korvata tavallisen mukin sinisellä emalimukilla muuttamatta käden toimintaa. Jos näkyvissä on useita samankaltaisia esineitä, erota kohde sijainnin, ulkoasun tai roolin perusteella.</p><p>Kuvaa lisäyksessä sijainti, mittakaava ja olennainen toiminta. Korkea punainen lamppu sohvan vieressä on täsmällisempi kuin määrittelemätön lisälamppu jossain otoksessa. Tunnista korvauksessa, mikä muuttuu miksi ja minkä liikkeen tai kosketuksen tulee säilyä. Valmistajan kehoteopas suosittelee lyhintä muutoksen kokonaan nimeävää ohjetta ja yksityiskohtien lisäämistä muokkauksen niitä vaatiessa. Säilytä lähteen piirteet tarkoituksella sen sijaan, että pyytäisit yleistä parannusta, jonka laajuutta ei voi arvioida.</p><h4>Ympäristöt, tyylit ja karkea animaatio</h4><p>Ympäristömuutos voi rakentaa näkyvän ympäristön uudelleen säilyttäen toiminnan. Valmistaja näyttää kiipeilypinnan korvaamisen toisella rakenteella ja uusien kosketuspisteiden määrittämisen, jotta hahmon käsillä ja jaloilla on edelleen mielekäs pinta. Kuvaa käytännön kohtauksessa muuttunut ympäristö ja geometria, johon olemassa oleva liike tukeutuu. Uutta taustaa on helpompi arvioida, kun alkuperäisellä toiminnalla on siihen selkeä suhde.</p><p>Opas näyttää myös karkean animaation muuttamisen viimeistellyksi visuaaliseksi käsittelyksi. Nimeä, mitkä asemointiesineet muuttuvat tarkoitetuiksi ajoneuvoiksi tai rekvisiitaksi, ja säilytä sitten niiden radat, nopeudet ja suhde kameraan. Kuvaa tyylinmuutoksessa syntyvät materiaalit, pinnat, valo ja heijastukset estetiikan lisäksi. Savimainen kohtaus ja valokuvamainen kohtaus tarvitsevat erilaiset näkyvät vihjeet saman toiminnan seuraamisestakin huolimatta.</p><p>Jatkomuokkaus voi käyttää ensimmäistä muokattua tulosta uutena lähteenään. Säilytä alkuperäinen ja jokainen valittu vaihe ja anna seuraavalle kierrokselle yksi selkeä tarkoitus. Dokumentoitu esimerkki vie karkean esikatselun viimeisteltyyn ympäristöön ja sitten uuteen valaistuskäsittelyyn. Vertaa jokaisen kierroksen jälkeen muokattua leikettä edelliseen lähteeseen ja tarkista säilytettäviksi tarkoitettujen piirteiden pysyminen.</p><h4>Vuoropuhelun täytyy mahtua olemassa olevaan aikaan</h4><p>Työnkulku kuljettaa lähdeäänen mukana, ellei ohje pyydä vuoropuhelun tai äänen muuttamista. Hiljainen lähde palauttaa hiljaisen tuloksen eikä siis anna olemassa olevaa puhetta muokattavaksi. Lainaa vuoropuhelumuokkauksessa tarkoitettu repliikki, tunnista puhuja ja sovita uudet sanat lähderepliikin käyttämään aikaan. Opas raportoi pidemmän korvaavan repliikin katkenneen käytettävissä olevan puhevälin ylittyessä. Useampien sanojen kirjoittaminen ei luo lisäpuheaikaa olemassa olevan otoksen sisälle.</p><p>Tarkista kuultava repliikki näkyvän esityksen rinnalla. Säilytä lähdesanamuoto ja tarkoitettu korvaus, jotta puuttuva sana, väärin ajoitettu ilmaus tai ei-toivottu äänimuutos voidaan tunnistaa. Hyödyllinen tulos on muokattu puhuttu hetki editoidussa kohtauksessa, ei oletettu uskollinen litterointi vain renderöinnin valmistumisen perusteella.</p><h4>Lähderajat ja peritty tuloste</h4><p>Tarkka valmistajaprofiili edellyttää videota ja muokkauskehotetta. Ohje on yhdestä 4 096 merkkiin ympäröivien välilyöntien poistamisen jälkeen. Leike annetaan URL:lla tai koodattuna MP4:nä, enimmäispituudeltaan viisitoista sekuntia ja syöterajaltaan viisikymmentä MiB. Kummankin sivun tulee olla vähintään 160 pikseliä, ja normalisoidun leikkeen tulee sisältää vähintään seitsemäntoista ruutua 24 fps:n nopeudella, noin seitsemän sekunnin kymmenesosaa. Ylipitkät lähteet hylätään hiljaisen leikkaamisen sijaan; liian pienet lähteet voivat epäonnistua käsittelyssä.</p><p>Dokumentoitu polku käyttää 24 fps:n käsittelyä ja seuraa lähteen pituutta sekä kuvasuhdetta. 720p-profiilin ylittävät syötteet pienennetään; valmistaja antaa esimerkin 1920×1088-lähteestä, joka palautuu koossa 1248×704. Kesto, tarkkuus ja kuvasuhde eivät ole itsenäisiä tulosteasetuksia tässä muokkausprofiilissa. Näytteistysresepti hoidetaan sisäisesti, eikä ilmoitettu pyyntösopimus hyväksy kenttiä kuten mode, version, seed tai generate_audio.</p><p>Vain liike- tai tyyli-inspiraationa uuteen generoituun otokseen käytetty video kuuluu eri työnkulkuun. Tämä editori ei hyväksy kuvaviitettä, pelkkää äänisyötettä, maskeja tai pyyntöä jatkaa leikettä. Valmistele varsinainen muutettava video ja säilytä sen valittu kesto ennen muokkauksen kirjoittamista. Asynkronisen käsittelyn jälkeen valmistaja palauttaa muokatun MP4:n väliaikaisella allekirjoitetulla toimituslinkillä, joka on voimassa noin tunnin. Tallenna tulos ja vertaa muutettua esinettä, ympäröiviä ruutuja, ajoitusta ja ääntä lähteeseen ennen leikkeen käyttöä pidemmässä editoinnissa.</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 · Videot</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</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>black-forest-labs/flux-video-edit</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\">input_references</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>array</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>Kohteiden vähimmäismäärä: 1</div><div>Kohteiden enimmäismäärä: 1</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>Vähimmäispituus: 1</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, input_references, 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, audio, video</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>material_conditions</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>Käytä täsmälleen yhtä todellista valmistuneen, käyttäjälle kuuluvan videoaineiston sisällön URL-osoitetta palautettuine allekirjoituksineen. Aineiston omistajan, tyypin ja tallennettujen tavujen todistuksen on vastattava pyyntöä.</td></tr></tbody></table></div><p>Elinkaari: <code>asynchronous_job_then_owned_outputs</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code> · todellinen palautettu id tai polling_url</p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</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>Laskutusyksikkö</th><th>Laskutusehdot</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=\"Laskutusyksikkö\"><span class=\"card-cell-label\">Laskutusyksikkö</span>—</td><td data-cell-label=\"Laskutusehdot\"><span class=\"card-cell-label\">Laskutusehdot</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>Videon hinta</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>—</td><td data-cell-label=\"Laskutusyksikkö\"><span class=\"card-cell-label\">Laskutusyksikkö</span>videosekuntia kohden</td><td data-cell-label=\"Laskutusehdot\"><span class=\"card-cell-label\">Laskutusehdot</span>Tässä hinnoitteluavaimessa ei ole ilmoitettu lisäehtoa.</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Tuloste · Videon hinta · Arvio vain vertailua varten</span> <b>$0.06</b> <span class=\"price-unit\">videosekuntia kohden</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=\"Laskutusyksikkö\"><span class=\"card-cell-label\">Laskutusyksikkö</span>—</td><td data-cell-label=\"Laskutusehdot\"><span class=\"card-cell-label\">Laskutusehdot</span>—</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.06</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 · 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-1095-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1095-panel-0\" aria-selected=\"true\" tabindex=\"0\">Käytä todellista syötettä ja säilytä koko tulos</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-1095-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1095-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_REFERENCES_JSON\n: &quot;${AILOOT_PROMPT:?Set the actual documented input value}&quot;\nexport AILOOT_PROMPT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;black-forest-labs/flux-video-edit&#39;, &#39;input_references&#39;: &#39;${ACTUAL_OWNED_INPUT_REFERENCES}&#39;, &#39;prompt&#39;: &#39;${ACTUAL_EDIT_PROMPT}&#39;}\nrequest[&#39;input_references&#39;]=json.loads(os.environ[&#39;AILOOT_INPUT_REFERENCES_JSON&#39;])\nrequest[&#39;prompt&#39;]=os.environ[&#39;AILOOT_PROMPT&#39;]\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\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 · Videot</h4><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li></ul><h5>Tallenna kaikki valmistuneet aineistot</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-1096-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1096-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET kaikki valmistuneet aineistot</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-1096-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1096-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}&quot;\nexport AILOOT_STATUS_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[&quot;AILOOT_STATUS_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose the actual completed status file&quot;)\nr=json.loads(f.read_text())\nif r.get(&quot;status&quot;)!=&quot;completed&quot; or not isinstance(r.get(&quot;data&quot;),list) or not r[&quot;data&quot;]:raise SystemExit(&quot;Wait for a completed status with asset paths&quot;)\nurls=[]\nfor x in r[&quot;data&quot;]:\n    if not isinstance(x,str) or &quot;\\n&quot; in x or &quot;\\r&quot; in x:raise SystemExit(&quot;Invalid asset path&quot;)\n    u=urljoin(&quot;https://api.ailoot.ai&quot;,x)\n    z=urlsplit(u)\n    if z.scheme!=&quot;https&quot; or z.netloc!=&quot;api.ailoot.ai&quot; or z.username or z.password:raise SystemExit(&quot;Use the actual Ailoot asset paths from status&quot;)\n    urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; \\\n    -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o &quot;video-${index}.mp4&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div><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, jokainen todellinen tuloste, alkuperäiset palautetut tunnisteet ja kaikki käyttötietokentät. Selvitä alkuperäisen operaation tila lähettämättä luontipyyntöä uudelleen.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jos alkuperäinen vastaus on tarkistettava</h5><p class=\"note-s\">Säilytä X-Client-Request-ID, X-Ailoot-Task-Id ja todellinen palautettu id/polling_url. Jatka alkuperäistä työtä; älä lähetä luontipyyntöä 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\">id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span></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></td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span></td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">outputs[]</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span></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=black-forest-labs%2Fflux-video-edit&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-edit&amp;fmt=videos\"><code>black-forest-labs/flux-video-edit</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=black-forest-labs%2Fflux-video-edit&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-video-edit&amp;fmt=videos\"><code>black-forest-labs/flux-video-edit</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-video-edit",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|black-forest-labs%2Fflux-video-edit",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "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ä.",
          "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, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "Säilytä X-Client-Request-ID, X-Ailoot-Task-Id ja todellinen palautettu id/polling_url. Jatka alkuperäistä työtä; älä lähetä luontipyyntöä uudelleen."
            },
            "outputs": {
              "all_results": "Säilytä koko vastaus ja otsakkeet, jokainen todellinen tuloste, alkuperäiset palautetut tunnisteet ja kaikki käyttötietokentät. Selvitä alkuperäisen operaation tila lähettämättä luontipyyntöä uudelleen.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-edit"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "max_length": 4096,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-edit"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 4096,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-edit",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Käytä täsmälleen yhtä todellista valmistuneen, käyttäjälle kuuluvan videoaineiston sisällön URL-osoitetta palautettuine allekirjoituksineen. Aineiston omistajan, tyypin ja tallennettujen tavujen todistuksen on vastattava pyyntöä."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "todellinen palautettu id tai polling_url",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": 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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "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.06",
                "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.06",
                "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}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-edit', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "Videot",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "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.06",
                "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.06",
                "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": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{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.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.06",
            "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.06",
            "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": "black-forest-labs/flux-video-edit",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "6827322ec06c804841712ccf1d0ca877393561d4989b7b6888e96675939f87da",
    "input_html_sha256": "b62a03a13fd3ecb07898a73d852273caa7d71916f184048bf49c79f3db9fcc4c",
    "private_audit_sha256": "22dba3f6d51fc91f663889b6b3cdfba0aefdf2bcdf54b797044f22925a1231cf",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/black-forest-labs-flux-video-edit/",
    "description": "FLUX Video Edit [fast] muuntaa olemassa olevan leikkeen kirjoitetulla muokkausohjeella. Lisää, poista tai korvaa elementtejä, muuta ympäristöä tai tyyliä ja muokkaa olemassa olevaa vuoropuhelua dokumentoitujen lähdepituus-, rajaus- ja äänirajoitusten puitteissa.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/black-forest-labs-flux-video-edit/index.md",
    "title": "Black Forest Labs: FLUX Video Edit — Ailoot",
    "url": "https://ailoot.ai/models/fi/black-forest-labs-flux-video-edit/"
  },
  "rawModel": {
    "about": "FLUX Video Edit [fast] on Black Forest Labsin kehotteella ohjattu työnkulku olemassa olevan videon muuttamiseen. Se vastaanottaa yhden lähdeleikkeen ja muokkausta kuvaavan ohjeen ja palauttaa muokatun MP4:n. Lähde määrittää otoksen: sen kesto, rajaus, kameraliike ja ajoitus antavat lähtörakenteen. Tunnista kehotteella muutettava asia sen sijaan, että kirjoittaisit kokonaan uuden kohtauskuvauksen, jossa tarkoitettu muutos jää epäselväksi.\n\n### Nimeä muutos ja sen sijainti\n\nDokumentoidut muokkaukset sisältävät esineiden ja hahmojen poistamisen, lisäämisen tai korvaamisen, ympäristön uudelleenrakentamisen, leikkeen tyylin muuttamisen, näkyvän tekstin muuttamisen ja vuoropuhelun tai äänen muokkaamisen. Aloita kohteesta ja toiminnosta. Alkuperäinen ohje voisi poistaa laukun tuolilta säilyttäen istuvan henkilön ja huoneen tai korvata tavallisen mukin sinisellä emalimukilla muuttamatta käden toimintaa. Jos näkyvissä on useita samankaltaisia esineitä, erota kohde sijainnin, ulkoasun tai roolin perusteella.\n\nKuvaa lisäyksessä sijainti, mittakaava ja olennainen toiminta. Korkea punainen lamppu sohvan vieressä on täsmällisempi kuin määrittelemätön lisälamppu jossain otoksessa. Tunnista korvauksessa, mikä muuttuu miksi ja minkä liikkeen tai kosketuksen tulee säilyä. Valmistajan kehoteopas suosittelee lyhintä muutoksen kokonaan nimeävää ohjetta ja yksityiskohtien lisäämistä muokkauksen niitä vaatiessa. Säilytä lähteen piirteet tarkoituksella sen sijaan, että pyytäisit yleistä parannusta, jonka laajuutta ei voi arvioida.\n\n### Ympäristöt, tyylit ja karkea animaatio\n\nYmpäristömuutos voi rakentaa näkyvän ympäristön uudelleen säilyttäen toiminnan. Valmistaja näyttää kiipeilypinnan korvaamisen toisella rakenteella ja uusien kosketuspisteiden määrittämisen, jotta hahmon käsillä ja jaloilla on edelleen mielekäs pinta. Kuvaa käytännön kohtauksessa muuttunut ympäristö ja geometria, johon olemassa oleva liike tukeutuu. Uutta taustaa on helpompi arvioida, kun alkuperäisellä toiminnalla on siihen selkeä suhde.\n\nOpas näyttää myös karkean animaation muuttamisen viimeistellyksi visuaaliseksi käsittelyksi. Nimeä, mitkä asemointiesineet muuttuvat tarkoitetuiksi ajoneuvoiksi tai rekvisiitaksi, ja säilytä sitten niiden radat, nopeudet ja suhde kameraan. Kuvaa tyylinmuutoksessa syntyvät materiaalit, pinnat, valo ja heijastukset estetiikan lisäksi. Savimainen kohtaus ja valokuvamainen kohtaus tarvitsevat erilaiset näkyvät vihjeet saman toiminnan seuraamisestakin huolimatta.\n\nJatkomuokkaus voi käyttää ensimmäistä muokattua tulosta uutena lähteenään. Säilytä alkuperäinen ja jokainen valittu vaihe ja anna seuraavalle kierrokselle yksi selkeä tarkoitus. Dokumentoitu esimerkki vie karkean esikatselun viimeisteltyyn ympäristöön ja sitten uuteen valaistuskäsittelyyn. Vertaa jokaisen kierroksen jälkeen muokattua leikettä edelliseen lähteeseen ja tarkista säilytettäviksi tarkoitettujen piirteiden pysyminen.\n\n### Vuoropuhelun täytyy mahtua olemassa olevaan aikaan\n\nTyönkulku kuljettaa lähdeäänen mukana, ellei ohje pyydä vuoropuhelun tai äänen muuttamista. Hiljainen lähde palauttaa hiljaisen tuloksen eikä siis anna olemassa olevaa puhetta muokattavaksi. Lainaa vuoropuhelumuokkauksessa tarkoitettu repliikki, tunnista puhuja ja sovita uudet sanat lähderepliikin käyttämään aikaan. Opas raportoi pidemmän korvaavan repliikin katkenneen käytettävissä olevan puhevälin ylittyessä. Useampien sanojen kirjoittaminen ei luo lisäpuheaikaa olemassa olevan otoksen sisälle.\n\nTarkista kuultava repliikki näkyvän esityksen rinnalla. Säilytä lähdesanamuoto ja tarkoitettu korvaus, jotta puuttuva sana, väärin ajoitettu ilmaus tai ei-toivottu äänimuutos voidaan tunnistaa. Hyödyllinen tulos on muokattu puhuttu hetki editoidussa kohtauksessa, ei oletettu uskollinen litterointi vain renderöinnin valmistumisen perusteella.\n\n### Lähderajat ja peritty tuloste\n\nTarkka valmistajaprofiili edellyttää videota ja muokkauskehotetta. Ohje on yhdestä 4 096 merkkiin ympäröivien välilyöntien poistamisen jälkeen. Leike annetaan URL:lla tai koodattuna MP4:nä, enimmäispituudeltaan viisitoista sekuntia ja syöterajaltaan viisikymmentä MiB. Kummankin sivun tulee olla vähintään 160 pikseliä, ja normalisoidun leikkeen tulee sisältää vähintään seitsemäntoista ruutua 24 fps:n nopeudella, noin seitsemän sekunnin kymmenesosaa. Ylipitkät lähteet hylätään hiljaisen leikkaamisen sijaan; liian pienet lähteet voivat epäonnistua käsittelyssä.\n\nDokumentoitu polku käyttää 24 fps:n käsittelyä ja seuraa lähteen pituutta sekä kuvasuhdetta. 720p-profiilin ylittävät syötteet pienennetään; valmistaja antaa esimerkin 1920×1088-lähteestä, joka palautuu koossa 1248×704. Kesto, tarkkuus ja kuvasuhde eivät ole itsenäisiä tulosteasetuksia tässä muokkausprofiilissa. Näytteistysresepti hoidetaan sisäisesti, eikä ilmoitettu pyyntösopimus hyväksy kenttiä kuten mode, version, seed tai generate_audio.\n\nVain liike- tai tyyli-inspiraationa uuteen generoituun otokseen käytetty video kuuluu eri työnkulkuun. Tämä editori ei hyväksy kuvaviitettä, pelkkää äänisyötettä, maskeja tai pyyntöä jatkaa leikettä. Valmistele varsinainen muutettava video ja säilytä sen valittu kesto ennen muokkauksen kirjoittamista. Asynkronisen käsittelyn jälkeen valmistaja palauttaa muokatun MP4:n väliaikaisella allekirjoitetulla toimituslinkillä, joka on voimassa noin tunnin. Tallenna tulos ja vertaa muutettua esinettä, ympäröiviä ruutuja, ajoitusta ja ääntä lähteeseen ennen leikkeen käyttöä pidemmässä editoinnissa.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "video"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.06",
            "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.06",
            "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,
    "formats": [
      "videos"
    ],
    "id": "black-forest-labs/flux-video-edit",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "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ä.",
          "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, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "Säilytä X-Client-Request-ID, X-Ailoot-Task-Id ja todellinen palautettu id/polling_url. Jatka alkuperäistä työtä; älä lähetä luontipyyntöä uudelleen."
            },
            "outputs": {
              "all_results": "Säilytä koko vastaus ja otsakkeet, jokainen todellinen tuloste, alkuperäiset palautetut tunnisteet ja kaikki käyttötietokentät. Selvitä alkuperäisen operaation tila lähettämättä luontipyyntöä uudelleen.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-video-edit"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "type": {
                      "const": "video_url"
                    },
                    "video_url": {
                      "additionalProperties": false,
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "video_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 1,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "max_length": 4096,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "type": {
                        "const": "video_url"
                      },
                      "video_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "type",
                      "video_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-video-edit"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 4096,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "black-forest-labs/flux-video-edit",
                "prompt": "${ACTUAL_EDIT_PROMPT}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Käytä täsmälleen yhtä todellista valmistuneen, käyttäjälle kuuluvan videoaineiston sisällön URL-osoitetta palautettuine allekirjoituksineen. Aineiston omistajan, tyypin ja tallennettujen tavujen todistuksen on vastattava pyyntöä."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references",
              "prompt"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "todellinen palautettu id tai polling_url",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": 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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "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.06",
                "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.06",
                "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}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\n: \"${AILOOT_PROMPT:?Set the actual documented input value}\"\nexport AILOOT_PROMPT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'black-forest-labs/flux-video-edit', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}', 'prompt': '${ACTUAL_EDIT_PROMPT}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nrequest['prompt']=os.environ['AILOOT_PROMPT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    z=urlsplit(u)\n    if z.scheme!=\"https\" or z.netloc!=\"api.ailoot.ai\" or z.username or z.password:raise SystemExit(\"Use the actual Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "Videot",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.06",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "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.06",
                "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.06",
                "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": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{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.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.06",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.06",
            "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.06",
            "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": "black-forest-labs/flux-video-edit",
        "request_model_id": "black-forest-labs/flux-video-edit",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX Video Edit",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.06,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.06,
      "varies": false
    },
    "short": "FLUX Video Edit [fast] muuntaa olemassa olevan leikkeen kirjoitetulla muokkausohjeella. Lisää, poista tai korvaa elementtejä, muuta ympäristöä tai tyyliä ja muokkaa olemassa olevaa vuoropuhelua dokumentoitujen lähdepituus-, rajaus- ja äänirajoitusten puitteissa."
  },
  "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": "FLUX Video Edit [fast] muuntaa olemassa olevan leikkeen kirjoitetulla muokkausohjeella. Lisää, poista tai korvaa elementtejä, muuta ympäristöä tai tyyliä ja muokkaa olemassa olevaa vuoropuhelua dokumentoitujen lähdepituus-, rajaus- ja äänirajoitusten puitteissa.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "0cadec33be6df5f95bae440ff08ab5c459386f622ff246a44e40c299b54f45a6",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "ed834f047d0d0f5d5a17abbc81ef305cdb58153ec435ff5a0702615bf224732c"
}
