{
  "aboutHtml": "<p>FLUX 3 Video is het multimodale model van Black Forest Labs voor het genereren van video met gesynchroniseerde audio. Het creëert scènes op basis van een tekstbriefing, bouwt beweging rond vastgezette beelden of zet een bestaande clip voort. Spraak, effecten en sfeer kunnen samen met de frames worden gegenereerd, als ondersteuning voor een korte scène waarin camerabeweging, actie en geluid als één reeks zijn ontworpen.</p><p>Beschrijf voor tekst-naar-video het onderwerp, de omgeving, zichtbare actie, cameragedrag en geluid. Een bruikbare productscène kan beginnen met een ruim beeld, naar een materiaaldetail bewegen en eindigen op het product in gebruik. Briefings met meerdere shots kunnen elk shot en de overgang tussen camerahoeken benoemen, met behoud van het onderwerp en de visuele stijl in de hele reeks. Typografie kan in de scène verschijnen, dus lever de exacte woorden en hun plaatsing aan wanneer een bord of titel belangrijk is. Het model omvat liveaction, animatie, motion graphics en gestileerde beelden.</p><p>Beeld-naar-video gebruikt één tot tien keyframebeelden. Eén beeld legt het openingsframe vast; een paar zet het begin en einde vast, terwijl geordende beelden met tijdsaanduidingen specifieke momenten in de clip sturen. Deze beelden worden frames van de video en dienen niet alleen als algemene stijlreferenties. Bij drie of meer beelden zonder tijdsaanduidingen vereist de producent een expliciete duur: het eerste en laatste zetten de eindpunten vast en de overige worden gelijkmatig daartussen geplaatst. Frames met tijdsaanduidingen moeten in tijdsvolgorde staan; automatische duur loopt tot de laatste tijdsaanduiding, naar boven afgerond, binnen het maximum van 20 seconden. Bereid keyframes met compatibele onderwerpen, kadrering en visuele details voor en beschrijf vervolgens de beweging ertussen. Voor een productonthulling kan het eerste frame het gesloten object tonen en het laatste de geopende opstelling, met de tussenliggende actie vastgelegd in de prompt.</p><p>Videovoortzetting gaat verder vanaf de laatste frames van de aangeleverde clip. De lanceringsworkflow gebruikt maximaal vier seconden bestaande video en audio als context voor de volgende actie en neemt cameragedrag, beweging en geluid over de aansluiting heen mee. Kies een broneinde dat duidelijk vastlegt waar onderwerp en camera naartoe gaan en beschrijf wat daarna gebeurt. Voortzetting is anders dan het herschrijven van een bestaand shot: FLUX Video Edit is een afzonderlijk bewerkingsmodel en wordt geen onderdeel van het generatiemodel alleen omdat beide video accepteren.</p><p>Tekst- en beeldgestuurde generatie ondersteunen clips van 5 tot 20 seconden. Het modusgebonden overzicht geeft videovoortzetting een uitvoerbereik van 5–15 seconden. Duur en beeldverhouding kunnen automatisch worden gekozen of de briefing kan een ondersteunde liggende, vierkante of staande vorm specificeren, waaronder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 en 9:21. De uitvoer heeft 24 frames per seconde. Kies de duur rond een klein aantal zichtbare acties in plaats van te proberen een heel verhaal in één korte generatie te passen.</p><p>HD-uitvoer komt rechtstreeks uit de generatie; FHD, QHD en UHD werken dezelfde scène af met een video-upsampler. Voor 16:9 zijn de geleverde afmetingen respectievelijk 1280 × 704, 1920 × 1088, 2560 × 1440 en 3840 × 2176. Afmetingen zijn uitgelijnd op veelvouden van 32, dus een benoemde resolutieklasse kan afwijken van een conventionele leveringsgrootte. Snijd het voltooide frame bij wanneer een exact standaardformaat nodig is en behoud de belangrijke inhoud aan de randen. De hogere resolutie is een afwerkingsstap en geen andere interpretatie van het shot.</p><p>Native audio is standaard ingeschakeld en kan voor een stille clip worden uitgeschakeld. Citeer voor dialoog de regel, identificeer de spreker en beschrijf de voordracht; meertalige spraak, accenten en lipsynchronisatie maken deel uit van de audio-videomogelijkheden van het model. Houd dialoog- en geluidsaanwijzingen verbonden met de zichtbare gebeurtenis, zoals een deksel dat sluit of voetstappen die weggaan. Controleer stem, timing en gesproken formulering samen met het beeld in plaats van geluid als een losstaande laag te behandelen die na de generatie wordt toegevoegd.</p><p>Draft-modus produceert een HD-preview en een draft bundle. Waardeer de geselecteerde bundle op om die generatie op volledige kwaliteit te renderen; dezelfde prompt als een nieuw verzoek voor een volledige render verzenden is een nieuwe interpretatie en kan een andere take opleveren. Drafts gebruiken alleen HD, terwijl opwaardering de vier resolutieklassen kan selecteren en standaard FHD gebruikt. Dit levert een praktische reeks op waarin eerst actie en compositie worden verkend en daarna de gekozen take op de bedoelde leveringsgrootte wordt afgewerkt.</p><p>De workflow van de producent geeft een taak-ID terug voordat de MP4 klaar is en levert daarna de voltooide clip wanneer de verwerking is afgerond. Ondertekende resultaatlocaties verlopen na ongeveer twee uur, dus bewaar het daadwerkelijke bestand zodra het shot is geselecteerd. Controleer de keyframeovergangen, cuts, typografie, onderwerpdetails en audioaansluiting aan de hand van de briefing. Bewaar voor een langere reeks de referenties en eindcontext van het geslaagde shot als invoer voor de volgende clip, in plaats van aan te nemen dat één kort verzoek de hele productie bevat.</p>",
  "aboutText": "FLUX 3 Video is het multimodale model van Black Forest Labs voor het genereren van video met gesynchroniseerde audio. Het creëert scènes op basis van een tekstbriefing, bouwt beweging rond vastgezette beelden of zet een bestaande clip voort. Spraak, effecten en sfeer kunnen samen met de frames worden gegenereerd, als ondersteuning voor een korte scène waarin camerabeweging, actie en geluid als één reeks zijn ontworpen.\n\nBeschrijf voor tekst-naar-video het onderwerp, de omgeving, zichtbare actie, cameragedrag en geluid. Een bruikbare productscène kan beginnen met een ruim beeld, naar een materiaaldetail bewegen en eindigen op het product in gebruik. Briefings met meerdere shots kunnen elk shot en de overgang tussen camerahoeken benoemen, met behoud van het onderwerp en de visuele stijl in de hele reeks. Typografie kan in de scène verschijnen, dus lever de exacte woorden en hun plaatsing aan wanneer een bord of titel belangrijk is. Het model omvat liveaction, animatie, motion graphics en gestileerde beelden.\n\nBeeld-naar-video gebruikt één tot tien keyframebeelden. Eén beeld legt het openingsframe vast; een paar zet het begin en einde vast, terwijl geordende beelden met tijdsaanduidingen specifieke momenten in de clip sturen. Deze beelden worden frames van de video en dienen niet alleen als algemene stijlreferenties. Bij drie of meer beelden zonder tijdsaanduidingen vereist de producent een expliciete duur: het eerste en laatste zetten de eindpunten vast en de overige worden gelijkmatig daartussen geplaatst. Frames met tijdsaanduidingen moeten in tijdsvolgorde staan; automatische duur loopt tot de laatste tijdsaanduiding, naar boven afgerond, binnen het maximum van 20 seconden. Bereid keyframes met compatibele onderwerpen, kadrering en visuele details voor en beschrijf vervolgens de beweging ertussen. Voor een productonthulling kan het eerste frame het gesloten object tonen en het laatste de geopende opstelling, met de tussenliggende actie vastgelegd in de prompt.\n\nVideovoortzetting gaat verder vanaf de laatste frames van de aangeleverde clip. De lanceringsworkflow gebruikt maximaal vier seconden bestaande video en audio als context voor de volgende actie en neemt cameragedrag, beweging en geluid over de aansluiting heen mee. Kies een broneinde dat duidelijk vastlegt waar onderwerp en camera naartoe gaan en beschrijf wat daarna gebeurt. Voortzetting is anders dan het herschrijven van een bestaand shot: FLUX Video Edit is een afzonderlijk bewerkingsmodel en wordt geen onderdeel van het generatiemodel alleen omdat beide video accepteren.\n\nTekst- en beeldgestuurde generatie ondersteunen clips van 5 tot 20 seconden. Het modusgebonden overzicht geeft videovoortzetting een uitvoerbereik van 5–15 seconden. Duur en beeldverhouding kunnen automatisch worden gekozen of de briefing kan een ondersteunde liggende, vierkante of staande vorm specificeren, waaronder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 en 9:21. De uitvoer heeft 24 frames per seconde. Kies de duur rond een klein aantal zichtbare acties in plaats van te proberen een heel verhaal in één korte generatie te passen.\n\nHD-uitvoer komt rechtstreeks uit de generatie; FHD, QHD en UHD werken dezelfde scène af met een video-upsampler. Voor 16:9 zijn de geleverde afmetingen respectievelijk 1280 × 704, 1920 × 1088, 2560 × 1440 en 3840 × 2176. Afmetingen zijn uitgelijnd op veelvouden van 32, dus een benoemde resolutieklasse kan afwijken van een conventionele leveringsgrootte. Snijd het voltooide frame bij wanneer een exact standaardformaat nodig is en behoud de belangrijke inhoud aan de randen. De hogere resolutie is een afwerkingsstap en geen andere interpretatie van het shot.\n\nNative audio is standaard ingeschakeld en kan voor een stille clip worden uitgeschakeld. Citeer voor dialoog de regel, identificeer de spreker en beschrijf de voordracht; meertalige spraak, accenten en lipsynchronisatie maken deel uit van de audio-videomogelijkheden van het model. Houd dialoog- en geluidsaanwijzingen verbonden met de zichtbare gebeurtenis, zoals een deksel dat sluit of voetstappen die weggaan. Controleer stem, timing en gesproken formulering samen met het beeld in plaats van geluid als een losstaande laag te behandelen die na de generatie wordt toegevoegd.\n\nDraft-modus produceert een HD-preview en een draft bundle. Waardeer de geselecteerde bundle op om die generatie op volledige kwaliteit te renderen; dezelfde prompt als een nieuw verzoek voor een volledige render verzenden is een nieuwe interpretatie en kan een andere take opleveren. Drafts gebruiken alleen HD, terwijl opwaardering de vier resolutieklassen kan selecteren en standaard FHD gebruikt. Dit levert een praktische reeks op waarin eerst actie en compositie worden verkend en daarna de gekozen take op de bedoelde leveringsgrootte wordt afgewerkt.\n\nDe workflow van de producent geeft een taak-ID terug voordat de MP4 klaar is en levert daarna de voltooide clip wanneer de verwerking is afgerond. Ondertekende resultaatlocaties verlopen na ongeveer twee uur, dus bewaar het daadwerkelijke bestand zodra het shot is geselecteerd. Controleer de keyframeovergangen, cuts, typografie, onderwerpdetails en audioaansluiting aan de hand van de briefing. Bewaar voor een langere reeks de referenties en eindcontext van het geslaagde shot als invoer voor de volgende clip, in plaats van aan te nemen dat één kort verzoek de hele productie bevat.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "21a73c1acd3bea2786c9419b8cb4b5a123941dd237ab6cca0dead4c7a0ded0df",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nl-be",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Black Forest Labs: FLUX.3 Video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sluiten\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-3-video</code><button type=\"button\" id=\"copy-id\">ID kopiëren</button></div><nav class=\"card-jump-nav\" aria-label=\"Onderdelen van de modelkaart\"><button type=\"button\" data-card-jump=\"overview\">Aan de slag</button><button type=\"button\" data-card-jump=\"methods\">Invoer en methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarieven</button><button type=\"button\" data-card-jump=\"examples\">Voorbeelden</button><button type=\"button\" data-card-jump=\"results\">Resultaten</button><button type=\"button\" data-card-jump=\"aliases\">Aliasnamen</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-methoden\"><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-3-video\">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\">Aan de slag</h3><p class=\"mdesc-full\">FLUX 3 Video creëert clips met gesynchroniseerde dialoog, effecten en sfeer op basis van tekst, vastgezette beelden of een voort te zetten clip. Keyframes, composities met meerdere shots en Draft-opwaardering helpen een gecontroleerde reeks uit te werken en de geselecteerde take te behouden.</p><dl class=\"card-io\" data-card-io><div><dt>Toegestane invoer</dt><dd>Tekst · Afbeeldingen</dd></div><div><dt>Resultaten</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Over het model</summary><p class=\"note-s\" data-model-method-boundary>Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.</p><div class=\"mabout\" id=\"m-about\"><p>FLUX 3 Video is het multimodale model van Black Forest Labs voor het genereren van video met gesynchroniseerde audio. Het creëert scènes op basis van een tekstbriefing, bouwt beweging rond vastgezette beelden of zet een bestaande clip voort. Spraak, effecten en sfeer kunnen samen met de frames worden gegenereerd, als ondersteuning voor een korte scène waarin camerabeweging, actie en geluid als één reeks zijn ontworpen.</p><p>Beschrijf voor tekst-naar-video het onderwerp, de omgeving, zichtbare actie, cameragedrag en geluid. Een bruikbare productscène kan beginnen met een ruim beeld, naar een materiaaldetail bewegen en eindigen op het product in gebruik. Briefings met meerdere shots kunnen elk shot en de overgang tussen camerahoeken benoemen, met behoud van het onderwerp en de visuele stijl in de hele reeks. Typografie kan in de scène verschijnen, dus lever de exacte woorden en hun plaatsing aan wanneer een bord of titel belangrijk is. Het model omvat liveaction, animatie, motion graphics en gestileerde beelden.</p><p>Beeld-naar-video gebruikt één tot tien keyframebeelden. Eén beeld legt het openingsframe vast; een paar zet het begin en einde vast, terwijl geordende beelden met tijdsaanduidingen specifieke momenten in de clip sturen. Deze beelden worden frames van de video en dienen niet alleen als algemene stijlreferenties. Bij drie of meer beelden zonder tijdsaanduidingen vereist de producent een expliciete duur: het eerste en laatste zetten de eindpunten vast en de overige worden gelijkmatig daartussen geplaatst. Frames met tijdsaanduidingen moeten in tijdsvolgorde staan; automatische duur loopt tot de laatste tijdsaanduiding, naar boven afgerond, binnen het maximum van 20 seconden. Bereid keyframes met compatibele onderwerpen, kadrering en visuele details voor en beschrijf vervolgens de beweging ertussen. Voor een productonthulling kan het eerste frame het gesloten object tonen en het laatste de geopende opstelling, met de tussenliggende actie vastgelegd in de prompt.</p><p>Videovoortzetting gaat verder vanaf de laatste frames van de aangeleverde clip. De lanceringsworkflow gebruikt maximaal vier seconden bestaande video en audio als context voor de volgende actie en neemt cameragedrag, beweging en geluid over de aansluiting heen mee. Kies een broneinde dat duidelijk vastlegt waar onderwerp en camera naartoe gaan en beschrijf wat daarna gebeurt. Voortzetting is anders dan het herschrijven van een bestaand shot: FLUX Video Edit is een afzonderlijk bewerkingsmodel en wordt geen onderdeel van het generatiemodel alleen omdat beide video accepteren.</p><p>Tekst- en beeldgestuurde generatie ondersteunen clips van 5 tot 20 seconden. Het modusgebonden overzicht geeft videovoortzetting een uitvoerbereik van 5–15 seconden. Duur en beeldverhouding kunnen automatisch worden gekozen of de briefing kan een ondersteunde liggende, vierkante of staande vorm specificeren, waaronder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 en 9:21. De uitvoer heeft 24 frames per seconde. Kies de duur rond een klein aantal zichtbare acties in plaats van te proberen een heel verhaal in één korte generatie te passen.</p><p>HD-uitvoer komt rechtstreeks uit de generatie; FHD, QHD en UHD werken dezelfde scène af met een video-upsampler. Voor 16:9 zijn de geleverde afmetingen respectievelijk 1280 × 704, 1920 × 1088, 2560 × 1440 en 3840 × 2176. Afmetingen zijn uitgelijnd op veelvouden van 32, dus een benoemde resolutieklasse kan afwijken van een conventionele leveringsgrootte. Snijd het voltooide frame bij wanneer een exact standaardformaat nodig is en behoud de belangrijke inhoud aan de randen. De hogere resolutie is een afwerkingsstap en geen andere interpretatie van het shot.</p><p>Native audio is standaard ingeschakeld en kan voor een stille clip worden uitgeschakeld. Citeer voor dialoog de regel, identificeer de spreker en beschrijf de voordracht; meertalige spraak, accenten en lipsynchronisatie maken deel uit van de audio-videomogelijkheden van het model. Houd dialoog- en geluidsaanwijzingen verbonden met de zichtbare gebeurtenis, zoals een deksel dat sluit of voetstappen die weggaan. Controleer stem, timing en gesproken formulering samen met het beeld in plaats van geluid als een losstaande laag te behandelen die na de generatie wordt toegevoegd.</p><p>Draft-modus produceert een HD-preview en een draft bundle. Waardeer de geselecteerde bundle op om die generatie op volledige kwaliteit te renderen; dezelfde prompt als een nieuw verzoek voor een volledige render verzenden is een nieuwe interpretatie en kan een andere take opleveren. Drafts gebruiken alleen HD, terwijl opwaardering de vier resolutieklassen kan selecteren en standaard FHD gebruikt. Dit levert een praktische reeks op waarin eerst actie en compositie worden verkend en daarna de gekozen take op de bedoelde leveringsgrootte wordt afgewerkt.</p><p>De workflow van de producent geeft een taak-ID terug voordat de MP4 klaar is en levert daarna de voltooide clip wanneer de verwerking is afgerond. Ondertekende resultaatlocaties verlopen na ongeveer twee uur, dus bewaar het daadwerkelijke bestand zodra het shot is geselecteerd. Controleer de keyframeovergangen, cuts, typografie, onderwerpdetails en audioaansluiting aan de hand van de briefing. Bewaar voor een langere reeks de referenties en eindcontext van het geslaagde shot als invoer voor de volgende clip, in plaats van aan te nemen dat één kort verzoek de hele productie bevat.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Beschikbaar in Ailoot · invoer en methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Invoer</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Uitvoer</dt><dd><code>video</code></dd></div><div><dt>Uitvoerformaat</dt><dd>oorspronkelijke MP4-bytes; geen normalisatie of transcodering</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Veld</th><th>Type</th><th>Vereiste</th><th>Waarden en limieten</th><th>Standaard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>black-forest-labs/flux-3-video</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20</div><div>Minimum: 1</div><div>Maximum: 600</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>720p, 1080p</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>21:9, 16:9, 4:3, 1:1, 3:4, 9:16</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>boolean</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>false, true</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">frame_images</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Minimumaantal items: 1</div><div>Maximumaantal items: 2</div><div>Invoerinhoud: Array met frameobjecten. Elk object bevat type=image_url, image_url met daarin url, en frame_type. Gebruik een HTTPS-afbeeldings-URL en stel frame_type in op first_frame of last_frame. Elke framerol komt hoogstens één keer voor.</div><div>Exacte sleutels: type, image_url, frame_type</div><div>Voorwaarden: Deze sleutels beschrijven elk frameobject; image_url bevat alleen url. Laat frame_images weg bij een aanvraag met uitsluitend tekst.</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">previous_job_id</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Patroon: ^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">callback_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Patroon: ^https://</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaties van invoermaterialen</summary><p class=\"note-s\"><b>Tekst naar video</b> · Een geschreven prompt. · Vereist: model, prompt, duration</p><p class=\"note-s\"><code>Geef prompt op als tekst en duration als een geheel aantal seconden. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · black-forest-labs/flux-3-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maximumaantal UTF-8-bytes: 10.000 · Ten minste één teken anders dan witruimte vereist: Ja</p><p class=\"note-s\"><b>Afbeelding naar video</b> · Een geschreven prompt en een afbeelding voor het eerste frame. · Vereist: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images is een array. Elk frameobject bevat type, image_url en frame_type; image_url bevat url. Stel type in op image_url. Gebruik first_frame met een optionele last_frame. Elke framerol komt hoogstens één keer voor. Geef voor elk frame een openbare HTTPS-afbeeldings-URL op. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.</code></p><p class=\"note-s\">Exacte sleutels: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · black-forest-labs/flux-3-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maximumaantal UTF-8-bytes: 10.000 · Ten minste één teken anders dan witruimte vereist: Ja</p><p class=\"note-s\"><b>Continue a video</b> · Een geschreven prompt en je voltooide oorspronkelijke video. · Vereist: model, prompt, duration, previous_job_id</p><p class=\"note-s\"><code>Stel previous_job_id in op de openbare video-ID van je voltooide oorspronkelijke video. Gebruik hetzelfde model, hetzelfde account en dezelfde API-sleutel. Behoud de bestaande taakidentiteit; deze aanvraag maakt een afzonderlijke vervolgtaak aan. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · black-forest-labs/flux-3-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maximumaantal UTF-8-bytes: 10.000 · Ten minste één teken anders dan witruimte vereist: Ja</p></details><details class=\"note-s\" data-method-contract><summary>Methodeparameters en levenscyclus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Contract</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>model, prompt, duration</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>text, image</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>additional_properties</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, previous_job_id, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Levenscyclus: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarieven</h3><div class=\"card-result-process\" data-billing-basis><h5>Zo worden de uiteindelijke kosten berekend</h5><p class=\"note-s\">De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.</p><dl data-price-conditions><dt>Snelle modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de snelle modus geselecteerd is</span></dd><dt>Flex-modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de flex-modus geselecteerd is</span></dd><dt>Maximale redeneerinspanning</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt</span></dd></dl></div><div data-declared-tariff-pricing><h4>Geschatte tarieven ter vergelijking</h4><h4>Prijzen per configuratie</h4><p class=\"note-s\">Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Tariefstaffel</th><th>Verwachte hoeveelheid</th><th>Kostencomponent</th><th>Referentiemodus</th><th>Rekeneenheid</th><th>Factureringsvoorwaarden</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Basistarieven voor tokens</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>Basistarief</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Kostencomponent\"><span class=\"card-cell-label\">Kostencomponent</span>—</td><td data-cell-label=\"Referentiemodus\"><span class=\"card-cell-label\">Referentiemodus</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>—</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · Invoertokens · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache lezen · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Tekst naar video · Afbeelding naar video (frameafbeeldingen) · referentietarief</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Kostencomponent\"><span class=\"card-cell-label\">Kostencomponent</span><code>reference_output_rate</code></td><td data-cell-label=\"Referentiemodus\"><span class=\"card-cell-label\">Referentiemodus</span>Tekst naar video · Afbeelding naar video (frameafbeeldingen)</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per uitvoerseconde</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Referentietarief per seconde video-uitvoer · Schatting uitsluitend ter vergelijking</span> <b>$0.34</b> <span class=\"price-unit\">per uitvoerseconde</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Kostencomponent\"><span class=\"card-cell-label\">Kostencomponent</span>—</td><td data-cell-label=\"Referentiemodus\"><span class=\"card-cell-label\">Referentiemodus</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per videoseconde</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs · Schatting uitsluitend ter vergelijking</span> <b>$0.58</b> <span class=\"price-unit\">per videoseconde</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Kostencomponent\"><span class=\"card-cell-label\">Kostencomponent</span>—</td><td data-cell-label=\"Referentiemodus\"><span class=\"card-cell-label\">Referentiemodus</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per videoseconde</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 720p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs · Schatting uitsluitend ter vergelijking</span> <b>$0.34</b> <span class=\"price-unit\">per videoseconde</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Kostencomponent\"><span class=\"card-cell-label\">Kostencomponent</span>—</td><td data-cell-label=\"Referentiemodus\"><span class=\"card-cell-label\">Referentiemodus</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per videoseconde</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: video_continuation; resolutie: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs · Schatting uitsluitend ter vergelijking</span> <b>$1.06</b> <span class=\"price-unit\">per videoseconde</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Kostencomponent\"><span class=\"card-cell-label\">Kostencomponent</span>—</td><td data-cell-label=\"Referentiemodus\"><span class=\"card-cell-label\">Referentiemodus</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per videoseconde</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: video_continuation; resolutie: 720p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs · Schatting uitsluitend ter vergelijking</span> <b>$0.82</b> <span class=\"price-unit\">per videoseconde</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Geschatte generatiekosten</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>schatting voor één generatie</td><td data-cell-label=\"Kostencomponent\"><span class=\"card-cell-label\">Kostencomponent</span>—</td><td data-cell-label=\"Referentiemodus\"><span class=\"card-cell-label\">Referentiemodus</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>—</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking</span> <b>$1.7</b> <span class=\"price-unit\">schatting vóór generatie</span></div><p class=\"note-s\">Deze raming is geen extra kost of vast tarief voor de voltooide generatie.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. <a href=\"/docs/nl-be/billing/reserve/\">Zo werken reservering en afrekening →</a></p><div data-declared-reference-pricing><h4>Details van het referentietarief</h4><p class=\"note-s\">Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Prijsreferenties voor videoconfiguraties</summary><h4>Prijzen per configuratie</h4><p class=\"note-s\">Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Factureringsvoorwaarden</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>In deze prijssleutel is geen bijkomende voorwaarde opgegeven.</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs</span> <b>$0.34</b> <span class=\"price-unit\">per videoseconde</span></div><p class=\"note-s\">Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 720p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs</span> <b>$0.34</b> <span class=\"price-unit\">per videoseconde</span></div><p class=\"note-s\">Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs</span> <b>$0.58</b> <span class=\"price-unit\">per videoseconde</span></div><p class=\"note-s\">Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: video_continuation; resolutie: 720p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs</span> <b>$0.82</b> <span class=\"price-unit\">per videoseconde</span></div><p class=\"note-s\">Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Videoprijs</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: video_continuation; resolutie: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Videoprijs</span> <b>$1.06</b> <span class=\"price-unit\">per videoseconde</span></div><p class=\"note-s\">Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Voorbeeldverzoeken</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1092-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1092-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · video maken</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><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-1092-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1092-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;aspect_ratio&quot;:&quot;16:9&quot;,&quot;duration&quot;:8,&quot;model&quot;:&quot;black-forest-labs/flux-3-video&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;resolution&quot;:&quot;720p&quot;}&#39;, 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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Resultaten ophalen en opslaan</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">ondertekende inhouds-URL&#39;s die je toebehoren</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_id}/content</code></li></ul><h5>Taakstatus controleren</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1093-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1093-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET · Status van de oorspronkelijke bewerking</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><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-1093-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1093-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>Lezen van andere inhoud</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1094-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1094-panel-0\" aria-selected=\"true\" tabindex=\"0\">Elk voltooid eigen uitvoerresultaat opslaan</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><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-1094-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1094-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Alle voltooide resultaten bewaren</h5><p class=\"note-s\">Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.</p><p class=\"note-s\">Bewaar alle werkelijke uitvoer die je toebehoort en de teruggestuurde meetgegevens.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Als het oorspronkelijke antwoord moet worden gecontroleerd</h5><p class=\"note-s\">503 result_pending_check + oorspronkelijke id + X-Should-Retry:false; voer de oorspronkelijke aanvraag nooit opnieuw uit</p></div><details class=\"card-about\" data-output-fields><summary>Antwoordvelden</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Veld</th><th>Type</th><th>Betekenis</th></tr></thead><tbody><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Positie van deze video in de uitvoerlijst, geteld vanaf nul.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Ondertekende HTTPS-download-URL voor deze voltooide video.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>SHA-256-hash van de oorspronkelijke videobytes; null als die niet beschikbaar is.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Grootte van het oorspronkelijke videobestand in bytes; null als die niet beschikbaar is.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Gemeten videoduur in milliseconden; null als die niet beschikbaar is.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Videobreedte in pixels; null als die niet beschikbaar is.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Videohoogte in pixels; null als die niet beschikbaar is.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Identificatiecode van de videocodec; null als die niet is vastgelegd.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>boolean | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Of de video een audiotrack bevat; null als dit niet is gemeten.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Identificatiecode van de audiocodec; null als er geen identificatiecode is vastgelegd.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fouten en vervolgstappen</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwoord</th><th>Voorwaarde</th><th>Volgende stap</th></tr></thead><tbody><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Toegang tot de video is niet beschikbaar, of deze video-ID werd niet gevonden.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer de toegang tot de video. Gebruik voor een bestaande video de oorspronkelijke openbare ID en dezelfde API-sleutel.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De API-sleutel komt niet overeen met het geauthenticeerde account.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer je API-sleutel en accounttoegang voordat je de aanvraag indient.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De aanvraag kon niet worden gelezen, of de downloadindex is ongeldig.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Corrigeer de aanvraaginhoud. Kies voor een download een uitvoerindex die door de oorspronkelijke taak is teruggestuurd.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Voor de geselecteerde videoconfiguratie kan geen prijs worden bepaald.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Kies een ondersteunde videoconfiguratie en vul alle verplichte opties in voordat je een gecorrigeerde aanvraag indient.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Een video-invoer of oorspronkelijke vervolgtaak is ongeldig.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Gebruik geldige HTTPS-invoer. Gebruik voor een vervolg je voltooide oorspronkelijke openbare video-ID met dezelfde API-sleutel.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>402 · <code>billing_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Het beschikbare saldo of de limieten laten geen reservering toe.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer je beschikbare saldo en limieten voordat je een nieuwe aanvraag verstuurt.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>503 · <code>server_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Videocontrole, opslag of toegang tot de dienst is tijdelijk niet beschikbaar.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Wacht tot de dienst beschikbaar is. Als je al een video-ID hebt, controleer dan die oorspronkelijke taak in plaats van een nieuwe generatie aan te maken.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Het oorspronkelijke videoresultaat en de aanrekening moeten worden gecontroleerd.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar de teruggestuurde video-ID en controleer die taak. Verstuur geen vervangende generatieaanvraag zolang de controle loopt.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De bestaande videodownload is tijdelijk niet beschikbaar.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer later dezelfde videotaak en download de bestaande uitvoer ervan. Een nieuwe generatie maakt een afzonderlijke operatie aan.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De video-inhoud is niet gepubliceerd.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer de oorspronkelijke taakstatus. Download zodra de status completed is; volg bij failed de melding over de controle van de aanrekening.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modelaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=black-forest-labs%2Fflux-3-video&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-video&amp;fmt=videos\"><code>black-forest-labs/flux-3-video</code></a></span></p><h4>Aliasnamen voor methodepaden</h4><p class=\"note-s\">Gebruik de hierboven getoonde methodepaden.</p><h4>Gerelateerde aanroeper-ID’s</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux-3-video&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-video&amp;fmt=videos\"><code>black-forest-labs/flux-3-video</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-3-video",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "black-forest-labs/flux-3-video",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|black-forest-labs%2Fflux-3-video",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.",
          "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": "Bewaar alle werkelijke uitvoer die je toebehoort en de teruggestuurde meetgegevens.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Toegang tot de video is niet beschikbaar, of deze video-ID werd niet gevonden.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Controleer de toegang tot de video. Gebruik voor een bestaande video de oorspronkelijke openbare ID en dezelfde API-sleutel.",
                "type": "not_found_error"
              },
              {
                "condition": "De API-sleutel komt niet overeen met het geauthenticeerde account.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Controleer je API-sleutel en accounttoegang voordat je de aanvraag indient.",
                "type": "authentication_error"
              },
              {
                "condition": "De aanvraag kon niet worden gelezen, of de downloadindex is ongeldig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrigeer de aanvraaginhoud. Kies voor een download een uitvoerindex die door de oorspronkelijke taak is teruggestuurd.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Voor de geselecteerde videoconfiguratie kan geen prijs worden bepaald.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Kies een ondersteunde videoconfiguratie en vul alle verplichte opties in voordat je een gecorrigeerde aanvraag indient.",
                "type": "price_unavailable"
              },
              {
                "condition": "Een video-invoer of oorspronkelijke vervolgtaak is ongeldig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Gebruik geldige HTTPS-invoer. Gebruik voor een vervolg je voltooide oorspronkelijke openbare video-ID met dezelfde API-sleutel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Het beschikbare saldo of de limieten laten geen reservering toe.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Controleer je beschikbare saldo en limieten voordat je een nieuwe aanvraag verstuurt.",
                "type": "billing_error"
              },
              {
                "condition": "Videocontrole, opslag of toegang tot de dienst is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Wacht tot de dienst beschikbaar is. Als je al een video-ID hebt, controleer dan die oorspronkelijke taak in plaats van een nieuwe generatie aan te maken.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Het oorspronkelijke videoresultaat en de aanrekening moeten worden gecontroleerd.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Bewaar de teruggestuurde video-ID en controleer die taak. Verstuur geen vervangende generatieaanvraag zolang de controle loopt.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "De bestaande videodownload is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Controleer later dezelfde videotaak en download de bestaande uitvoer ervan. Een nieuwe generatie maakt een afzonderlijke operatie aan.",
                "type": "server_error"
              },
              {
                "condition": "De video-inhoud is niet gepubliceerd.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Controleer de oorspronkelijke taakstatus. Download zodra de status completed is; volg bij failed de melding over de controle van de aanrekening.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + oorspronkelijke id + X-Should-Retry:false; voer de oorspronkelijke aanvraag nooit opnieuw uit"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Geef prompt op als tekst en duration als een geheel aantal seconden. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Een geschreven prompt."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images is een array. Elk frameobject bevat type, image_url en frame_type; image_url bevat url. Stel type in op image_url. Gebruik first_frame met een optionele last_frame. Elke framerol komt hoogstens één keer voor. Geef voor elk frame een openbare HTTPS-afbeeldings-URL op. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Een geschreven prompt en een afbeelding voor het eerste frame."
              },
              {
                "mode": "Continue a video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Stel previous_job_id in op de openbare video-ID van je voltooide oorspronkelijke video. Gebruik hetzelfde model, hetzelfde account en dezelfde API-sleutel. Behoud de bestaande taakidentiteit; deze aanvraag maakt een afzonderlijke vervolgtaak aan. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "previous_job_id"
                ],
                "required_material": "Een geschreven prompt en je voltooide oorspronkelijke video."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "video_extension_or_continuation"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Positie van deze video in de uitvoerlijst, geteld vanaf nul.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Ondertekende HTTPS-download-URL voor deze voltooide video.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "SHA-256-hash van de oorspronkelijke videobytes; null als die niet beschikbaar is.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Grootte van het oorspronkelijke videobestand in bytes; null als die niet beschikbaar is.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Gemeten videoduur in milliseconden; null als die niet beschikbaar is.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videobreedte in pixels; null als die niet beschikbaar is.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videohoogte in pixels; null als die niet beschikbaar is.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identificatiecode van de videocodec; null als die niet is vastgelegd.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Of de video een audiotrack bevat; null als dit niet is gemeten.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identificatiecode van de audiocodec; null als er geen identificatiecode is vastgelegd.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "ondertekende inhouds-URL's die je toebehoren",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "black-forest-labs/flux-3-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Deze sleutels beschrijven elk frameobject; image_url bevat alleen url. Laat frame_images weg bij een aanvraag met uitsluitend tekst.",
                "content": "Array met frameobjecten. Elk object bevat type=image_url, image_url met daarin url, en frame_type. Gebruik een HTTPS-afbeeldings-URL en stel frame_type in op first_frame of last_frame. Elke framerol komt hoogstens één keer voor.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "previous_job_id",
                "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                "required": false,
                "schema": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "previous_job_id": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Continuation uses a real same-owner/account/proxy/model published completed public Ailoot video ID; constructible continuation is absent from current discovery profile projection."
              ]
            },
            "unsupported": [
              "size",
              "seed",
              "provider",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "previous_job_id",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "video_extension_or_continuation"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Tekst naar video · Afbeelding naar video (frameafbeeldingen) · referentietarief",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "invoer: video_continuation; resolutie: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "Deze raming is geen extra kost of vast tarief voor de voltooide generatie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschatte generatiekosten",
            "units": [
              {
                "amount": "1.7",
                "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": "1.7",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"black-forest-labs/flux-3-video\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', 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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Text to video · Image to video (frame images) · reference rate",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "1.7",
                "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": "1.7",
                "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-3-video",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "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.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Output video second reference rate",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "public_unit_label": "per output second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.58",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.58",
            "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.34",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.34",
            "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": "1.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "1.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.82",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.82",
            "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": "1.7",
            "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": "1.7",
            "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-3-video",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "6da965322969a656a12da2d6e83661550fc18a288c74d4773f45b8e6659dd87f",
    "input_html_sha256": "a2aec11e496bff70319470f1c9fc2e324cf1059c15bf8c1f00a65c452e247f73",
    "private_audit_sha256": "1799e1aa7033d677d190d8cbfc26e0782a50f86626761170fb5d7b374cad7b3f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nl-be/black-forest-labs-flux-3-video/",
    "description": "FLUX 3 Video creëert clips met gesynchroniseerde dialoog, effecten en sfeer op basis van tekst, vastgezette beelden of een voort te zetten clip. Keyframes, composities met meerdere shots en Draft-opwaardering helpen een gecontroleerde reeks uit te werken en de geselecteerde take te behouden.",
    "locale": "nl-be",
    "md_url": "https://ailoot.ai/models/nl-be/black-forest-labs-flux-3-video/index.md",
    "title": "Black Forest Labs: FLUX.3 Video — Ailoot",
    "url": "https://ailoot.ai/models/nl-be/black-forest-labs-flux-3-video/"
  },
  "rawModel": {
    "about": "FLUX 3 Video is het multimodale model van Black Forest Labs voor het genereren van video met gesynchroniseerde audio. Het creëert scènes op basis van een tekstbriefing, bouwt beweging rond vastgezette beelden of zet een bestaande clip voort. Spraak, effecten en sfeer kunnen samen met de frames worden gegenereerd, als ondersteuning voor een korte scène waarin camerabeweging, actie en geluid als één reeks zijn ontworpen.\n\nBeschrijf voor tekst-naar-video het onderwerp, de omgeving, zichtbare actie, cameragedrag en geluid. Een bruikbare productscène kan beginnen met een ruim beeld, naar een materiaaldetail bewegen en eindigen op het product in gebruik. Briefings met meerdere shots kunnen elk shot en de overgang tussen camerahoeken benoemen, met behoud van het onderwerp en de visuele stijl in de hele reeks. Typografie kan in de scène verschijnen, dus lever de exacte woorden en hun plaatsing aan wanneer een bord of titel belangrijk is. Het model omvat liveaction, animatie, motion graphics en gestileerde beelden.\n\nBeeld-naar-video gebruikt één tot tien keyframebeelden. Eén beeld legt het openingsframe vast; een paar zet het begin en einde vast, terwijl geordende beelden met tijdsaanduidingen specifieke momenten in de clip sturen. Deze beelden worden frames van de video en dienen niet alleen als algemene stijlreferenties. Bij drie of meer beelden zonder tijdsaanduidingen vereist de producent een expliciete duur: het eerste en laatste zetten de eindpunten vast en de overige worden gelijkmatig daartussen geplaatst. Frames met tijdsaanduidingen moeten in tijdsvolgorde staan; automatische duur loopt tot de laatste tijdsaanduiding, naar boven afgerond, binnen het maximum van 20 seconden. Bereid keyframes met compatibele onderwerpen, kadrering en visuele details voor en beschrijf vervolgens de beweging ertussen. Voor een productonthulling kan het eerste frame het gesloten object tonen en het laatste de geopende opstelling, met de tussenliggende actie vastgelegd in de prompt.\n\nVideovoortzetting gaat verder vanaf de laatste frames van de aangeleverde clip. De lanceringsworkflow gebruikt maximaal vier seconden bestaande video en audio als context voor de volgende actie en neemt cameragedrag, beweging en geluid over de aansluiting heen mee. Kies een broneinde dat duidelijk vastlegt waar onderwerp en camera naartoe gaan en beschrijf wat daarna gebeurt. Voortzetting is anders dan het herschrijven van een bestaand shot: FLUX Video Edit is een afzonderlijk bewerkingsmodel en wordt geen onderdeel van het generatiemodel alleen omdat beide video accepteren.\n\nTekst- en beeldgestuurde generatie ondersteunen clips van 5 tot 20 seconden. Het modusgebonden overzicht geeft videovoortzetting een uitvoerbereik van 5–15 seconden. Duur en beeldverhouding kunnen automatisch worden gekozen of de briefing kan een ondersteunde liggende, vierkante of staande vorm specificeren, waaronder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 en 9:21. De uitvoer heeft 24 frames per seconde. Kies de duur rond een klein aantal zichtbare acties in plaats van te proberen een heel verhaal in één korte generatie te passen.\n\nHD-uitvoer komt rechtstreeks uit de generatie; FHD, QHD en UHD werken dezelfde scène af met een video-upsampler. Voor 16:9 zijn de geleverde afmetingen respectievelijk 1280 × 704, 1920 × 1088, 2560 × 1440 en 3840 × 2176. Afmetingen zijn uitgelijnd op veelvouden van 32, dus een benoemde resolutieklasse kan afwijken van een conventionele leveringsgrootte. Snijd het voltooide frame bij wanneer een exact standaardformaat nodig is en behoud de belangrijke inhoud aan de randen. De hogere resolutie is een afwerkingsstap en geen andere interpretatie van het shot.\n\nNative audio is standaard ingeschakeld en kan voor een stille clip worden uitgeschakeld. Citeer voor dialoog de regel, identificeer de spreker en beschrijf de voordracht; meertalige spraak, accenten en lipsynchronisatie maken deel uit van de audio-videomogelijkheden van het model. Houd dialoog- en geluidsaanwijzingen verbonden met de zichtbare gebeurtenis, zoals een deksel dat sluit of voetstappen die weggaan. Controleer stem, timing en gesproken formulering samen met het beeld in plaats van geluid als een losstaande laag te behandelen die na de generatie wordt toegevoegd.\n\nDraft-modus produceert een HD-preview en een draft bundle. Waardeer de geselecteerde bundle op om die generatie op volledige kwaliteit te renderen; dezelfde prompt als een nieuw verzoek voor een volledige render verzenden is een nieuwe interpretatie en kan een andere take opleveren. Drafts gebruiken alleen HD, terwijl opwaardering de vier resolutieklassen kan selecteren en standaard FHD gebruikt. Dit levert een praktische reeks op waarin eerst actie en compositie worden verkend en daarna de gekozen take op de bedoelde leveringsgrootte wordt afgewerkt.\n\nDe workflow van de producent geeft een taak-ID terug voordat de MP4 klaar is en levert daarna de voltooide clip wanneer de verwerking is afgerond. Ondertekende resultaatlocaties verlopen na ongeveer twee uur, dus bewaar het daadwerkelijke bestand zodra het shot is geselecteerd. Controleer de keyframeovergangen, cuts, typografie, onderwerpdetails en audioaansluiting aan de hand van de briefing. Bewaar voor een langere reeks de referenties en eindcontext van het geslaagde shot als invoer voor de volgende clip, in plaats van aan te nemen dat één kort verzoek de hele productie bevat.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "available": null,
    "canonical_model": "black-forest-labs/flux-3-video",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1.7",
            "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": "1.7",
            "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": "De volledige prijsinformatie voor de configuratie vindt u bij de details."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "b4dc879135bc0b33150a530a",
        "label": "Prijsreferenties voor videoconfiguraties",
        "profiles": [
          {
            "basis": "Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.",
            "dimensions": {
              "conditions": "In deze prijssleutel is geen bijkomende voorwaarde opgegeven."
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.",
            "dimensions": {
              "conditions": "resolution: 720p"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.",
            "dimensions": {
              "conditions": "invoer: video_continuation; resolutie: 720p"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Gepubliceerde prijsreferentie voor de getoonde configuratie. De definitieve kosten volgen de daadwerkelijk gefactureerde configuratie.",
            "dimensions": {
              "conditions": "invoer: video_continuation; resolutie: 1080p"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "black-forest-labs/flux-3-video",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.",
          "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": "Bewaar alle werkelijke uitvoer die je toebehoort en de teruggestuurde meetgegevens.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Toegang tot de video is niet beschikbaar, of deze video-ID werd niet gevonden.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Controleer de toegang tot de video. Gebruik voor een bestaande video de oorspronkelijke openbare ID en dezelfde API-sleutel.",
                "type": "not_found_error"
              },
              {
                "condition": "De API-sleutel komt niet overeen met het geauthenticeerde account.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Controleer je API-sleutel en accounttoegang voordat je de aanvraag indient.",
                "type": "authentication_error"
              },
              {
                "condition": "De aanvraag kon niet worden gelezen, of de downloadindex is ongeldig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrigeer de aanvraaginhoud. Kies voor een download een uitvoerindex die door de oorspronkelijke taak is teruggestuurd.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Voor de geselecteerde videoconfiguratie kan geen prijs worden bepaald.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Kies een ondersteunde videoconfiguratie en vul alle verplichte opties in voordat je een gecorrigeerde aanvraag indient.",
                "type": "price_unavailable"
              },
              {
                "condition": "Een video-invoer of oorspronkelijke vervolgtaak is ongeldig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Gebruik geldige HTTPS-invoer. Gebruik voor een vervolg je voltooide oorspronkelijke openbare video-ID met dezelfde API-sleutel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Het beschikbare saldo of de limieten laten geen reservering toe.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Controleer je beschikbare saldo en limieten voordat je een nieuwe aanvraag verstuurt.",
                "type": "billing_error"
              },
              {
                "condition": "Videocontrole, opslag of toegang tot de dienst is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Wacht tot de dienst beschikbaar is. Als je al een video-ID hebt, controleer dan die oorspronkelijke taak in plaats van een nieuwe generatie aan te maken.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Het oorspronkelijke videoresultaat en de aanrekening moeten worden gecontroleerd.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Bewaar de teruggestuurde video-ID en controleer die taak. Verstuur geen vervangende generatieaanvraag zolang de controle loopt.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "De bestaande videodownload is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Controleer later dezelfde videotaak en download de bestaande uitvoer ervan. Een nieuwe generatie maakt een afzonderlijke operatie aan.",
                "type": "server_error"
              },
              {
                "condition": "De video-inhoud is niet gepubliceerd.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Controleer de oorspronkelijke taakstatus. Download zodra de status completed is; volg bij failed de melding over de controle van de aanrekening.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + oorspronkelijke id + X-Should-Retry:false; voer de oorspronkelijke aanvraag nooit opnieuw uit"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Geef prompt op als tekst en duration als een geheel aantal seconden. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Een geschreven prompt."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images is een array. Elk frameobject bevat type, image_url en frame_type; image_url bevat url. Stel type in op image_url. Gebruik first_frame met een optionele last_frame. Elke framerol komt hoogstens één keer voor. Geef voor elk frame een openbare HTTPS-afbeeldings-URL op. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Een geschreven prompt en een afbeelding voor het eerste frame."
              },
              {
                "mode": "Continue a video",
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Stel previous_job_id in op de openbare video-ID van je voltooide oorspronkelijke video. Gebruik hetzelfde model, hetzelfde account en dezelfde API-sleutel. Behoud de bestaande taakidentiteit; deze aanvraag maakt een afzonderlijke vervolgtaak aan. Kies een ondersteunde resolutie en, indien nodig, een beeldverhouding.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "previous_job_id"
                ],
                "required_material": "Een geschreven prompt en je voltooide oorspronkelijke video."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "video_extension_or_continuation"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Positie van deze video in de uitvoerlijst, geteld vanaf nul.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Ondertekende HTTPS-download-URL voor deze voltooide video.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "SHA-256-hash van de oorspronkelijke videobytes; null als die niet beschikbaar is.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Grootte van het oorspronkelijke videobestand in bytes; null als die niet beschikbaar is.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Gemeten videoduur in milliseconden; null als die niet beschikbaar is.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videobreedte in pixels; null als die niet beschikbaar is.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videohoogte in pixels; null als die niet beschikbaar is.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identificatiecode van de videocodec; null als die niet is vastgelegd.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Of de video een audiotrack bevat; null als dit niet is gemeten.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identificatiecode van de audiocodec; null als er geen identificatiecode is vastgelegd.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "ondertekende inhouds-URL's die je toebehoren",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "black-forest-labs/flux-3-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Deze sleutels beschrijven elk frameobject; image_url bevat alleen url. Laat frame_images weg bij een aanvraag met uitsluitend tekst.",
                "content": "Array met frameobjecten. Elk object bevat type=image_url, image_url met daarin url, en frame_type. Gebruik een HTTPS-afbeeldings-URL en stel frame_type in op first_frame of last_frame. Elke framerol komt hoogstens één keer voor.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "previous_job_id",
                "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                "required": false,
                "schema": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "black-forest-labs/flux-3-video"
                },
                "previous_job_id": {
                  "pattern": "^video_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
                  "type": "string",
                  "x-source-rule": "real public original id, sameowner/account/proxy/model and published/completed"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "720p",
                    "1080p"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Continuation uses a real same-owner/account/proxy/model published completed public Ailoot video ID; constructible continuation is absent from current discovery profile projection."
              ]
            },
            "unsupported": [
              "size",
              "seed",
              "provider",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "previous_job_id",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "video_extension_or_continuation"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Tekst naar video · Afbeelding naar video (frameafbeeldingen) · referentietarief",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "invoer: video_continuation; resolutie: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Videoprijs",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "Deze raming is geen extra kost of vast tarief voor de voltooide generatie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschatte generatiekosten",
            "units": [
              {
                "amount": "1.7",
                "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": "1.7",
                "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}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"black-forest-labs/flux-3-video\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', 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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);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 returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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": {
              "billing_component_role": "reference_output_rate",
              "billing_input": false,
              "estimate_only": true,
              "fallback_reference": true,
              "quoted_unit": "per output second",
              "rate_modes": [
                "text_to_video",
                "image_to_video_frame_images"
              ],
              "selectable_request_branch": false,
              "selector_reference_only": true
            },
            "label": "Text to video · Image to video (frame images) · reference rate",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output",
                "label": "Output video second reference rate",
                "native_amount_usd_per_unit": "0.34",
                "native_quantity": 1,
                "public_unit_label": "per output second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.58",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.58",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.34",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_output_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.34",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.06",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "input: video_continuation; resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.82",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_second_video_continuation_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.82",
                "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": "1.7",
                "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": "1.7",
                "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-3-video",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "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.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output",
            "label": "Output video second reference rate",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "public_unit_label": "per output second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.58",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.58",
            "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.34",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_output_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.34",
            "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": "1.06",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "1.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.82",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_second_video_continuation_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.82",
            "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": "1.7",
            "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": "1.7",
            "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-3-video",
        "request_model_id": "black-forest-labs/flux-3-video",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX.3 Video",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 1.7,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 1.7,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.34",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "fhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.58",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "fhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "qhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.80",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "qhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "uhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.60",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "uhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": true,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "draft_hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.12",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": true,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "draft_hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.34",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "fhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.58",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "fhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 6,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "qhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.80",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "qhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 7,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "uhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.60",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "uhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 8,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": true,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "draft_hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.12",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": true,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "draft_hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 9,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.82",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 10,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "fhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.06",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "fhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 11,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "qhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.30",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "qhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 12,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": false,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "uhd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.90",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": false,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "uhd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 13,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": "synchronized_audio",
          "billing_quantity": "output_duration_seconds",
          "draft": true,
          "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
          "resolution_class": "draft_hd"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.24",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "audio": "synchronized_audio",
              "billing_quantity": "output_duration_seconds",
              "draft": true,
              "duration_limit_source": "Not on pricing page; retained supplier declared capabilities in operation inventory; maker duration limits not claimed",
              "resolution_class": "draft_hd"
            },
            "key": "base",
            "label": "base",
            "profile_index": 14,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "output second Source-only tariff component.",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "34",
            "key": "cents_per_second_output",
            "label": "output second",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.34",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "34",
            "key": "cents_per_second_output_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.34",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.58",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=1080p",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "58",
            "key": "cents_per_second_output_1080p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.58",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.82",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p · video_continuation",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "82",
            "key": "cents_per_second_video_continuation_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.82",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "1.06",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=1080p · video_continuation",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "106",
            "key": "cents_per_second_video_continuation_1080p",
            "label": "output second",
            "native_amount_usd_per_unit": "1.06",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "black-forest-labs/flux-3-video",
    "short": "FLUX 3 Video creëert clips met gesynchroniseerde dialoog, effecten en sfeer op basis van tekst, vastgezette beelden of een voort te zetten clip. Keyframes, composities met meerdere shots en Draft-opwaardering helpen een gecontroleerde reeks uit te werken en de geselecteerde take te behouden."
  },
  "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 3 Video creëert clips met gesynchroniseerde dialoog, effecten en sfeer op basis van tekst, vastgezette beelden of een voort te zetten clip. Keyframes, composities met meerdere shots en Draft-opwaardering helpen een gecontroleerde reeks uit te werken en de geselecteerde take te behouden.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "cc719e9ae4902d8422ec152cfe4e983c3d20572167028467c98af84171b63275",
    "renderer_sha256": "a5aefc67f30427b283b8d8bf7955908a0216c6e5e4ca3cc1887842431e2b1ee6"
  },
  "sourceRevision": "199d5fd465ad1e1508661a300a25440c842fc779f8f45750ef11618b6622d320"
}
