{
  "aboutHtml": "<p>FLUX 3 Video er Black Forest Labs&#39; multimodale model til generering af video med synkroniseret lyd. Den skaber scener fra en tekstbrief, bygger bevægelse omkring fastlagte billeder eller fortsætter et eksisterende klip. Tale, effekter og atmosfære kan genereres sammen med billederne og understøtte en kort scene, hvor kamerabevægelse, handling og lyd designes som én sekvens.</p><p>Til tekst-til-video skal du beskrive motiv, omgivelser, synlig handling, kameraadfærd og lyd. En nyttig produktscene kan begynde med et totalbillede, bevæge sig mod en materialedetalje og slutte med produktet i brug. Briefs med flere indstillinger kan navngive hver indstilling og overgangen mellem kameravinkler, mens motiv og visuel stil holdes ensartede gennem sekvensen. Typografi kan optræde i scenen, så lever de præcise ord og deres placering, når et skilt eller en titel er vigtig. Modellen dækker realfilm, animation, motion graphics og stiliserede udtryk.</p><p>Billede-til-video bruger ét til ti nøglebilleder. Et enkelt billede etablerer åbningsbilledet; et par fastlægger start og slutning, mens ordnede billeder med tidsstempler styrer bestemte øjeblikke i klippet. Billederne bliver billeder i videoen frem for kun at være generelle stilreferencer. Ved tre eller flere billeder uden tidsstempler kræver producenten en eksplicit varighed: det første og sidste fastlægger endepunkterne, og de øvrige placeres jævnt imellem dem. Tidsstemplede billeder skal være i tidsrækkefølge; automatisk varighed går til det sidste tidsstempel rundet op inden for maksimum på 20 sekunder. Forbered nøglebilleder med kompatible motiver, indramning og visuelle detaljer, og beskriv derefter bevægelsen imellem dem. Til en produktafsløring kan det første billede vise den lukkede genstand og det sidste den åbnede opstilling med den mellemliggende handling defineret i prompten.</p><p>Videofortsættelse tager over fra det leverede klips sidste billeder. Lanceringsarbejdsgangen bruger op til fire sekunders eksisterende video og lyd som kontekst til næste handling og fører kameraadfærd, bevægelse og lyd hen over samlingen. Vælg en kildeafslutning, der tydeligt etablerer, hvor motiv og kamera er på vej hen, og beskriv det næste, der sker. Fortsættelse er forskellig fra at omskrive en eksisterende indstilling: FLUX Video Edit er en særskilt redigeringsmodel og bliver ikke en del af genereringsmodellen alene, fordi begge accepterer video.</p><p>Tekst- og billedbetinget generering understøtter klip fra 5 til 20 sekunder. Den tilstandsspecifikke oversigt giver videofortsættelse et outputinterval på 5–15 sekunder. Varighed og billedformat kan vælges automatisk, eller briefen kan angive en understøttet liggende, kvadratisk eller stående form, herunder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 og 9:21. Outputtet er på 24 billeder pr. sekund. Vælg varigheden omkring et lille antal synlige handlinger frem for at forsøge at få en hel fortælling ind i én kort generering.</p><p>HD-output kommer direkte fra genereringen; FHD, QHD og UHD færdiggør samme scene med en videoopsampler. For 16:9 er de leverede dimensioner henholdsvis 1280 × 704, 1920 × 1088, 2560 × 1440 og 3840 × 2176. Dimensioner tilpasses multipla af 32, så en navngiven opløsningsklasse kan afvige fra en konventionel leveringsstørrelse. Beskær det færdige billede, når et præcist standardlærred kræves, og bevar det indhold, der er vigtigt ved kanterne. Den højere opløsning er et færdiggørelsestrin frem for en anden fortolkning af indstillingen.</p><p>Indbygget lyd er aktiveret som standard og kan deaktiveres til et lydløst klip. Til dialog skal replikken citeres, taleren identificeres og fremførelsen beskrives; flersproget tale, accenter og læbesynkronisering er en del af modellens lyd-video-funktioner. Hold dialog og lydmarkører forbundet med den synlige begivenhed, som et låg, der lukker, eller fodtrin, der bevæger sig væk. Gennemgå stemme, timing og talt ordlyd sammen med billedet frem for at behandle lyden som et uvedkommende lag tilføjet efter genereringen.</p><p>Draft-tilstand producerer en HD-forhåndsvisning og en udkastpakke. Forbedr den valgte pakke for at rendere denne generering i fuld kvalitet; at sende samme prompt som en ny fuld renderingsanmodning er en ny fortolkning og kan producere en anden optagelse. Udkast bruger kun HD, mens forbedring kan vælge de fire opløsningsklasser og har FHD som standard. Det giver en praktisk rækkefølge, hvor handling og komposition udforskes først, og den valgte optagelse derefter færdiggøres til den tilsigtede leveringsstørrelse.</p><p>Producentens arbejdsgang returnerer en opgaveidentifikator, før MP4-filen er klar, og leverer derefter det færdige klip, når behandlingen er afsluttet. Signerede resultatplaceringer udløber efter cirka to timer, så gem selve aktivet, når indstillingen er valgt. Undersøg nøglebilledovergange, klip, typografi, motivdetaljer og lydsamling i forhold til briefen. Til en længere sekvens skal den vellykkede indstillings referencer og afsluttende kontekst bevares som input til næste klip frem for at antage, at én kort anmodning indeholder hele produktionen.</p>",
  "aboutText": "FLUX 3 Video er Black Forest Labs' multimodale model til generering af video med synkroniseret lyd. Den skaber scener fra en tekstbrief, bygger bevægelse omkring fastlagte billeder eller fortsætter et eksisterende klip. Tale, effekter og atmosfære kan genereres sammen med billederne og understøtte en kort scene, hvor kamerabevægelse, handling og lyd designes som én sekvens.\n\nTil tekst-til-video skal du beskrive motiv, omgivelser, synlig handling, kameraadfærd og lyd. En nyttig produktscene kan begynde med et totalbillede, bevæge sig mod en materialedetalje og slutte med produktet i brug. Briefs med flere indstillinger kan navngive hver indstilling og overgangen mellem kameravinkler, mens motiv og visuel stil holdes ensartede gennem sekvensen. Typografi kan optræde i scenen, så lever de præcise ord og deres placering, når et skilt eller en titel er vigtig. Modellen dækker realfilm, animation, motion graphics og stiliserede udtryk.\n\nBillede-til-video bruger ét til ti nøglebilleder. Et enkelt billede etablerer åbningsbilledet; et par fastlægger start og slutning, mens ordnede billeder med tidsstempler styrer bestemte øjeblikke i klippet. Billederne bliver billeder i videoen frem for kun at være generelle stilreferencer. Ved tre eller flere billeder uden tidsstempler kræver producenten en eksplicit varighed: det første og sidste fastlægger endepunkterne, og de øvrige placeres jævnt imellem dem. Tidsstemplede billeder skal være i tidsrækkefølge; automatisk varighed går til det sidste tidsstempel rundet op inden for maksimum på 20 sekunder. Forbered nøglebilleder med kompatible motiver, indramning og visuelle detaljer, og beskriv derefter bevægelsen imellem dem. Til en produktafsløring kan det første billede vise den lukkede genstand og det sidste den åbnede opstilling med den mellemliggende handling defineret i prompten.\n\nVideofortsættelse tager over fra det leverede klips sidste billeder. Lanceringsarbejdsgangen bruger op til fire sekunders eksisterende video og lyd som kontekst til næste handling og fører kameraadfærd, bevægelse og lyd hen over samlingen. Vælg en kildeafslutning, der tydeligt etablerer, hvor motiv og kamera er på vej hen, og beskriv det næste, der sker. Fortsættelse er forskellig fra at omskrive en eksisterende indstilling: FLUX Video Edit er en særskilt redigeringsmodel og bliver ikke en del af genereringsmodellen alene, fordi begge accepterer video.\n\nTekst- og billedbetinget generering understøtter klip fra 5 til 20 sekunder. Den tilstandsspecifikke oversigt giver videofortsættelse et outputinterval på 5–15 sekunder. Varighed og billedformat kan vælges automatisk, eller briefen kan angive en understøttet liggende, kvadratisk eller stående form, herunder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 og 9:21. Outputtet er på 24 billeder pr. sekund. Vælg varigheden omkring et lille antal synlige handlinger frem for at forsøge at få en hel fortælling ind i én kort generering.\n\nHD-output kommer direkte fra genereringen; FHD, QHD og UHD færdiggør samme scene med en videoopsampler. For 16:9 er de leverede dimensioner henholdsvis 1280 × 704, 1920 × 1088, 2560 × 1440 og 3840 × 2176. Dimensioner tilpasses multipla af 32, så en navngiven opløsningsklasse kan afvige fra en konventionel leveringsstørrelse. Beskær det færdige billede, når et præcist standardlærred kræves, og bevar det indhold, der er vigtigt ved kanterne. Den højere opløsning er et færdiggørelsestrin frem for en anden fortolkning af indstillingen.\n\nIndbygget lyd er aktiveret som standard og kan deaktiveres til et lydløst klip. Til dialog skal replikken citeres, taleren identificeres og fremførelsen beskrives; flersproget tale, accenter og læbesynkronisering er en del af modellens lyd-video-funktioner. Hold dialog og lydmarkører forbundet med den synlige begivenhed, som et låg, der lukker, eller fodtrin, der bevæger sig væk. Gennemgå stemme, timing og talt ordlyd sammen med billedet frem for at behandle lyden som et uvedkommende lag tilføjet efter genereringen.\n\nDraft-tilstand producerer en HD-forhåndsvisning og en udkastpakke. Forbedr den valgte pakke for at rendere denne generering i fuld kvalitet; at sende samme prompt som en ny fuld renderingsanmodning er en ny fortolkning og kan producere en anden optagelse. Udkast bruger kun HD, mens forbedring kan vælge de fire opløsningsklasser og har FHD som standard. Det giver en praktisk rækkefølge, hvor handling og komposition udforskes først, og den valgte optagelse derefter færdiggøres til den tilsigtede leveringsstørrelse.\n\nProducentens arbejdsgang returnerer en opgaveidentifikator, før MP4-filen er klar, og leverer derefter det færdige klip, når behandlingen er afsluttet. Signerede resultatplaceringer udløber efter cirka to timer, så gem selve aktivet, når indstillingen er valgt. Undersøg nøglebilledovergange, klip, typografi, motivdetaljer og lydsamling i forhold til briefen. Til en længere sekvens skal den vellykkede indstillings referencer og afsluttende kontekst bevares som input til næste klip frem for at antage, at én kort anmodning indeholder hele produktionen.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "aa35b6c6e5a66659034f804227c81fb754ddc359ff17085f5420b1d03bca3f17",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "da",
  "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=\"Luk\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-3-video</code><button type=\"button\" id=\"copy-id\">Kopiér ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modelkortets afsnit\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Input og metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Eksempler</button><button type=\"button\" data-card-jump=\"results\">Resultater</button><button type=\"button\" data-card-jump=\"aliases\">Aliaser</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><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\">Start</h3><p class=\"mdesc-full\">FLUX 3 Video skaber klip med synkroniseret dialog, effekter og atmosfære ud fra tekst, fastlagte billeder eller et klip, der skal fortsættes. Nøglebilleder, komposition med flere indstillinger og forbedring af udkast hjælper med at udvikle en kontrolleret sekvens og bevare den valgte optagelse.</p><dl class=\"card-io\" data-card-io><div><dt>Accepterede input</dt><dd>Tekst · Billeder</dd></div><div><dt>Resultater</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.</p><div class=\"mabout\" id=\"m-about\"><p>FLUX 3 Video er Black Forest Labs&#39; multimodale model til generering af video med synkroniseret lyd. Den skaber scener fra en tekstbrief, bygger bevægelse omkring fastlagte billeder eller fortsætter et eksisterende klip. Tale, effekter og atmosfære kan genereres sammen med billederne og understøtte en kort scene, hvor kamerabevægelse, handling og lyd designes som én sekvens.</p><p>Til tekst-til-video skal du beskrive motiv, omgivelser, synlig handling, kameraadfærd og lyd. En nyttig produktscene kan begynde med et totalbillede, bevæge sig mod en materialedetalje og slutte med produktet i brug. Briefs med flere indstillinger kan navngive hver indstilling og overgangen mellem kameravinkler, mens motiv og visuel stil holdes ensartede gennem sekvensen. Typografi kan optræde i scenen, så lever de præcise ord og deres placering, når et skilt eller en titel er vigtig. Modellen dækker realfilm, animation, motion graphics og stiliserede udtryk.</p><p>Billede-til-video bruger ét til ti nøglebilleder. Et enkelt billede etablerer åbningsbilledet; et par fastlægger start og slutning, mens ordnede billeder med tidsstempler styrer bestemte øjeblikke i klippet. Billederne bliver billeder i videoen frem for kun at være generelle stilreferencer. Ved tre eller flere billeder uden tidsstempler kræver producenten en eksplicit varighed: det første og sidste fastlægger endepunkterne, og de øvrige placeres jævnt imellem dem. Tidsstemplede billeder skal være i tidsrækkefølge; automatisk varighed går til det sidste tidsstempel rundet op inden for maksimum på 20 sekunder. Forbered nøglebilleder med kompatible motiver, indramning og visuelle detaljer, og beskriv derefter bevægelsen imellem dem. Til en produktafsløring kan det første billede vise den lukkede genstand og det sidste den åbnede opstilling med den mellemliggende handling defineret i prompten.</p><p>Videofortsættelse tager over fra det leverede klips sidste billeder. Lanceringsarbejdsgangen bruger op til fire sekunders eksisterende video og lyd som kontekst til næste handling og fører kameraadfærd, bevægelse og lyd hen over samlingen. Vælg en kildeafslutning, der tydeligt etablerer, hvor motiv og kamera er på vej hen, og beskriv det næste, der sker. Fortsættelse er forskellig fra at omskrive en eksisterende indstilling: FLUX Video Edit er en særskilt redigeringsmodel og bliver ikke en del af genereringsmodellen alene, fordi begge accepterer video.</p><p>Tekst- og billedbetinget generering understøtter klip fra 5 til 20 sekunder. Den tilstandsspecifikke oversigt giver videofortsættelse et outputinterval på 5–15 sekunder. Varighed og billedformat kan vælges automatisk, eller briefen kan angive en understøttet liggende, kvadratisk eller stående form, herunder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 og 9:21. Outputtet er på 24 billeder pr. sekund. Vælg varigheden omkring et lille antal synlige handlinger frem for at forsøge at få en hel fortælling ind i én kort generering.</p><p>HD-output kommer direkte fra genereringen; FHD, QHD og UHD færdiggør samme scene med en videoopsampler. For 16:9 er de leverede dimensioner henholdsvis 1280 × 704, 1920 × 1088, 2560 × 1440 og 3840 × 2176. Dimensioner tilpasses multipla af 32, så en navngiven opløsningsklasse kan afvige fra en konventionel leveringsstørrelse. Beskær det færdige billede, når et præcist standardlærred kræves, og bevar det indhold, der er vigtigt ved kanterne. Den højere opløsning er et færdiggørelsestrin frem for en anden fortolkning af indstillingen.</p><p>Indbygget lyd er aktiveret som standard og kan deaktiveres til et lydløst klip. Til dialog skal replikken citeres, taleren identificeres og fremførelsen beskrives; flersproget tale, accenter og læbesynkronisering er en del af modellens lyd-video-funktioner. Hold dialog og lydmarkører forbundet med den synlige begivenhed, som et låg, der lukker, eller fodtrin, der bevæger sig væk. Gennemgå stemme, timing og talt ordlyd sammen med billedet frem for at behandle lyden som et uvedkommende lag tilføjet efter genereringen.</p><p>Draft-tilstand producerer en HD-forhåndsvisning og en udkastpakke. Forbedr den valgte pakke for at rendere denne generering i fuld kvalitet; at sende samme prompt som en ny fuld renderingsanmodning er en ny fortolkning og kan producere en anden optagelse. Udkast bruger kun HD, mens forbedring kan vælge de fire opløsningsklasser og har FHD som standard. Det giver en praktisk rækkefølge, hvor handling og komposition udforskes først, og den valgte optagelse derefter færdiggøres til den tilsigtede leveringsstørrelse.</p><p>Producentens arbejdsgang returnerer en opgaveidentifikator, før MP4-filen er klar, og leverer derefter det færdige klip, når behandlingen er afsluttet. Signerede resultatplaceringer udløber efter cirka to timer, så gem selve aktivet, når indstillingen er valgt. Undersøg nøglebilledovergange, klip, typografi, motivdetaljer og lydsamling i forhold til briefen. Til en længere sekvens skal den vellykkede indstillings referencer og afsluttende kontekst bevares som input til næste klip frem for at antage, at én kort anmodning indeholder hele produktionen.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tilgængelig i Ailoot · input og metoder</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Inputtyper</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Outputtyper</dt><dd><code>video</code></dd></div><div><dt>Outputformat</dt><dd>oprindelige MP4-bytes; ingen normalisering/transkodning</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Felt</th><th>Type</th><th>Krav</th><th>Værdier og grænser</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>black-forest-labs/flux-3-video</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20</div><div>Minimum: 1</div><div>Maksimum: 600</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>720p, 1080p</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>21:9, 16:9, 4:3, 1:1, 3:4, 9:16</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>false, true</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>Minimumsantal elementer: 1</div><div>Maksimalt antal elementer: 2</div><div>Inputindhold: Array af billedobjekter. Hvert objekt har type=image_url, image_url med url samt frame_type. Brug en HTTPS URL til et billede, og sæt frame_type til first_frame eller last_frame. Hver billedrolle må højst forekomme én gang.</div><div>Præcise nøgler: type, image_url, frame_type</div><div>Betingelser: Disse nøgler beskriver hvert billedobjekt; image_url indeholder kun url. Udelad frame_images ved en forespørgsel med kun tekst.</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>Mønster: ^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=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>Mønster: ^https://</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinationer af inputmaterialer</summary><p class=\"note-s\"><b>Tekst til video</b> · En skriftlig prompt. · Påkrævet: model, prompt, duration</p><p class=\"note-s\"><code>Angiv prompten som tekst og varigheden i hele sekunder. Vælg en understøttet opløsning og om nødvendigt et billedformat.</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 · Maksimalt antal UTF-8-bytes: 10.000 · Mindst ét tegn, der ikke er et blanktegn, kræves: Ja</p><p class=\"note-s\"><b>Billede til video</b> · En skriftlig prompt og et billede til første frame. · Påkrævet: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images er et array. Hvert billedobjekt har type, image_url og frame_type; image_url indeholder url. Sæt type til image_url. Brug first_frame med et valgfrit last_frame. Hver billedrolle må højst forekomme én gang. Angiv en offentlig HTTPS URL til hvert billede. Vælg en understøttet opløsning og om nødvendigt et billedformat.</code></p><p class=\"note-s\">Præcise nøgler: 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 · Maksimalt antal UTF-8-bytes: 10.000 · Mindst ét tegn, der ikke er et blanktegn, kræves: Ja</p><p class=\"note-s\"><b>Continue a video</b> · En skriftlig prompt og din færdige oprindelige video. · Påkrævet: model, prompt, duration, previous_job_id</p><p class=\"note-s\"><code>Sæt previous_job_id til det offentlige video-ID for din færdige original. Brug samme model, konto og API-nøgle. Behold dens eksisterende opgaveidentitet; denne forespørgsel opretter en separat fortsættelsesopgave. Vælg en understøttet opløsning og om nødvendigt et billedformat.</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 · Maksimalt antal UTF-8-bytes: 10.000 · Mindst ét tegn, der ikke er et blanktegn, kræves: Ja</p></details><details class=\"note-s\" data-method-contract><summary>Metodeparametre og livscyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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>Livscyklus: <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\">Priser</h3><div class=\"card-result-process\" data-billing-basis><h5>Sådan beregnes det endelige beløb</h5><p class=\"note-s\">De viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.</p><dl data-price-conditions><dt>Hurtig tilstand</dt><dd>Ikke angivet <span class=\"note-s\">Når hurtig tilstand er valgt</span></dd><dt>flex-tilstand</dt><dd>Ikke angivet <span class=\"note-s\">Når flex-tilstanden er valgt</span></dd><dt>Maksimal ræsonneringsindsats</dt><dd>Ikke angivet <span class=\"note-s\">Når default-justeringen anvendes ved maksimal ræsonneringsindsats</span></dd></dl></div><div data-declared-tariff-pricing><h4>Estimerede takster til sammenligning</h4><h4>Priser efter konfiguration</h4><p class=\"note-s\">Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Takstplan</th><th>Forventet mængde</th><th>Omkostningskomponent</th><th>Referencetilstand</th><th>Afregningsenhed</th><th>Afregningsbetingelser</th><th>Beløb</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Grundpriser for tokens</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>Grundtakst</td><td data-cell-label=\"Forventet mængde\"><span class=\"card-cell-label\">Forventet mængde</span>—</td><td data-cell-label=\"Omkostningskomponent\"><span class=\"card-cell-label\">Omkostningskomponent</span>—</td><td data-cell-label=\"Referencetilstand\"><span class=\"card-cell-label\">Referencetilstand</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>—</td><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>—</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Input · Inputtokens · Estimat kun til sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Output · Outputtokens · Estimat kun til sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cachelæsning · Estimat kun til sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cacheskrivning · Estimat kun til sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cacheskrivning, 1 time · Estimat kun til sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Tekst til video · Billede til video (enkeltbilleder) · referencesats</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Forventet mængde\"><span class=\"card-cell-label\">Forventet mængde</span>—</td><td data-cell-label=\"Omkostningskomponent\"><span class=\"card-cell-label\">Omkostningskomponent</span><code>reference_output_rate</code></td><td data-cell-label=\"Referencetilstand\"><span class=\"card-cell-label\">Referencetilstand</span>Tekst til video · Billede til video (enkeltbilleder)</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>pr. outputsekund</td><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>—</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Referencesats pr. sekund outputvideo · Estimat kun til sammenligning</span> <b>$0.34</b> <span class=\"price-unit\">pr. outputsekund</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Forventet mængde\"><span class=\"card-cell-label\">Forventet mængde</span>—</td><td data-cell-label=\"Omkostningskomponent\"><span class=\"card-cell-label\">Omkostningskomponent</span>—</td><td data-cell-label=\"Referencetilstand\"><span class=\"card-cell-label\">Referencetilstand</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>pr. videosekund</td><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>resolution: 1080p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris · Estimat kun til sammenligning</span> <b>$0.58</b> <span class=\"price-unit\">pr. videosekund</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Forventet mængde\"><span class=\"card-cell-label\">Forventet mængde</span>—</td><td data-cell-label=\"Omkostningskomponent\"><span class=\"card-cell-label\">Omkostningskomponent</span>—</td><td data-cell-label=\"Referencetilstand\"><span class=\"card-cell-label\">Referencetilstand</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>pr. videosekund</td><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>resolution: 720p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris · Estimat kun til sammenligning</span> <b>$0.34</b> <span class=\"price-unit\">pr. videosekund</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Forventet mængde\"><span class=\"card-cell-label\">Forventet mængde</span>—</td><td data-cell-label=\"Omkostningskomponent\"><span class=\"card-cell-label\">Omkostningskomponent</span>—</td><td data-cell-label=\"Referencetilstand\"><span class=\"card-cell-label\">Referencetilstand</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>pr. videosekund</td><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>input: video_continuation; opløsning: 1080p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris · Estimat kun til sammenligning</span> <b>$1.06</b> <span class=\"price-unit\">pr. videosekund</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Forventet mængde\"><span class=\"card-cell-label\">Forventet mængde</span>—</td><td data-cell-label=\"Omkostningskomponent\"><span class=\"card-cell-label\">Omkostningskomponent</span>—</td><td data-cell-label=\"Referencetilstand\"><span class=\"card-cell-label\">Referencetilstand</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>pr. videosekund</td><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>input: video_continuation; opløsning: 720p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris · Estimat kun til sammenligning</span> <b>$0.82</b> <span class=\"price-unit\">pr. videosekund</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Anslået genereringsomkostning</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Forventet mængde\"><span class=\"card-cell-label\">Forventet mængde</span>estimat for én generering</td><td data-cell-label=\"Omkostningskomponent\"><span class=\"card-cell-label\">Omkostningskomponent</span>—</td><td data-cell-label=\"Referencetilstand\"><span class=\"card-cell-label\">Referencetilstand</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>—</td><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>—</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Anslået genereringsomkostning · Estimat kun til sammenligning</span> <b>$1.7</b> <span class=\"price-unit\">estimat før generering</span></div><p class=\"note-s\">Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. <a href=\"/docs/da/billing/reserve/\">Sådan fungerer reservation og afregning →</a></p><div data-declared-reference-pricing><h4>Detaljer om referencetariffen</h4><p class=\"note-s\">Referenceplaner på modelniveau ændrer ikke metodevalg, prisoverslag eller opkrævninger. Ved den aktive afregning anvendes taksterne for den valgte Ailoot-metode.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Prisreferencer for videokonfigurationer</summary><h4>Priser efter konfiguration</h4><p class=\"note-s\">Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Afregningsbetingelser</th><th>Beløb</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>Der er ikke angivet nogen yderligere betingelse i denne prisnøgle.</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris</span> <b>$0.34</b> <span class=\"price-unit\">pr. videosekund</span></div><p class=\"note-s\">Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>resolution: 720p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris</span> <b>$0.34</b> <span class=\"price-unit\">pr. videosekund</span></div><p class=\"note-s\">Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>resolution: 1080p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris</span> <b>$0.58</b> <span class=\"price-unit\">pr. videosekund</span></div><p class=\"note-s\">Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>input: video_continuation; opløsning: 720p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris</span> <b>$0.82</b> <span class=\"price-unit\">pr. videosekund</span></div><p class=\"note-s\">Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>input: video_continuation; opløsning: 1080p</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Output · Videopris</span> <b>$1.06</b> <span class=\"price-unit\">pr. videosekund</span></div><p class=\"note-s\">Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Eksempelanmodninger</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><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 · opret video</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiér kode\"><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\">Hent og gem resultater</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">signerede indholds-URL’er, du ejer</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>Kontrollér opgavestatus</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><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 for den oprindelige handling</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiér kode\"><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>Læsning af andet indhold</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><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\">Gem hvert færdigt output, du ejer</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiér kode\"><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>Behold alle færdige resultater</h5><p class=\"note-s\">Gem hver færdig video eller returneret fil; hent hver faktisk returneret fil-URL.</p><p class=\"note-s\">Behold hvert faktisk output, du ejer, og dets returnerede, målte metadata.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Hvis det oprindelige svar skal kontrolleres</h5><p class=\"note-s\">503 result_pending_check + originalid + X-Should-Retry:false; gentag aldrig originalen</p></div><details class=\"card-about\" data-output-fields><summary>Svarfelter</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Felt</th><th>Type</th><th>Betydning</th></tr></thead><tbody><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Denne videos position i outputlisten, talt fra nul.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Signeret HTTPS URL til download af denne færdige video.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>SHA-256-hash af de oprindelige videobytes; null, hvis den ikke er tilgængelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Den oprindelige videofils størrelse i bytes; null, hvis den ikke er tilgængelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Målt videovarighed i millisekunder; null, hvis den ikke er tilgængelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Videoens bredde i pixels; null, hvis den ikke er tilgængelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Videoens højde i pixels; null, hvis den ikke er tilgængelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Identifikator for videocodec; null, hvis den ikke er registreret.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Om videoen indeholder et lydspor; null, hvis det ikke er målt.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</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=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Identifikator for lydcodec; null, når ingen identifikator er registreret.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fejl og næste trin</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Betingelse</th><th>Næste trin</th></tr></thead><tbody><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Videoadgang er utilgængelig, eller dette video-ID blev ikke fundet.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Kontrollér videoadgang. For en eksisterende video skal du bruge dens oprindelige offentlige ID og samme API-nøgle.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>API-nøglen stemmer ikke overens med den autentificerede konto.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Kontrollér din API-nøgle og kontoadgang, før du indsender.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Forespørgslen kunne ikke læses, eller downloadindekset er ugyldigt.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Ret forespørgselsindholdet. Ved download skal du vælge et outputindeks, der er returneret af den oprindelige opgave.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Den valgte videokonfiguration kan ikke prissættes.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Vælg en understøttet videokonfiguration, og udfyld dens påkrævede indstillinger, før du sender en rettet forespørgsel.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Et videoinput eller den oprindelige fortsættelsesopgave er ugyldigt.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Brug gyldigt HTTPS-input. Ved fortsættelse skal du bruge din færdige originals offentlige video-ID med samme API-nøgle.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>402 · <code>billing_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Den tilgængelige saldo eller grænserne tillader ikke en reservation.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Kontrollér din tilgængelige saldo og dine grænser, før du sender en ny forespørgsel.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code>server_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Videokontrol, lager eller tjenesteadgang er midlertidigt utilgængelig.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Vent, indtil tjenesten er tilgængelig. Hvis du allerede har et video-ID, skal du kontrollere den oprindelige opgave i stedet for at oprette en ny generering.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Det oprindelige videoresultat og opkrævningen skal kontrolleres.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Behold det returnerede video-ID, og kontrollér denne opgave. Send ikke en erstatningsforespørgsel om generering, mens den kontrolleres.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Download af den eksisterende video er midlertidigt utilgængelig.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Kontrollér samme videoopgave senere, og download dens eksisterende output. En ny generering opretter en separat operation.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Videoindholdet er ikke blevet offentliggjort.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Kontrollér den oprindelige opgaves status. Download, når den melder completed; hvis den melder failed, skal du følge dens meddelelse om kontrol af opkrævningen.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliaser</h3><h4>Modelaliaser</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>Aliaser for metodestier</h4><p class=\"note-s\">Brug metodestierne vist ovenfor.</p><h4>Relaterede kalder-ID’er</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 viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.",
          "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": "Behold hvert faktisk output, du ejer, og dets returnerede, målte metadata.",
            "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": "Videoadgang er utilgængelig, eller dette video-ID blev ikke fundet.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér videoadgang. For en eksisterende video skal du bruge dens oprindelige offentlige ID og samme API-nøgle.",
                "type": "not_found_error"
              },
              {
                "condition": "API-nøglen stemmer ikke overens med den autentificerede konto.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér din API-nøgle og kontoadgang, før du indsender.",
                "type": "authentication_error"
              },
              {
                "condition": "Forespørgslen kunne ikke læses, eller downloadindekset er ugyldigt.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Ret forespørgselsindholdet. Ved download skal du vælge et outputindeks, der er returneret af den oprindelige opgave.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den valgte videokonfiguration kan ikke prissættes.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Vælg en understøttet videokonfiguration, og udfyld dens påkrævede indstillinger, før du sender en rettet forespørgsel.",
                "type": "price_unavailable"
              },
              {
                "condition": "Et videoinput eller den oprindelige fortsættelsesopgave er ugyldigt.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Brug gyldigt HTTPS-input. Ved fortsættelse skal du bruge din færdige originals offentlige video-ID med samme API-nøgle.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den tilgængelige saldo eller grænserne tillader ikke en reservation.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér din tilgængelige saldo og dine grænser, før du sender en ny forespørgsel.",
                "type": "billing_error"
              },
              {
                "condition": "Videokontrol, lager eller tjenesteadgang er midlertidigt utilgængelig.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Vent, indtil tjenesten er tilgængelig. Hvis du allerede har et video-ID, skal du kontrollere den oprindelige opgave i stedet for at oprette en ny generering.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Det oprindelige videoresultat og opkrævningen skal kontrolleres.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Behold det returnerede video-ID, og kontrollér denne opgave. Send ikke en erstatningsforespørgsel om generering, mens den kontrolleres.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Download af den eksisterende video er midlertidigt utilgængelig.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Kontrollér samme videoopgave senere, og download dens eksisterende output. En ny generering opretter en separat operation.",
                "type": "server_error"
              },
              {
                "condition": "Videoindholdet er ikke blevet offentliggjort.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér den oprindelige opgaves status. Download, når den melder completed; hvis den melder failed, skal du følge dens meddelelse om kontrol af opkrævningen.",
                "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 + originalid + X-Should-Retry:false; gentag aldrig originalen"
            },
            "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": "Angiv prompten som tekst og varigheden i hele sekunder. Vælg en understøttet opløsning og om nødvendigt et billedformat.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "En skriftlig 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 er et array. Hvert billedobjekt har type, image_url og frame_type; image_url indeholder url. Sæt type til image_url. Brug first_frame med et valgfrit last_frame. Hver billedrolle må højst forekomme én gang. Angiv en offentlig HTTPS URL til hvert billede. Vælg en understøttet opløsning og om nødvendigt et billedformat.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "En skriftlig prompt og et billede til første 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": "Sæt previous_job_id til det offentlige video-ID for din færdige original. Brug samme model, konto og API-nøgle. Behold dens eksisterende opgaveidentitet; denne forespørgsel opretter en separat fortsættelsesopgave. Vælg en understøttet opløsning og om nødvendigt et billedformat.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "previous_job_id"
                ],
                "required_material": "En skriftlig prompt og din færdige oprindelige 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": "Denne videos position i outputlisten, talt fra 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": "Signeret HTTPS URL til download af denne færdige 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 af de oprindelige videobytes; null, hvis den ikke er tilgængelig.",
                  "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": "Den oprindelige videofils størrelse i bytes; null, hvis den ikke er tilgængelig.",
                  "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": "Målt videovarighed i millisekunder; null, hvis den ikke er tilgængelig.",
                  "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": "Videoens bredde i pixels; null, hvis den ikke er tilgængelig.",
                  "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": "Videoens højde i pixels; null, hvis den ikke er tilgængelig.",
                  "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": "Identifikator for videocodec; null, hvis den ikke er registreret.",
                  "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": "Om videoen indeholder et lydspor; null, hvis det ikke er målt.",
                  "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": "Identifikator for lydcodec; null, når ingen identifikator er registreret.",
                  "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": "signerede indholds-URL’er, du ejer",
              "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": "Disse nøgler beskriver hvert billedobjekt; image_url indeholder kun url. Udelad frame_images ved en forespørgsel med kun tekst.",
                "content": "Array af billedobjekter. Hvert objekt har type=image_url, image_url med url samt frame_type. Brug en HTTPS URL til et billede, og sæt frame_type til first_frame eller last_frame. Hver billedrolle må højst forekomme én gang.",
                "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 til video · Billede til video (enkeltbilleder) · referencesats",
            "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": "Videopris",
            "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": "Videopris",
            "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; opløsning: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Videopris",
            "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": "Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Anslået genereringsomkostning",
            "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": "95da64ed637fd24131e79adda5066a5605da2f596920854db730875888eec09f",
    "input_html_sha256": "d960298a9bffb741352df544b33c093d78c6b32365efd3f8332ce43cdd8dfac5",
    "private_audit_sha256": "9cab5c0f7b4d8d471c3980b9ca96269462179b9b295331907add6f597f3e40d5",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/da/black-forest-labs-flux-3-video/",
    "description": "FLUX 3 Video skaber klip med synkroniseret dialog, effekter og atmosfære ud fra tekst, fastlagte billeder eller et klip, der skal fortsættes. Nøglebilleder, komposition med flere indstillinger og forbedring af udkast hjælper med at udvikle en kontrolleret sekvens og bevare den valgte optagelse.",
    "locale": "da",
    "md_url": "https://ailoot.ai/models/da/black-forest-labs-flux-3-video/index.md",
    "title": "Black Forest Labs: FLUX.3 Video — Ailoot",
    "url": "https://ailoot.ai/models/da/black-forest-labs-flux-3-video/"
  },
  "rawModel": {
    "about": "FLUX 3 Video er Black Forest Labs' multimodale model til generering af video med synkroniseret lyd. Den skaber scener fra en tekstbrief, bygger bevægelse omkring fastlagte billeder eller fortsætter et eksisterende klip. Tale, effekter og atmosfære kan genereres sammen med billederne og understøtte en kort scene, hvor kamerabevægelse, handling og lyd designes som én sekvens.\n\nTil tekst-til-video skal du beskrive motiv, omgivelser, synlig handling, kameraadfærd og lyd. En nyttig produktscene kan begynde med et totalbillede, bevæge sig mod en materialedetalje og slutte med produktet i brug. Briefs med flere indstillinger kan navngive hver indstilling og overgangen mellem kameravinkler, mens motiv og visuel stil holdes ensartede gennem sekvensen. Typografi kan optræde i scenen, så lever de præcise ord og deres placering, når et skilt eller en titel er vigtig. Modellen dækker realfilm, animation, motion graphics og stiliserede udtryk.\n\nBillede-til-video bruger ét til ti nøglebilleder. Et enkelt billede etablerer åbningsbilledet; et par fastlægger start og slutning, mens ordnede billeder med tidsstempler styrer bestemte øjeblikke i klippet. Billederne bliver billeder i videoen frem for kun at være generelle stilreferencer. Ved tre eller flere billeder uden tidsstempler kræver producenten en eksplicit varighed: det første og sidste fastlægger endepunkterne, og de øvrige placeres jævnt imellem dem. Tidsstemplede billeder skal være i tidsrækkefølge; automatisk varighed går til det sidste tidsstempel rundet op inden for maksimum på 20 sekunder. Forbered nøglebilleder med kompatible motiver, indramning og visuelle detaljer, og beskriv derefter bevægelsen imellem dem. Til en produktafsløring kan det første billede vise den lukkede genstand og det sidste den åbnede opstilling med den mellemliggende handling defineret i prompten.\n\nVideofortsættelse tager over fra det leverede klips sidste billeder. Lanceringsarbejdsgangen bruger op til fire sekunders eksisterende video og lyd som kontekst til næste handling og fører kameraadfærd, bevægelse og lyd hen over samlingen. Vælg en kildeafslutning, der tydeligt etablerer, hvor motiv og kamera er på vej hen, og beskriv det næste, der sker. Fortsættelse er forskellig fra at omskrive en eksisterende indstilling: FLUX Video Edit er en særskilt redigeringsmodel og bliver ikke en del af genereringsmodellen alene, fordi begge accepterer video.\n\nTekst- og billedbetinget generering understøtter klip fra 5 til 20 sekunder. Den tilstandsspecifikke oversigt giver videofortsættelse et outputinterval på 5–15 sekunder. Varighed og billedformat kan vælges automatisk, eller briefen kan angive en understøttet liggende, kvadratisk eller stående form, herunder 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16 og 9:21. Outputtet er på 24 billeder pr. sekund. Vælg varigheden omkring et lille antal synlige handlinger frem for at forsøge at få en hel fortælling ind i én kort generering.\n\nHD-output kommer direkte fra genereringen; FHD, QHD og UHD færdiggør samme scene med en videoopsampler. For 16:9 er de leverede dimensioner henholdsvis 1280 × 704, 1920 × 1088, 2560 × 1440 og 3840 × 2176. Dimensioner tilpasses multipla af 32, så en navngiven opløsningsklasse kan afvige fra en konventionel leveringsstørrelse. Beskær det færdige billede, når et præcist standardlærred kræves, og bevar det indhold, der er vigtigt ved kanterne. Den højere opløsning er et færdiggørelsestrin frem for en anden fortolkning af indstillingen.\n\nIndbygget lyd er aktiveret som standard og kan deaktiveres til et lydløst klip. Til dialog skal replikken citeres, taleren identificeres og fremførelsen beskrives; flersproget tale, accenter og læbesynkronisering er en del af modellens lyd-video-funktioner. Hold dialog og lydmarkører forbundet med den synlige begivenhed, som et låg, der lukker, eller fodtrin, der bevæger sig væk. Gennemgå stemme, timing og talt ordlyd sammen med billedet frem for at behandle lyden som et uvedkommende lag tilføjet efter genereringen.\n\nDraft-tilstand producerer en HD-forhåndsvisning og en udkastpakke. Forbedr den valgte pakke for at rendere denne generering i fuld kvalitet; at sende samme prompt som en ny fuld renderingsanmodning er en ny fortolkning og kan producere en anden optagelse. Udkast bruger kun HD, mens forbedring kan vælge de fire opløsningsklasser og har FHD som standard. Det giver en praktisk rækkefølge, hvor handling og komposition udforskes først, og den valgte optagelse derefter færdiggøres til den tilsigtede leveringsstørrelse.\n\nProducentens arbejdsgang returnerer en opgaveidentifikator, før MP4-filen er klar, og leverer derefter det færdige klip, når behandlingen er afsluttet. Signerede resultatplaceringer udløber efter cirka to timer, så gem selve aktivet, når indstillingen er valgt. Undersøg nøglebilledovergange, klip, typografi, motivdetaljer og lydsamling i forhold til briefen. Til en længere sekvens skal den vellykkede indstillings referencer og afsluttende kontekst bevares som input til næste klip frem for at antage, at én kort anmodning indeholder hele produktionen.",
    "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 fulde prisoplysninger for konfigurationen findes under detaljer."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "b4dc879135bc0b33150a530a",
        "label": "Prisreferencer for videokonfigurationer",
        "profiles": [
          {
            "basis": "Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.",
            "dimensions": {
              "conditions": "Der er ikke angivet nogen yderligere betingelse i denne prisnøgle."
            },
            "label": "Videopris",
            "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": "Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.",
            "dimensions": {
              "conditions": "resolution: 720p"
            },
            "label": "Videopris",
            "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": "Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "Videopris",
            "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": "Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.",
            "dimensions": {
              "conditions": "input: video_continuation; opløsning: 720p"
            },
            "label": "Videopris",
            "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": "Offentliggjort prisreference for den viste konfiguration. Den endelige afregning følger den konfiguration, der faktisk faktureres.",
            "dimensions": {
              "conditions": "input: video_continuation; opløsning: 1080p"
            },
            "label": "Videopris",
            "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 viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.",
          "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": "Behold hvert faktisk output, du ejer, og dets returnerede, målte metadata.",
            "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": "Videoadgang er utilgængelig, eller dette video-ID blev ikke fundet.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér videoadgang. For en eksisterende video skal du bruge dens oprindelige offentlige ID og samme API-nøgle.",
                "type": "not_found_error"
              },
              {
                "condition": "API-nøglen stemmer ikke overens med den autentificerede konto.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér din API-nøgle og kontoadgang, før du indsender.",
                "type": "authentication_error"
              },
              {
                "condition": "Forespørgslen kunne ikke læses, eller downloadindekset er ugyldigt.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Ret forespørgselsindholdet. Ved download skal du vælge et outputindeks, der er returneret af den oprindelige opgave.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den valgte videokonfiguration kan ikke prissættes.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Vælg en understøttet videokonfiguration, og udfyld dens påkrævede indstillinger, før du sender en rettet forespørgsel.",
                "type": "price_unavailable"
              },
              {
                "condition": "Et videoinput eller den oprindelige fortsættelsesopgave er ugyldigt.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Brug gyldigt HTTPS-input. Ved fortsættelse skal du bruge din færdige originals offentlige video-ID med samme API-nøgle.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den tilgængelige saldo eller grænserne tillader ikke en reservation.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér din tilgængelige saldo og dine grænser, før du sender en ny forespørgsel.",
                "type": "billing_error"
              },
              {
                "condition": "Videokontrol, lager eller tjenesteadgang er midlertidigt utilgængelig.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Vent, indtil tjenesten er tilgængelig. Hvis du allerede har et video-ID, skal du kontrollere den oprindelige opgave i stedet for at oprette en ny generering.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Det oprindelige videoresultat og opkrævningen skal kontrolleres.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Behold det returnerede video-ID, og kontrollér denne opgave. Send ikke en erstatningsforespørgsel om generering, mens den kontrolleres.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Download af den eksisterende video er midlertidigt utilgængelig.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Kontrollér samme videoopgave senere, og download dens eksisterende output. En ny generering opretter en separat operation.",
                "type": "server_error"
              },
              {
                "condition": "Videoindholdet er ikke blevet offentliggjort.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollér den oprindelige opgaves status. Download, når den melder completed; hvis den melder failed, skal du følge dens meddelelse om kontrol af opkrævningen.",
                "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 + originalid + X-Should-Retry:false; gentag aldrig originalen"
            },
            "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": "Angiv prompten som tekst og varigheden i hele sekunder. Vælg en understøttet opløsning og om nødvendigt et billedformat.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "En skriftlig 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 er et array. Hvert billedobjekt har type, image_url og frame_type; image_url indeholder url. Sæt type til image_url. Brug first_frame med et valgfrit last_frame. Hver billedrolle må højst forekomme én gang. Angiv en offentlig HTTPS URL til hvert billede. Vælg en understøttet opløsning og om nødvendigt et billedformat.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "En skriftlig prompt og et billede til første 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": "Sæt previous_job_id til det offentlige video-ID for din færdige original. Brug samme model, konto og API-nøgle. Behold dens eksisterende opgaveidentitet; denne forespørgsel opretter en separat fortsættelsesopgave. Vælg en understøttet opløsning og om nødvendigt et billedformat.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "previous_job_id"
                ],
                "required_material": "En skriftlig prompt og din færdige oprindelige 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": "Denne videos position i outputlisten, talt fra 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": "Signeret HTTPS URL til download af denne færdige 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 af de oprindelige videobytes; null, hvis den ikke er tilgængelig.",
                  "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": "Den oprindelige videofils størrelse i bytes; null, hvis den ikke er tilgængelig.",
                  "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": "Målt videovarighed i millisekunder; null, hvis den ikke er tilgængelig.",
                  "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": "Videoens bredde i pixels; null, hvis den ikke er tilgængelig.",
                  "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": "Videoens højde i pixels; null, hvis den ikke er tilgængelig.",
                  "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": "Identifikator for videocodec; null, hvis den ikke er registreret.",
                  "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": "Om videoen indeholder et lydspor; null, hvis det ikke er målt.",
                  "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": "Identifikator for lydcodec; null, når ingen identifikator er registreret.",
                  "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": "signerede indholds-URL’er, du ejer",
              "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": "Disse nøgler beskriver hvert billedobjekt; image_url indeholder kun url. Udelad frame_images ved en forespørgsel med kun tekst.",
                "content": "Array af billedobjekter. Hvert objekt har type=image_url, image_url med url samt frame_type. Brug en HTTPS URL til et billede, og sæt frame_type til first_frame eller last_frame. Hver billedrolle må højst forekomme én gang.",
                "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 til video · Billede til video (enkeltbilleder) · referencesats",
            "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": "Videopris",
            "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": "Videopris",
            "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; opløsning: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Videopris",
            "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": "Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Anslået genereringsomkostning",
            "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 skaber klip med synkroniseret dialog, effekter og atmosfære ud fra tekst, fastlagte billeder eller et klip, der skal fortsættes. Nøglebilleder, komposition med flere indstillinger og forbedring af udkast hjælper med at udvikle en kontrolleret sekvens og bevare den valgte optagelse."
  },
  "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 skaber klip med synkroniseret dialog, effekter og atmosfære ud fra tekst, fastlagte billeder eller et klip, der skal fortsættes. Nøglebilleder, komposition med flere indstillinger og forbedring af udkast hjælper med at udvikle en kontrolleret sekvens og bevare den valgte optagelse.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7835a654801ab68df529a04f297967176acea2876b80dd2650df905c55819f7c",
    "renderer_sha256": "2bf9f26ea9bfd57ed53d867671d8f05b41a6ea85089f48039e3365dc2b92ec2c"
  },
  "sourceRevision": "482f5d033f15eb0ea7a7ee5926517e834f8af746c2370d9a411c085621ede92b"
}
