{
  "aboutHtml": "<p>Seedance 2.0 is het standaardmodel van ByteDance Seed voor multimodale audio-videocreatie. Het combineert tekst, beelden, video&#39;s en audio in een architectuur voor gezamenlijke generatie, met afzonderlijke creatieve workflows voor referentiegestuurde scènes, videobewerking en videoverlenging. Het is nuttig wanneer de briefing zowel een samenhangende uitvoering als specifieke visuele of geluidsinformatie uit voorbereid materiaal vereist.</p><h4>Multimodale referentie en regie</h4><p>Beelden kunnen het uiterlijk van het onderwerp, de visuele stijl en de compositie bepalen. Videoreferenties kunnen actie, camerabeweging en effecten sturen. Audio kan stemtimbre, muziek of dialoog sturen. Definieer de rol van elk materiaal en beschrijf daarna de scène die eruit moet ontstaan. De fabrikant benadrukt controle over spel, belichting, schaduwen en camerataal.</p><p>Bereid voor een productverhaal een productbeeld, een referentie voor de camerabeweging en een audioaanwijzing voor. Een briefing kan luiden: “Behoud de blauwe glazen vaas uit Image 1. Gebruik de langzame zijwaartse trackingbeweging uit Video 1. De vaas staat op een zonovergoten plank, met zachte instrumentale muziek op basis van Audio 1.” De bedoelde uitvoer is een nieuw geënsceneerde scène die geselecteerde referentie-informatie combineert.</p><p>Referentie-invoer kan beeld en audio, beeld en video, video en audio of alle drie combineren. Invoer met uitsluitend audio en tekst plus audio zonder beeld of video worden niet ondersteund. Traditionele tekst-naar-video, generatie met een eerste frame en generatie met een eerste en laatste frame zijn eveneens gedocumenteerd. Gebruik de specifieke eindpuntworkflow wanneer vaste composities voor het begin en het einde belangrijk zijn: een referentiebeeld binnen een omni-referentieprompt als eindpunt benoemen is slechts een indirecte manier om het te sturen.</p><h4>Beeldmateriaal bewerken</h4><p>Het model kan een onderwerp vervangen, objecten toevoegen of verwijderen, elementen veranderen en delen van een video opnieuw tekenen of herstellen. Beschrijf de specifieke wijziging en identificeer het bronmateriaal. Vermeld bij een toevoeging het tijdstip waarop en de positie waar deze verschijnt; benoem bij verwijdering of vervanging het object precies en geef aan wat moet blijven.</p><p>Bijvoorbeeld: “Vervang de bureaulamp in Video 1 door de messing lamp uit Image 1. Behoud de camerabeweging, de opstelling op het bureau en de lichtrichting.” Het gewenste resultaat is een bewerkte versie van de scène met de bedoelde vervanging. Controleer zowel de ongewijzigde gebieden als het nieuwe object, vooral wanneer iets aan het zicht wordt onttrokken, tijdens beweging en bij shotwisselingen.</p><h4>Een reeks verlengen en verbinden</h4><p>Seedance 2.0 kan een video voorwaarts of achterwaarts verlengen en maximaal drie aangeleverde clips met gegenereerde overgangen verbinden. Specificeer de tijdsrichting en de nieuwe gebeurtenis. Orden voor een verbinding de clips en beschrijf de overgang tussen elk paar, zoals een camera die in het ene shot door een deuropening gaat en in de volgende omgeving aankomt.</p><p>Een eenvoudige verlenging geeft doorgaans de voortzetting terug die rond het bronmateriaal is ontwikkeld; voeg een duidelijke instructie toe als het uiteindelijke resultaat ook het oorspronkelijke segment moet herhalen. Bij het voltooien van een verbinding tussen twee of drie clips kan de gedocumenteerde workflow zowel oorspronkelijk materiaal als nieuwe overgangsinhoud bevatten. Dat is nuttig om een opening of einde uit te werken of voorbereide scènes te verbinden zonder de verbindende actie ongespecificeerd te laten.</p><h4>Uitvoer van de standaardversie en 4K</h4><p>De standaardversie beschrijft MP4 met 24 fps en een duur van 4 tot 15 seconden. De uitvoerniveaus zijn 480p, 720p en 1080p met 8-bits kleurdiepte, plus 4K met 10-bits kleurdiepte. De ondersteunde verhoudingen zijn 21:9, 16:9, 4:3, 1:1, 3:4 en 9:16. Adaptieve kadrering en automatische duurselectie zijn eveneens gedocumenteerd. De Fast-versie heeft een eigen, beperktere uitvoerspecificatie van 480p/720p.</p><p>De 4K-uitvoer gebruikt H.265/HEVC-codering. Tienbitscodering behoudt extra toongradaties en vloeiendere kleurovergangen, wat van belang is voor materiaal met subtiele licht- of kleurverlopen. Controleer of de bedoelde afspeel- en montageomgeving dat formaat kan decoderen; sommige browsers en apparaten spelen het niet rechtstreeks af. Een compatibele container garandeert op zichzelf geen compatibele videodecodering.</p><p>Het model kan gesynchroniseerd geluid of een stille video genereren en kan het laatste gegenereerde frame teruggeven voor een volgende scène. Gegenereerde audio is mono. De 2.0-familie ondersteunt niet de afzonderlijke Draft-previewmodus in twee fasen, dus die previewfunctie mag niet uit een andere Seedance-versie worden afgeleid.</p><h4>Referentievoorbereiding en inhoudelijke grenzen</h4><p>De gedocumenteerde referentiecapaciteit is maximaal negen beelden, drie video&#39;s en drie audioclips. Rechtstreeks geüploade referentiebeelden of video&#39;s met echte menselijke gezichten worden in dit gedocumenteerde profiel van de producent niet geaccepteerd; portretwerk gebruikt de ondersteunde workflow voor portretmateriaal. Elke video- en audioclip moet 2–15 seconden duren. Alle videoreferenties samen moeten binnen 15 seconden passen en alle audioreferenties samen hebben een eigen totaal van 15 seconden. Videobestanden gebruiken MP4 of MOV met 24–60 fps, tot 200 MB per bestand; audiobestanden gebruiken WAV of MP3, tot 15 MB per bestand. De vermelde beeldformaten zijn JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC en HEIF. Elk beeld moet kleiner zijn dan 30 MB en de request-body mag niet groter zijn dan 64 MB. In het gedocumenteerde profiel voor referentie-invoer moeten beeldbreedte en -hoogte elk strikt tussen 300 en 6.000 pixels liggen, met een breedte-hoogteverhouding strikt tussen 0,4 en 2,5. Referentievideo&#39;s staan 300–6.000 pixels in elke dimensie en verhoudingen van 0,4–2,5 toe, inclusief de grenswaarden, met in totaal 407.696–8.295.044 pixels. MP4- of MOV-video&#39;s gebruiken H.264/AVC- of H.265/HEVC-video en AAC- of MP3-audio.</p><p>Orden de bestanden doelbewust en verwijs naar elk bestand met mediatype en nummer: Image 1, Video 1 en Audio 1. Het nummer volgt de volgorde van de bestanden van dat type. Leg uit welke eigenschappen moeten worden overgedragen en welke broninhoud de nieuwe scène niet mag bepalen. Gedocumenteerde prompttalen omvatten Engels, Spaans, Indonesisch, Portugees en Japans. Houd de gesproken taal binnen een dialoog consistent; de gids raadt het mengen van talen af, behalve voor eigennamen. Scheid voor stemgestuurd werk de spreker, de exacte regel en de voordrachtaanwijzing.</p><p>Bereid eerste en laatste beelden met compatibele kadrering voor. Een afwijking tussen het invoerbeeld en de uitvoerafmetingen kan bijsnijden of een abrupte visuele verandering veroorzaken; overeenkomende afmetingen en adaptieve kadrering zijn gedocumenteerde oplossingen. Houd de beschrijving gericht op de gebeurtenis en de referentierollen. De fabrikant waarschuwt dat lange prompts informatie kunnen versnipperen, waardoor details worden genegeerd. Controleer de resulterende beweging, referentiecontinuïteit, audio-uitvoering en aansluitingen tussen scènes als afzonderlijke onderdelen van het creatieve resultaat.</p><h4>Shotplanning en tekstregie</h4><p>Structureer voor een complexe scène de briefing als Shot 1, Shot 2 en Shot 3 en specificeer camera, onderwerpactie, positie en geluid in volgorde. De gids beveelt één camerabeweging per shot aan en geeft de voorkeur aan langzame, samenhangende acties. Exacte tijdsaanduidingen per shot zijn instabiel, dus een reeks gebeurtenissen is een betere sturing dan het afdwingen van meerdere exacte tijdvensters.</p><p>Het model genereert ook gangbare tekst, waaronder slogans, ondertitels en tekstballonnen. U kunt kleur, visuele behandeling, plaats en verschijnen van de tekst sturen. Gebruik gangbare tekens in plaats van zeldzame tekens of speciale symbolen en controleer de formulering terwijl deze beweegt. Koppel bij onderwerpreferenties elk bestand duidelijk aan het bedoelde personage of object. Productaanzichten kunnen verschillende visuele informatie leveren; collages met personageaanzichten kunnen gezichtsidentiteit verwarren. Een afzonderlijk duidelijk hoofdportret en een beeld van het volledige lichaam vormen de gedocumenteerde aanbeveling voor personagereferenties.</p><h4>Gedrag dat vóór een bewerking moet worden gecontroleerd</h4><p>De gids beschrijft ongewenste ondertitels, logo&#39;s, dubbele personages en stijlverschuiving. Schoon bronmateriaal, consistente labels en expliciete beperkingen verminderen die risico&#39;s, maar garanderen niet dat ongewenste tekst of dubbele figuren verdwijnen. Meer dan vier referentiepersonen wordt genoemd als risico voor stabiliteit, los van het aantal bestanden dat het model accepteert.</p><p>Videoverlenging kan een sprong of terugsprong bij de aansluiting veroorzaken en herhaalde voortzettingen kunnen het verlies van beeldkwaliteit versterken. Controleer de grensframes en beperk gestapelde verlengingen. Een referentiestem kan afwijken van het brontimbre; vertelspraak kan met een klik of abrupte afbreking eindigen, waarvoor een audiofade een gedocumenteerde oplossing is. Chinese tekens met meerdere uitspraken, ongebruikelijke tekens of tekens met een vergelijkbare vorm kunnen verkeerd worden uitgesproken. Voor een precies geanimeerd effect, zoals aftellen, is een bewegingsreferentie informatiever dan alleen een verzoek in woorden. Dit zijn concrete redenen om identiteit, tekst, beweging en geluid afzonderlijk te controleren bij het selecteren van de clip.</p>",
  "aboutText": "Seedance 2.0 is het standaardmodel van ByteDance Seed voor multimodale audio-videocreatie. Het combineert tekst, beelden, video's en audio in een architectuur voor gezamenlijke generatie, met afzonderlijke creatieve workflows voor referentiegestuurde scènes, videobewerking en videoverlenging. Het is nuttig wanneer de briefing zowel een samenhangende uitvoering als specifieke visuele of geluidsinformatie uit voorbereid materiaal vereist.\n\n### Multimodale referentie en regie\n\nBeelden kunnen het uiterlijk van het onderwerp, de visuele stijl en de compositie bepalen. Videoreferenties kunnen actie, camerabeweging en effecten sturen. Audio kan stemtimbre, muziek of dialoog sturen. Definieer de rol van elk materiaal en beschrijf daarna de scène die eruit moet ontstaan. De fabrikant benadrukt controle over spel, belichting, schaduwen en camerataal.\n\nBereid voor een productverhaal een productbeeld, een referentie voor de camerabeweging en een audioaanwijzing voor. Een briefing kan luiden: “Behoud de blauwe glazen vaas uit Image 1. Gebruik de langzame zijwaartse trackingbeweging uit Video 1. De vaas staat op een zonovergoten plank, met zachte instrumentale muziek op basis van Audio 1.” De bedoelde uitvoer is een nieuw geënsceneerde scène die geselecteerde referentie-informatie combineert.\n\nReferentie-invoer kan beeld en audio, beeld en video, video en audio of alle drie combineren. Invoer met uitsluitend audio en tekst plus audio zonder beeld of video worden niet ondersteund. Traditionele tekst-naar-video, generatie met een eerste frame en generatie met een eerste en laatste frame zijn eveneens gedocumenteerd. Gebruik de specifieke eindpuntworkflow wanneer vaste composities voor het begin en het einde belangrijk zijn: een referentiebeeld binnen een omni-referentieprompt als eindpunt benoemen is slechts een indirecte manier om het te sturen.\n\n### Beeldmateriaal bewerken\n\nHet model kan een onderwerp vervangen, objecten toevoegen of verwijderen, elementen veranderen en delen van een video opnieuw tekenen of herstellen. Beschrijf de specifieke wijziging en identificeer het bronmateriaal. Vermeld bij een toevoeging het tijdstip waarop en de positie waar deze verschijnt; benoem bij verwijdering of vervanging het object precies en geef aan wat moet blijven.\n\nBijvoorbeeld: “Vervang de bureaulamp in Video 1 door de messing lamp uit Image 1. Behoud de camerabeweging, de opstelling op het bureau en de lichtrichting.” Het gewenste resultaat is een bewerkte versie van de scène met de bedoelde vervanging. Controleer zowel de ongewijzigde gebieden als het nieuwe object, vooral wanneer iets aan het zicht wordt onttrokken, tijdens beweging en bij shotwisselingen.\n\n### Een reeks verlengen en verbinden\n\nSeedance 2.0 kan een video voorwaarts of achterwaarts verlengen en maximaal drie aangeleverde clips met gegenereerde overgangen verbinden. Specificeer de tijdsrichting en de nieuwe gebeurtenis. Orden voor een verbinding de clips en beschrijf de overgang tussen elk paar, zoals een camera die in het ene shot door een deuropening gaat en in de volgende omgeving aankomt.\n\nEen eenvoudige verlenging geeft doorgaans de voortzetting terug die rond het bronmateriaal is ontwikkeld; voeg een duidelijke instructie toe als het uiteindelijke resultaat ook het oorspronkelijke segment moet herhalen. Bij het voltooien van een verbinding tussen twee of drie clips kan de gedocumenteerde workflow zowel oorspronkelijk materiaal als nieuwe overgangsinhoud bevatten. Dat is nuttig om een opening of einde uit te werken of voorbereide scènes te verbinden zonder de verbindende actie ongespecificeerd te laten.\n\n### Uitvoer van de standaardversie en 4K\n\nDe standaardversie beschrijft MP4 met 24 fps en een duur van 4 tot 15 seconden. De uitvoerniveaus zijn 480p, 720p en 1080p met 8-bits kleurdiepte, plus 4K met 10-bits kleurdiepte. De ondersteunde verhoudingen zijn 21:9, 16:9, 4:3, 1:1, 3:4 en 9:16. Adaptieve kadrering en automatische duurselectie zijn eveneens gedocumenteerd. De Fast-versie heeft een eigen, beperktere uitvoerspecificatie van 480p/720p.\n\nDe 4K-uitvoer gebruikt H.265/HEVC-codering. Tienbitscodering behoudt extra toongradaties en vloeiendere kleurovergangen, wat van belang is voor materiaal met subtiele licht- of kleurverlopen. Controleer of de bedoelde afspeel- en montageomgeving dat formaat kan decoderen; sommige browsers en apparaten spelen het niet rechtstreeks af. Een compatibele container garandeert op zichzelf geen compatibele videodecodering.\n\nHet model kan gesynchroniseerd geluid of een stille video genereren en kan het laatste gegenereerde frame teruggeven voor een volgende scène. Gegenereerde audio is mono. De 2.0-familie ondersteunt niet de afzonderlijke Draft-previewmodus in twee fasen, dus die previewfunctie mag niet uit een andere Seedance-versie worden afgeleid.\n\n### Referentievoorbereiding en inhoudelijke grenzen\n\nDe gedocumenteerde referentiecapaciteit is maximaal negen beelden, drie video's en drie audioclips. Rechtstreeks geüploade referentiebeelden of video's met echte menselijke gezichten worden in dit gedocumenteerde profiel van de producent niet geaccepteerd; portretwerk gebruikt de ondersteunde workflow voor portretmateriaal. Elke video- en audioclip moet 2–15 seconden duren. Alle videoreferenties samen moeten binnen 15 seconden passen en alle audioreferenties samen hebben een eigen totaal van 15 seconden. Videobestanden gebruiken MP4 of MOV met 24–60 fps, tot 200 MB per bestand; audiobestanden gebruiken WAV of MP3, tot 15 MB per bestand. De vermelde beeldformaten zijn JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC en HEIF. Elk beeld moet kleiner zijn dan 30 MB en de request-body mag niet groter zijn dan 64 MB. In het gedocumenteerde profiel voor referentie-invoer moeten beeldbreedte en -hoogte elk strikt tussen 300 en 6.000 pixels liggen, met een breedte-hoogteverhouding strikt tussen 0,4 en 2,5. Referentievideo's staan 300–6.000 pixels in elke dimensie en verhoudingen van 0,4–2,5 toe, inclusief de grenswaarden, met in totaal 407.696–8.295.044 pixels. MP4- of MOV-video's gebruiken H.264/AVC- of H.265/HEVC-video en AAC- of MP3-audio.\n\nOrden de bestanden doelbewust en verwijs naar elk bestand met mediatype en nummer: Image 1, Video 1 en Audio 1. Het nummer volgt de volgorde van de bestanden van dat type. Leg uit welke eigenschappen moeten worden overgedragen en welke broninhoud de nieuwe scène niet mag bepalen. Gedocumenteerde prompttalen omvatten Engels, Spaans, Indonesisch, Portugees en Japans. Houd de gesproken taal binnen een dialoog consistent; de gids raadt het mengen van talen af, behalve voor eigennamen. Scheid voor stemgestuurd werk de spreker, de exacte regel en de voordrachtaanwijzing.\n\nBereid eerste en laatste beelden met compatibele kadrering voor. Een afwijking tussen het invoerbeeld en de uitvoerafmetingen kan bijsnijden of een abrupte visuele verandering veroorzaken; overeenkomende afmetingen en adaptieve kadrering zijn gedocumenteerde oplossingen. Houd de beschrijving gericht op de gebeurtenis en de referentierollen. De fabrikant waarschuwt dat lange prompts informatie kunnen versnipperen, waardoor details worden genegeerd. Controleer de resulterende beweging, referentiecontinuïteit, audio-uitvoering en aansluitingen tussen scènes als afzonderlijke onderdelen van het creatieve resultaat.\n\n### Shotplanning en tekstregie\n\nStructureer voor een complexe scène de briefing als Shot 1, Shot 2 en Shot 3 en specificeer camera, onderwerpactie, positie en geluid in volgorde. De gids beveelt één camerabeweging per shot aan en geeft de voorkeur aan langzame, samenhangende acties. Exacte tijdsaanduidingen per shot zijn instabiel, dus een reeks gebeurtenissen is een betere sturing dan het afdwingen van meerdere exacte tijdvensters.\n\nHet model genereert ook gangbare tekst, waaronder slogans, ondertitels en tekstballonnen. U kunt kleur, visuele behandeling, plaats en verschijnen van de tekst sturen. Gebruik gangbare tekens in plaats van zeldzame tekens of speciale symbolen en controleer de formulering terwijl deze beweegt. Koppel bij onderwerpreferenties elk bestand duidelijk aan het bedoelde personage of object. Productaanzichten kunnen verschillende visuele informatie leveren; collages met personageaanzichten kunnen gezichtsidentiteit verwarren. Een afzonderlijk duidelijk hoofdportret en een beeld van het volledige lichaam vormen de gedocumenteerde aanbeveling voor personagereferenties.\n\n### Gedrag dat vóór een bewerking moet worden gecontroleerd\n\nDe gids beschrijft ongewenste ondertitels, logo's, dubbele personages en stijlverschuiving. Schoon bronmateriaal, consistente labels en expliciete beperkingen verminderen die risico's, maar garanderen niet dat ongewenste tekst of dubbele figuren verdwijnen. Meer dan vier referentiepersonen wordt genoemd als risico voor stabiliteit, los van het aantal bestanden dat het model accepteert.\n\nVideoverlenging kan een sprong of terugsprong bij de aansluiting veroorzaken en herhaalde voortzettingen kunnen het verlies van beeldkwaliteit versterken. Controleer de grensframes en beperk gestapelde verlengingen. Een referentiestem kan afwijken van het brontimbre; vertelspraak kan met een klik of abrupte afbreking eindigen, waarvoor een audiofade een gedocumenteerde oplossing is. Chinese tekens met meerdere uitspraken, ongebruikelijke tekens of tekens met een vergelijkbare vorm kunnen verkeerd worden uitgesproken. Voor een precies geanimeerd effect, zoals aftellen, is een bewegingsreferentie informatiever dan alleen een verzoek in woorden. Dit zijn concrete redenen om identiteit, tekst, beweging en geluid afzonderlijk te controleren bij het selecteren van de clip.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4b3a6c94a4d9cf96ab721bb2264fc573251f05132c05a9dd78399a664095ca84",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nl",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">ByteDance: Seedance 2.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sluiten\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>bytedance/seedance-2.0</code><button type=\"button\" id=\"copy-id\">ID kopiëren</button></div><nav class=\"card-jump-nav\" aria-label=\"Onderdelen van de modelkaart\"><button type=\"button\" data-card-jump=\"overview\">Aan de slag</button><button type=\"button\" data-card-jump=\"methods\">Invoer en methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarieven</button><button type=\"button\" data-card-jump=\"examples\">Voorbeelden</button><button type=\"button\" data-card-jump=\"results\">Resultaten</button><button type=\"button\" data-card-jump=\"aliases\">Aliasnamen</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-methoden\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|bytedance%2Fseedance-2.0\">Video</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Aan de slag</h3><p class=\"mdesc-full\">ByteDance Seedance 2.0 combineert native audio-videogeneratie met beeld-, video- en geluidsreferenties. Regisseer nieuwe scènes, bewerk bestaand beeldmateriaal of verleng een reeks; de standaardversie omvat gedocumenteerde 1080p- en 10-bits 4K-uitvoer.</p><dl class=\"card-io\" data-card-io><div><dt>Toegestane invoer</dt><dd>Tekst · Afbeeldingen · Audio</dd></div><div><dt>Resultaten</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Over het model</summary><p class=\"note-s\" data-model-method-boundary>Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.</p><div class=\"mabout\" id=\"m-about\"><p>Seedance 2.0 is het standaardmodel van ByteDance Seed voor multimodale audio-videocreatie. Het combineert tekst, beelden, video&#39;s en audio in een architectuur voor gezamenlijke generatie, met afzonderlijke creatieve workflows voor referentiegestuurde scènes, videobewerking en videoverlenging. Het is nuttig wanneer de briefing zowel een samenhangende uitvoering als specifieke visuele of geluidsinformatie uit voorbereid materiaal vereist.</p><h4>Multimodale referentie en regie</h4><p>Beelden kunnen het uiterlijk van het onderwerp, de visuele stijl en de compositie bepalen. Videoreferenties kunnen actie, camerabeweging en effecten sturen. Audio kan stemtimbre, muziek of dialoog sturen. Definieer de rol van elk materiaal en beschrijf daarna de scène die eruit moet ontstaan. De fabrikant benadrukt controle over spel, belichting, schaduwen en camerataal.</p><p>Bereid voor een productverhaal een productbeeld, een referentie voor de camerabeweging en een audioaanwijzing voor. Een briefing kan luiden: “Behoud de blauwe glazen vaas uit Image 1. Gebruik de langzame zijwaartse trackingbeweging uit Video 1. De vaas staat op een zonovergoten plank, met zachte instrumentale muziek op basis van Audio 1.” De bedoelde uitvoer is een nieuw geënsceneerde scène die geselecteerde referentie-informatie combineert.</p><p>Referentie-invoer kan beeld en audio, beeld en video, video en audio of alle drie combineren. Invoer met uitsluitend audio en tekst plus audio zonder beeld of video worden niet ondersteund. Traditionele tekst-naar-video, generatie met een eerste frame en generatie met een eerste en laatste frame zijn eveneens gedocumenteerd. Gebruik de specifieke eindpuntworkflow wanneer vaste composities voor het begin en het einde belangrijk zijn: een referentiebeeld binnen een omni-referentieprompt als eindpunt benoemen is slechts een indirecte manier om het te sturen.</p><h4>Beeldmateriaal bewerken</h4><p>Het model kan een onderwerp vervangen, objecten toevoegen of verwijderen, elementen veranderen en delen van een video opnieuw tekenen of herstellen. Beschrijf de specifieke wijziging en identificeer het bronmateriaal. Vermeld bij een toevoeging het tijdstip waarop en de positie waar deze verschijnt; benoem bij verwijdering of vervanging het object precies en geef aan wat moet blijven.</p><p>Bijvoorbeeld: “Vervang de bureaulamp in Video 1 door de messing lamp uit Image 1. Behoud de camerabeweging, de opstelling op het bureau en de lichtrichting.” Het gewenste resultaat is een bewerkte versie van de scène met de bedoelde vervanging. Controleer zowel de ongewijzigde gebieden als het nieuwe object, vooral wanneer iets aan het zicht wordt onttrokken, tijdens beweging en bij shotwisselingen.</p><h4>Een reeks verlengen en verbinden</h4><p>Seedance 2.0 kan een video voorwaarts of achterwaarts verlengen en maximaal drie aangeleverde clips met gegenereerde overgangen verbinden. Specificeer de tijdsrichting en de nieuwe gebeurtenis. Orden voor een verbinding de clips en beschrijf de overgang tussen elk paar, zoals een camera die in het ene shot door een deuropening gaat en in de volgende omgeving aankomt.</p><p>Een eenvoudige verlenging geeft doorgaans de voortzetting terug die rond het bronmateriaal is ontwikkeld; voeg een duidelijke instructie toe als het uiteindelijke resultaat ook het oorspronkelijke segment moet herhalen. Bij het voltooien van een verbinding tussen twee of drie clips kan de gedocumenteerde workflow zowel oorspronkelijk materiaal als nieuwe overgangsinhoud bevatten. Dat is nuttig om een opening of einde uit te werken of voorbereide scènes te verbinden zonder de verbindende actie ongespecificeerd te laten.</p><h4>Uitvoer van de standaardversie en 4K</h4><p>De standaardversie beschrijft MP4 met 24 fps en een duur van 4 tot 15 seconden. De uitvoerniveaus zijn 480p, 720p en 1080p met 8-bits kleurdiepte, plus 4K met 10-bits kleurdiepte. De ondersteunde verhoudingen zijn 21:9, 16:9, 4:3, 1:1, 3:4 en 9:16. Adaptieve kadrering en automatische duurselectie zijn eveneens gedocumenteerd. De Fast-versie heeft een eigen, beperktere uitvoerspecificatie van 480p/720p.</p><p>De 4K-uitvoer gebruikt H.265/HEVC-codering. Tienbitscodering behoudt extra toongradaties en vloeiendere kleurovergangen, wat van belang is voor materiaal met subtiele licht- of kleurverlopen. Controleer of de bedoelde afspeel- en montageomgeving dat formaat kan decoderen; sommige browsers en apparaten spelen het niet rechtstreeks af. Een compatibele container garandeert op zichzelf geen compatibele videodecodering.</p><p>Het model kan gesynchroniseerd geluid of een stille video genereren en kan het laatste gegenereerde frame teruggeven voor een volgende scène. Gegenereerde audio is mono. De 2.0-familie ondersteunt niet de afzonderlijke Draft-previewmodus in twee fasen, dus die previewfunctie mag niet uit een andere Seedance-versie worden afgeleid.</p><h4>Referentievoorbereiding en inhoudelijke grenzen</h4><p>De gedocumenteerde referentiecapaciteit is maximaal negen beelden, drie video&#39;s en drie audioclips. Rechtstreeks geüploade referentiebeelden of video&#39;s met echte menselijke gezichten worden in dit gedocumenteerde profiel van de producent niet geaccepteerd; portretwerk gebruikt de ondersteunde workflow voor portretmateriaal. Elke video- en audioclip moet 2–15 seconden duren. Alle videoreferenties samen moeten binnen 15 seconden passen en alle audioreferenties samen hebben een eigen totaal van 15 seconden. Videobestanden gebruiken MP4 of MOV met 24–60 fps, tot 200 MB per bestand; audiobestanden gebruiken WAV of MP3, tot 15 MB per bestand. De vermelde beeldformaten zijn JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC en HEIF. Elk beeld moet kleiner zijn dan 30 MB en de request-body mag niet groter zijn dan 64 MB. In het gedocumenteerde profiel voor referentie-invoer moeten beeldbreedte en -hoogte elk strikt tussen 300 en 6.000 pixels liggen, met een breedte-hoogteverhouding strikt tussen 0,4 en 2,5. Referentievideo&#39;s staan 300–6.000 pixels in elke dimensie en verhoudingen van 0,4–2,5 toe, inclusief de grenswaarden, met in totaal 407.696–8.295.044 pixels. MP4- of MOV-video&#39;s gebruiken H.264/AVC- of H.265/HEVC-video en AAC- of MP3-audio.</p><p>Orden de bestanden doelbewust en verwijs naar elk bestand met mediatype en nummer: Image 1, Video 1 en Audio 1. Het nummer volgt de volgorde van de bestanden van dat type. Leg uit welke eigenschappen moeten worden overgedragen en welke broninhoud de nieuwe scène niet mag bepalen. Gedocumenteerde prompttalen omvatten Engels, Spaans, Indonesisch, Portugees en Japans. Houd de gesproken taal binnen een dialoog consistent; de gids raadt het mengen van talen af, behalve voor eigennamen. Scheid voor stemgestuurd werk de spreker, de exacte regel en de voordrachtaanwijzing.</p><p>Bereid eerste en laatste beelden met compatibele kadrering voor. Een afwijking tussen het invoerbeeld en de uitvoerafmetingen kan bijsnijden of een abrupte visuele verandering veroorzaken; overeenkomende afmetingen en adaptieve kadrering zijn gedocumenteerde oplossingen. Houd de beschrijving gericht op de gebeurtenis en de referentierollen. De fabrikant waarschuwt dat lange prompts informatie kunnen versnipperen, waardoor details worden genegeerd. Controleer de resulterende beweging, referentiecontinuïteit, audio-uitvoering en aansluitingen tussen scènes als afzonderlijke onderdelen van het creatieve resultaat.</p><h4>Shotplanning en tekstregie</h4><p>Structureer voor een complexe scène de briefing als Shot 1, Shot 2 en Shot 3 en specificeer camera, onderwerpactie, positie en geluid in volgorde. De gids beveelt één camerabeweging per shot aan en geeft de voorkeur aan langzame, samenhangende acties. Exacte tijdsaanduidingen per shot zijn instabiel, dus een reeks gebeurtenissen is een betere sturing dan het afdwingen van meerdere exacte tijdvensters.</p><p>Het model genereert ook gangbare tekst, waaronder slogans, ondertitels en tekstballonnen. U kunt kleur, visuele behandeling, plaats en verschijnen van de tekst sturen. Gebruik gangbare tekens in plaats van zeldzame tekens of speciale symbolen en controleer de formulering terwijl deze beweegt. Koppel bij onderwerpreferenties elk bestand duidelijk aan het bedoelde personage of object. Productaanzichten kunnen verschillende visuele informatie leveren; collages met personageaanzichten kunnen gezichtsidentiteit verwarren. Een afzonderlijk duidelijk hoofdportret en een beeld van het volledige lichaam vormen de gedocumenteerde aanbeveling voor personagereferenties.</p><h4>Gedrag dat vóór een bewerking moet worden gecontroleerd</h4><p>De gids beschrijft ongewenste ondertitels, logo&#39;s, dubbele personages en stijlverschuiving. Schoon bronmateriaal, consistente labels en expliciete beperkingen verminderen die risico&#39;s, maar garanderen niet dat ongewenste tekst of dubbele figuren verdwijnen. Meer dan vier referentiepersonen wordt genoemd als risico voor stabiliteit, los van het aantal bestanden dat het model accepteert.</p><p>Videoverlenging kan een sprong of terugsprong bij de aansluiting veroorzaken en herhaalde voortzettingen kunnen het verlies van beeldkwaliteit versterken. Controleer de grensframes en beperk gestapelde verlengingen. Een referentiestem kan afwijken van het brontimbre; vertelspraak kan met een klik of abrupte afbreking eindigen, waarvoor een audiofade een gedocumenteerde oplossing is. Chinese tekens met meerdere uitspraken, ongebruikelijke tekens of tekens met een vergelijkbare vorm kunnen verkeerd worden uitgesproken. Voor een precies geanimeerd effect, zoals aftellen, is een bewegingsreferentie informatiever dan alleen een verzoek in woorden. Dit zijn concrete redenen om identiteit, tekst, beweging en geluid afzonderlijk te controleren bij het selecteren van de clip.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Beschikbaar in Ailoot · invoer en methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Invoertypen</dt><dd><code>text</code>, <code>image</code>, <code>audio</code></dd></div><div><dt>Uitvoertypen</dt><dd><code>video</code></dd></div><div><dt>Uitvoerformaat</dt><dd>oorspronkelijke MP4-bytes; geen normalisatie of transcodering</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Veld</th><th>Type</th><th>Vereiste</th><th>Waarden en limieten</th><th>Standaard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>bytedance/seedance-2.0</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15</div><div>Minimum: 1</div><div>Maximum: 600</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>480p, 720p, 1080p, 4K</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>boolean</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>false, true</div><div>Voorwaarden: Bij 480p en 720p kiest het weglaten van generate_audio de prijs met audio en kiest false de prijs zonder audio. Bij 1080p en 4K geldt de resolutieprijs voor beide instellingen. Controleer has_audio in het resultaat voor de geretourneerde audiotrack.</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">frame_images</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Minimumaantal items: 1</div><div>Maximumaantal items: 2</div><div>Invoerinhoud: Array met frameobjecten. Elk object bevat type=image_url, image_url met daarin url en frame_type=first_frame of last_frame. Elke rol komt maximaal eenmaal voor. Gebruik openbare HTTPS-URLs.</div><div>Exacte sleutels: type, image_url, frame_type</div><div>Voorwaarden: Deze sleutels gelden voor elk frameobject. Laat frame_images weg voor een verzoek met uitsluitend tekst.</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Invoerinhoud: Array met afbeeldings- of audioreferentieobjecten. Stel type in op image_url of audio_url en geef het bijbehorende URL-object met daarin url op. Voor videoreferenties kan nog steeds geen prijs worden bepaald.</div><div>Voorwaarden: Laat frame_images weg om de referentiemodus te gebruiken. Gebruik openbare HTTPS-URLs.</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">size</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>480x480, 480x640, 480x854, 640x480, 854x480, 1120x480, 720x720, 720x960, 720x1280, 720x1680, 960x720, 1280x720, 1680x720, 1080x1080, 1080x1440, 1080x1920, 1440x1080, 1920x1080, 2520x1080, 3840x2160, 2160x3840, 2160x2160, 2880x2160, 2160x2880, 5040x2160</div><div>Patroon: ^[1-9][0-9]*x[1-9][0-9]*$</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Minimum: -9.223.372.036.854.775.808</div><div>Maximum: 9.223.372.036.854.775.807</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">callback_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Patroon: ^https://</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaties van invoermaterialen</summary><p class=\"note-s\"><b>Tekst naar video</b> · Een geschreven prompt. · Vereist: model, prompt, duration</p><p class=\"note-s\"><code>Geef een tekstprompt en een ondersteunde duur in hele seconden op. Gebruik een exact vermelde grootte, of een resolutie en beeldverhouding die resulteren in vermelde afmetingen.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maximumaantal UTF-8-bytes: 10.000 · Ten minste één teken anders dan witruimte vereist: Ja</p><p class=\"note-s\"><b>Afbeelding naar video</b> · Een geschreven prompt en een frameafbeelding. · Vereist: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images is een array met objecten met type=image_url, image_url met daarin url, en frame_type. Gebruik een openbare HTTPS-afbeeldings-URL; first_frame en last_frame mogen elk eenmaal voorkomen. Gebruik een vermelde uitvoergrootte of compatibele afmetingen. Voeg geen videoreferenties toe.</code></p><p class=\"note-s\">Exacte sleutels: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maximumaantal UTF-8-bytes: 10.000 · Ten minste één teken anders dan witruimte vereist: Ja</p><p class=\"note-s\"><b>Reference to video</b> · Een geschreven prompt en afbeeldings- of audioreferenties. · Vereist: model, prompt, duration, input_references</p><p class=\"note-s\"><code>input_references is een array. Elk object bevat type=image_url of type=audio_url en een bijbehorend URL-object met daarin url. Gebruik openbare HTTPS-links. Laat frame_images weg om de referentiemodus te selecteren. Videoreferenties kunnen niet worden geprijsd.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maximumaantal UTF-8-bytes: 10.000 · Ten minste één teken anders dan witruimte vereist: Ja</p></details><details class=\"note-s\" data-method-contract><summary>Methodeparameters en levenscyclus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Contract</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>model, prompt, duration</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>text, image, audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>additional_properties</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Levenscyclus: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarieven</h3><div class=\"card-result-process\" data-billing-basis><h5>Zo worden de uiteindelijke kosten berekend</h5><p class=\"note-s\">De weergegeven tarieven geven een schatting van de kosten vóór de generatie. Het definitieve bedrag wordt berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van de uitvoer en de geschatte hoeveelheden zijn niet de definitieve factureerbare hoeveelheid.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.</p><dl data-price-conditions><dt>Snelle modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de snelle modus is geselecteerd</span></dd><dt>Flexmodus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de modus flex is geselecteerd</span></dd><dt>Maximale redeneerinspanning</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt</span></dd></dl></div><div data-declared-tariff-pricing><h4>Geschatte tarieven ter vergelijking</h4><h4>Prijzen per configuratie</h4><p class=\"note-s\">Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Tariefstaffel</th><th>Verwachte hoeveelheid</th><th>Rekeneenheid</th><th>Factureringsvoorwaarden</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Basistarieven voor tokens</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>Basistarief</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>—</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · Invoertokens · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache lezen · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per 1K videotokens</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>In deze prijssleutel is geen aanvullende voorwaarde vastgelegd.</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken · Schatting uitsluitend ter vergelijking</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per 1K videotokens</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken · Schatting uitsluitend ter vergelijking</span> <b>$0.0154</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per 1K videotokens</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: with_video_input; resolutie: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>reference · Prijs per videotoken · Schatting uitsluitend ter vergelijking</span> <b>$0.0094</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per 1K videotokens</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 4k</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken · Schatting uitsluitend ter vergelijking</span> <b>$0.008</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per 1K videotokens</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: with_video_input; resolutie: 4k</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>reference · Prijs per videotoken · Schatting uitsluitend ter vergelijking</span> <b>$0.0048</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per 1K videotokens</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: with_video_input</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>reference · Prijs per videotoken · Schatting uitsluitend ter vergelijking</span> <b>$0.0086</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per 1K videotokens</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>geluid: without_audio</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken · Schatting uitsluitend ter vergelijking</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Geschatte generatiekosten</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Verwachte hoeveelheid\"><span class=\"card-cell-label\">Verwachte hoeveelheid</span>schatting voor één generatie</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>—</td><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking</span> <b>$0.3024</b> <span class=\"price-unit\">schatting vóór generatie</span></div><p class=\"note-s\">Deze schatting is geen extra bedrag of vast tarief voor de voltooide generatie.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. <a href=\"/docs/nl/billing/reserve/\">Zo werken reservering en afrekening →</a></p><div data-declared-reference-pricing><h4>Details van het referentietarief</h4><p class=\"note-s\">Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Prijsreferenties voor videoconfiguraties</summary><h4>Prijzen per configuratie</h4><p class=\"note-s\">Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Factureringsvoorwaarden</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>In deze prijssleutel is geen aanvullende voorwaarde vastgelegd.</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 4k</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken</span> <b>$0.008</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>resolution: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken</span> <b>$0.0154</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>geluid: without_audio</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Uitvoer · Prijs per videotoken</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: with_video_input</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>reference · Prijs per videotoken</span> <b>$0.0086</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: with_video_input; resolutie: 4k</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>reference · Prijs per videotoken</span> <b>$0.0048</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Prijs per videotoken</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>invoer: with_video_input; resolutie: 1080p</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>reference · Prijs per videotoken</span> <b>$0.0094</b> <span class=\"price-unit\">per 1K videotokens</span></div><p class=\"note-s\">Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Voorbeeldverzoeken</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1131-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1131-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · video maken</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1131-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1131-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;model&quot;:&quot;bytedance/seedance-2.0&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;duration&quot;:4,&quot;resolution&quot;:&quot;480p&quot;,&quot;size&quot;:&quot;480x480&quot;,&quot;generate_audio&quot;:false}&#39;, encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Resultaten ophalen en opslaan</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">ondertekende inhouds-URLs die u bezit</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_id}/content</code></li></ul><h5>Taakstatus controleren</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1132-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1132-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET · Status van de oorspronkelijke bewerking</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1132-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1132-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>Lezen van andere inhoud</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1133-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1133-panel-0\" aria-selected=\"true\" tabindex=\"0\">Elk voltooid eigen uitvoerresultaat opslaan</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1133-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1133-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Alle voltooide resultaten bewaren</h5><p class=\"note-s\">Sla elke voltooide video of elk teruggegeven bestand op; haal elke daadwerkelijk teruggegeven bestands-URL op.</p><p class=\"note-s\">Bewaar alle daadwerkelijke uitvoer die u bezit en de geretourneerde gemeten metadata.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Als het oorspronkelijke antwoord moet worden gecontroleerd</h5><p class=\"note-s\">503 result_pending_check + oorspronkelijke id + X-Should-Retry:false; herhaal het oorspronkelijke verzoek nooit</p></div><details class=\"card-about\" data-output-fields><summary>Antwoordvelden</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Veld</th><th>Type</th><th>Betekenis</th></tr></thead><tbody><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Positie van deze video in de uitvoerlijst, geteld vanaf nul.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Ondertekende HTTPS-download-URL voor deze voltooide video.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>SHA-256-digest van de oorspronkelijke videobytes; null indien niet beschikbaar.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Grootte van het oorspronkelijke videobestand in bytes; null indien niet beschikbaar.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Gemeten videoduur in milliseconden; null indien niet beschikbaar.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Videobreedte in pixels; null indien niet beschikbaar.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Videohoogte in pixels; null indien niet beschikbaar.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Videocodec-identificatie; null indien niet vastgelegd.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>boolean | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Of de video een audiotrack bevat; null indien niet gemeten.</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betekenis\"><span class=\"card-cell-label\">Betekenis</span>Audiocodec-identificatie; null wanneer geen identificatie is vastgelegd.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fouten en vervolgstappen</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwoord</th><th>Voorwaarde</th><th>Volgende stap</th></tr></thead><tbody><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Videotoegang is niet beschikbaar of deze video-ID is niet gevonden.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer videotoegang. Gebruik voor een bestaande video de oorspronkelijke openbare ID en dezelfde API-sleutel.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De API-sleutel komt niet overeen met het geauthenticeerde account.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer uw API-sleutel en accounttoegang voordat u indient.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Het verzoek kon niet worden gelezen of de downloadindex is ongeldig.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Corrigeer de verzoekbody. Kies voor een download een uitvoerindex die door de oorspronkelijke taak is geretourneerd.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De geselecteerde videoconfiguratie kan niet worden geprijsd.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Kies een ondersteunde videoconfiguratie en vul de vereiste opties in voordat u een gecorrigeerd verzoek indient.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Een videoinvoer of oorspronkelijke vervolgtaak is ongeldig.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Gebruik geldige HTTPS-invoer. Gebruik voor een vervolg uw voltooide oorspronkelijke openbare video-ID met dezelfde API-sleutel.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>402 · <code>billing_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Het beschikbare saldo of de limieten staan geen reservering toe.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer uw beschikbare saldo en limieten voordat u een nieuw verzoek verstuurt.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>503 · <code>server_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Videoverificatie, opslag of servicetoegang is tijdelijk niet beschikbaar.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Wacht tot de service beschikbaar is. Als u al een video-ID hebt, controleert u die oorspronkelijke taak in plaats van een nieuwe generatie aan te maken.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Het oorspronkelijke videoresultaat en de kosten moeten worden gecontroleerd.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar de geretourneerde video-ID en controleer die taak. Verstuur geen vervangend generatieverzoek terwijl deze wordt gecontroleerd.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De bestaande videodownload is tijdelijk niet beschikbaar.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer dezelfde videotaak later en download de bestaande uitvoer. Een nieuwe generatie maakt een afzonderlijke operatie aan.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De video-inhoud is niet gepubliceerd.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Controleer de oorspronkelijke taakstatus. Download nadat deze completed meldt; als deze failed meldt, volgt u de melding over kostencontrole.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modelaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=bytedance%2Fseedance-2.0&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0&amp;fmt=videos\"><code>bytedance/seedance-2.0</code></a></span></p><h4>Aliasnamen voor methodepaden</h4><p class=\"note-s\">Gebruik de hierboven getoonde methodepaden.</p><h4>Gerelateerde aanroeper-ID’s</h4><p class=\"note-s\"><a href=\"#m=bytedance%2Fseedance-2.0&amp;route=Ultra&amp;caller=bytedance%2Fseedance-2.0&amp;fmt=videos\"><code>bytedance/seedance-2.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "bytedance/seedance-2.0",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|bytedance%2Fseedance-2.0",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De weergegeven tarieven geven een schatting van de kosten vóór de generatie. Het definitieve bedrag wordt berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van de uitvoer en de geschatte hoeveelheden zijn niet de definitieve factureerbare hoeveelheid.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Bewaar alle daadwerkelijke uitvoer die u bezit en de geretourneerde gemeten 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": "Videotoegang is niet beschikbaar of deze video-ID is niet gevonden.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Controleer videotoegang. Gebruik voor een bestaande video de oorspronkelijke openbare ID en dezelfde API-sleutel.",
                "type": "not_found_error"
              },
              {
                "condition": "De API-sleutel komt niet overeen met het geauthenticeerde account.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Controleer uw API-sleutel en accounttoegang voordat u indient.",
                "type": "authentication_error"
              },
              {
                "condition": "Het verzoek kon niet worden gelezen of de downloadindex is ongeldig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrigeer de verzoekbody. Kies voor een download een uitvoerindex die door de oorspronkelijke taak is geretourneerd.",
                "type": "invalid_request_error"
              },
              {
                "condition": "De geselecteerde videoconfiguratie kan niet worden geprijsd.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Kies een ondersteunde videoconfiguratie en vul de vereiste opties in voordat u een gecorrigeerd verzoek indient.",
                "type": "price_unavailable"
              },
              {
                "condition": "Een videoinvoer of oorspronkelijke vervolgtaak is ongeldig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Gebruik geldige HTTPS-invoer. Gebruik voor een vervolg uw voltooide oorspronkelijke openbare video-ID met dezelfde API-sleutel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Het beschikbare saldo of de limieten staan geen reservering toe.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Controleer uw beschikbare saldo en limieten voordat u een nieuw verzoek verstuurt.",
                "type": "billing_error"
              },
              {
                "condition": "Videoverificatie, opslag of servicetoegang is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Wacht tot de service beschikbaar is. Als u al een video-ID hebt, controleert u die oorspronkelijke taak in plaats van een nieuwe generatie aan te maken.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Het oorspronkelijke videoresultaat en de kosten moeten worden gecontroleerd.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Bewaar de geretourneerde video-ID en controleer die taak. Verstuur geen vervangend generatieverzoek terwijl deze wordt gecontroleerd.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "De bestaande videodownload is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Controleer dezelfde videotaak later en download de bestaande uitvoer. Een nieuwe generatie maakt een afzonderlijke operatie aan.",
                "type": "server_error"
              },
              {
                "condition": "De video-inhoud is niet gepubliceerd.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Controleer de oorspronkelijke taakstatus. Download nadat deze completed meldt; als deze failed meldt, volgt u de melding over kostencontrole.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + oorspronkelijke id + X-Should-Retry:false; herhaal het oorspronkelijke verzoek nooit"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Geef een tekstprompt en een ondersteunde duur in hele seconden op. Gebruik een exact vermelde grootte, of een resolutie en beeldverhouding die resulteren in vermelde afmetingen.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Een geschreven prompt."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images is een array met objecten met type=image_url, image_url met daarin url, en frame_type. Gebruik een openbare HTTPS-afbeeldings-URL; first_frame en last_frame mogen elk eenmaal voorkomen. Gebruik een vermelde uitvoergrootte of compatibele afmetingen. Voeg geen videoreferenties toe.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Een geschreven prompt en een frameafbeelding."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references is een array. Elk object bevat type=image_url of type=audio_url en een bijbehorend URL-object met daarin url. Gebruik openbare HTTPS-links. Laat frame_images weg om de referentiemodus te selecteren. Videoreferenties kunnen niet worden geprijsd.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "Een geschreven prompt en afbeeldings- of audioreferenties."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Positie van deze video in de uitvoerlijst, geteld vanaf nul.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Ondertekende HTTPS-download-URL voor deze voltooide video.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "SHA-256-digest van de oorspronkelijke videobytes; null indien niet beschikbaar.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Grootte van het oorspronkelijke videobestand in bytes; null indien niet beschikbaar.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Gemeten videoduur in milliseconden; null indien niet beschikbaar.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videobreedte in pixels; null indien niet beschikbaar.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videohoogte in pixels; null indien niet beschikbaar.",
                  "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": "Videocodec-identificatie; null indien niet vastgelegd.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Of de video een audiotrack bevat; null indien niet gemeten.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Audiocodec-identificatie; null wanneer geen identificatie is vastgelegd.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "ondertekende inhouds-URLs die u bezit",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0"
                },
                "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": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Bij 480p en 720p kiest het weglaten van generate_audio de prijs met audio en kiest false de prijs zonder audio. Bij 1080p en 4K geldt de resolutieprijs voor beide instellingen. Controleer has_audio in het resultaat voor de geretourneerde audiotrack.",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Deze sleutels gelden voor elk frameobject. Laat frame_images weg voor een verzoek met uitsluitend tekst.",
                "content": "Array met frameobjecten. Elk object bevat type=image_url, image_url met daarin url en frame_type=first_frame of last_frame. Elke rol komt maximaal eenmaal voor. Gebruik openbare HTTPS-URLs.",
                "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",
                "conditions": "Laat frame_images weg om de referentiemodus te gebruiken. Gebruik openbare HTTPS-URLs.",
                "content": "Array met afbeeldings- of audioreferentieobjecten. Stel type in op image_url of audio_url en geef het bijbehorende URL-object met daarin url op. Voor videoreferenties kan nog steeds geen prijs worden bepaald.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "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"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_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": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720",
                  "1080x1080",
                  "1080x1440",
                  "1080x1920",
                  "1440x1080",
                  "1920x1080",
                  "2520x1080",
                  "3840x2160",
                  "2160x3840",
                  "2160x2160",
                  "2880x2160",
                  "2160x2880",
                  "5040x2160"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "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": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "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": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "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": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "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"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_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": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "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.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "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",
            "reference_to_video"
          ],
          "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"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "invoer: with_video_input; resolutie: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Deze schatting is geen extra bedrag of vast tarief voor de voltooide generatie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschatte generatiekosten",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "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('{\"model\":\"bytedance/seedance-2.0\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":false}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o 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",
          "audio"
        ],
        "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"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "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": "bytedance/seedance-2.0",
        "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.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.3024",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.3024",
            "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": "bytedance/seedance-2.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "87c2ebd71cb677e282b514ca339fed7679396d111cd79b6ca3e4f2ff8512fb37",
    "input_html_sha256": "5a15db438cfc1ce84bf6a2875d82e421c6d6a91b0f4b58a3a22555c8546b0686",
    "private_audit_sha256": "6217a7903081e72476fd2e13ebee455d056d895feed7917864f0b021aa11b988",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nl/bytedance-seedance-2-0/",
    "description": "ByteDance Seedance 2.0 combineert native audio-videogeneratie met beeld-, video- en geluidsreferenties. Regisseer nieuwe scènes, bewerk bestaand beeldmateriaal of verleng een reeks; de standaardversie omvat gedocumenteerde 1080p- en 10-bits 4K-uitvoer.",
    "locale": "nl",
    "md_url": "https://ailoot.ai/models/nl/bytedance-seedance-2-0/index.md",
    "title": "ByteDance: Seedance 2.0 — Ailoot",
    "url": "https://ailoot.ai/models/nl/bytedance-seedance-2-0/"
  },
  "rawModel": {
    "about": "Seedance 2.0 is het standaardmodel van ByteDance Seed voor multimodale audio-videocreatie. Het combineert tekst, beelden, video's en audio in een architectuur voor gezamenlijke generatie, met afzonderlijke creatieve workflows voor referentiegestuurde scènes, videobewerking en videoverlenging. Het is nuttig wanneer de briefing zowel een samenhangende uitvoering als specifieke visuele of geluidsinformatie uit voorbereid materiaal vereist.\n\n### Multimodale referentie en regie\n\nBeelden kunnen het uiterlijk van het onderwerp, de visuele stijl en de compositie bepalen. Videoreferenties kunnen actie, camerabeweging en effecten sturen. Audio kan stemtimbre, muziek of dialoog sturen. Definieer de rol van elk materiaal en beschrijf daarna de scène die eruit moet ontstaan. De fabrikant benadrukt controle over spel, belichting, schaduwen en camerataal.\n\nBereid voor een productverhaal een productbeeld, een referentie voor de camerabeweging en een audioaanwijzing voor. Een briefing kan luiden: “Behoud de blauwe glazen vaas uit Image 1. Gebruik de langzame zijwaartse trackingbeweging uit Video 1. De vaas staat op een zonovergoten plank, met zachte instrumentale muziek op basis van Audio 1.” De bedoelde uitvoer is een nieuw geënsceneerde scène die geselecteerde referentie-informatie combineert.\n\nReferentie-invoer kan beeld en audio, beeld en video, video en audio of alle drie combineren. Invoer met uitsluitend audio en tekst plus audio zonder beeld of video worden niet ondersteund. Traditionele tekst-naar-video, generatie met een eerste frame en generatie met een eerste en laatste frame zijn eveneens gedocumenteerd. Gebruik de specifieke eindpuntworkflow wanneer vaste composities voor het begin en het einde belangrijk zijn: een referentiebeeld binnen een omni-referentieprompt als eindpunt benoemen is slechts een indirecte manier om het te sturen.\n\n### Beeldmateriaal bewerken\n\nHet model kan een onderwerp vervangen, objecten toevoegen of verwijderen, elementen veranderen en delen van een video opnieuw tekenen of herstellen. Beschrijf de specifieke wijziging en identificeer het bronmateriaal. Vermeld bij een toevoeging het tijdstip waarop en de positie waar deze verschijnt; benoem bij verwijdering of vervanging het object precies en geef aan wat moet blijven.\n\nBijvoorbeeld: “Vervang de bureaulamp in Video 1 door de messing lamp uit Image 1. Behoud de camerabeweging, de opstelling op het bureau en de lichtrichting.” Het gewenste resultaat is een bewerkte versie van de scène met de bedoelde vervanging. Controleer zowel de ongewijzigde gebieden als het nieuwe object, vooral wanneer iets aan het zicht wordt onttrokken, tijdens beweging en bij shotwisselingen.\n\n### Een reeks verlengen en verbinden\n\nSeedance 2.0 kan een video voorwaarts of achterwaarts verlengen en maximaal drie aangeleverde clips met gegenereerde overgangen verbinden. Specificeer de tijdsrichting en de nieuwe gebeurtenis. Orden voor een verbinding de clips en beschrijf de overgang tussen elk paar, zoals een camera die in het ene shot door een deuropening gaat en in de volgende omgeving aankomt.\n\nEen eenvoudige verlenging geeft doorgaans de voortzetting terug die rond het bronmateriaal is ontwikkeld; voeg een duidelijke instructie toe als het uiteindelijke resultaat ook het oorspronkelijke segment moet herhalen. Bij het voltooien van een verbinding tussen twee of drie clips kan de gedocumenteerde workflow zowel oorspronkelijk materiaal als nieuwe overgangsinhoud bevatten. Dat is nuttig om een opening of einde uit te werken of voorbereide scènes te verbinden zonder de verbindende actie ongespecificeerd te laten.\n\n### Uitvoer van de standaardversie en 4K\n\nDe standaardversie beschrijft MP4 met 24 fps en een duur van 4 tot 15 seconden. De uitvoerniveaus zijn 480p, 720p en 1080p met 8-bits kleurdiepte, plus 4K met 10-bits kleurdiepte. De ondersteunde verhoudingen zijn 21:9, 16:9, 4:3, 1:1, 3:4 en 9:16. Adaptieve kadrering en automatische duurselectie zijn eveneens gedocumenteerd. De Fast-versie heeft een eigen, beperktere uitvoerspecificatie van 480p/720p.\n\nDe 4K-uitvoer gebruikt H.265/HEVC-codering. Tienbitscodering behoudt extra toongradaties en vloeiendere kleurovergangen, wat van belang is voor materiaal met subtiele licht- of kleurverlopen. Controleer of de bedoelde afspeel- en montageomgeving dat formaat kan decoderen; sommige browsers en apparaten spelen het niet rechtstreeks af. Een compatibele container garandeert op zichzelf geen compatibele videodecodering.\n\nHet model kan gesynchroniseerd geluid of een stille video genereren en kan het laatste gegenereerde frame teruggeven voor een volgende scène. Gegenereerde audio is mono. De 2.0-familie ondersteunt niet de afzonderlijke Draft-previewmodus in twee fasen, dus die previewfunctie mag niet uit een andere Seedance-versie worden afgeleid.\n\n### Referentievoorbereiding en inhoudelijke grenzen\n\nDe gedocumenteerde referentiecapaciteit is maximaal negen beelden, drie video's en drie audioclips. Rechtstreeks geüploade referentiebeelden of video's met echte menselijke gezichten worden in dit gedocumenteerde profiel van de producent niet geaccepteerd; portretwerk gebruikt de ondersteunde workflow voor portretmateriaal. Elke video- en audioclip moet 2–15 seconden duren. Alle videoreferenties samen moeten binnen 15 seconden passen en alle audioreferenties samen hebben een eigen totaal van 15 seconden. Videobestanden gebruiken MP4 of MOV met 24–60 fps, tot 200 MB per bestand; audiobestanden gebruiken WAV of MP3, tot 15 MB per bestand. De vermelde beeldformaten zijn JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC en HEIF. Elk beeld moet kleiner zijn dan 30 MB en de request-body mag niet groter zijn dan 64 MB. In het gedocumenteerde profiel voor referentie-invoer moeten beeldbreedte en -hoogte elk strikt tussen 300 en 6.000 pixels liggen, met een breedte-hoogteverhouding strikt tussen 0,4 en 2,5. Referentievideo's staan 300–6.000 pixels in elke dimensie en verhoudingen van 0,4–2,5 toe, inclusief de grenswaarden, met in totaal 407.696–8.295.044 pixels. MP4- of MOV-video's gebruiken H.264/AVC- of H.265/HEVC-video en AAC- of MP3-audio.\n\nOrden de bestanden doelbewust en verwijs naar elk bestand met mediatype en nummer: Image 1, Video 1 en Audio 1. Het nummer volgt de volgorde van de bestanden van dat type. Leg uit welke eigenschappen moeten worden overgedragen en welke broninhoud de nieuwe scène niet mag bepalen. Gedocumenteerde prompttalen omvatten Engels, Spaans, Indonesisch, Portugees en Japans. Houd de gesproken taal binnen een dialoog consistent; de gids raadt het mengen van talen af, behalve voor eigennamen. Scheid voor stemgestuurd werk de spreker, de exacte regel en de voordrachtaanwijzing.\n\nBereid eerste en laatste beelden met compatibele kadrering voor. Een afwijking tussen het invoerbeeld en de uitvoerafmetingen kan bijsnijden of een abrupte visuele verandering veroorzaken; overeenkomende afmetingen en adaptieve kadrering zijn gedocumenteerde oplossingen. Houd de beschrijving gericht op de gebeurtenis en de referentierollen. De fabrikant waarschuwt dat lange prompts informatie kunnen versnipperen, waardoor details worden genegeerd. Controleer de resulterende beweging, referentiecontinuïteit, audio-uitvoering en aansluitingen tussen scènes als afzonderlijke onderdelen van het creatieve resultaat.\n\n### Shotplanning en tekstregie\n\nStructureer voor een complexe scène de briefing als Shot 1, Shot 2 en Shot 3 en specificeer camera, onderwerpactie, positie en geluid in volgorde. De gids beveelt één camerabeweging per shot aan en geeft de voorkeur aan langzame, samenhangende acties. Exacte tijdsaanduidingen per shot zijn instabiel, dus een reeks gebeurtenissen is een betere sturing dan het afdwingen van meerdere exacte tijdvensters.\n\nHet model genereert ook gangbare tekst, waaronder slogans, ondertitels en tekstballonnen. U kunt kleur, visuele behandeling, plaats en verschijnen van de tekst sturen. Gebruik gangbare tekens in plaats van zeldzame tekens of speciale symbolen en controleer de formulering terwijl deze beweegt. Koppel bij onderwerpreferenties elk bestand duidelijk aan het bedoelde personage of object. Productaanzichten kunnen verschillende visuele informatie leveren; collages met personageaanzichten kunnen gezichtsidentiteit verwarren. Een afzonderlijk duidelijk hoofdportret en een beeld van het volledige lichaam vormen de gedocumenteerde aanbeveling voor personagereferenties.\n\n### Gedrag dat vóór een bewerking moet worden gecontroleerd\n\nDe gids beschrijft ongewenste ondertitels, logo's, dubbele personages en stijlverschuiving. Schoon bronmateriaal, consistente labels en expliciete beperkingen verminderen die risico's, maar garanderen niet dat ongewenste tekst of dubbele figuren verdwijnen. Meer dan vier referentiepersonen wordt genoemd als risico voor stabiliteit, los van het aantal bestanden dat het model accepteert.\n\nVideoverlenging kan een sprong of terugsprong bij de aansluiting veroorzaken en herhaalde voortzettingen kunnen het verlies van beeldkwaliteit versterken. Controleer de grensframes en beperk gestapelde verlengingen. Een referentiestem kan afwijken van het brontimbre; vertelspraak kan met een klik of abrupte afbreking eindigen, waarvoor een audiofade een gedocumenteerde oplossing is. Chinese tekens met meerdere uitspraken, ongebruikelijke tekens of tekens met een vergelijkbare vorm kunnen verkeerd worden uitgesproken. Voor een precies geanimeerd effect, zoals aftellen, is een bewegingsreferentie informatiever dan alleen een verzoek in woorden. Dit zijn concrete redenen om identiteit, tekst, beweging en geluid afzonderlijk te controleren bij het selecteren van de clip.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "available": null,
    "canonical_model": "bytedance/seedance-2.0",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.3024",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.3024",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "De volledige prijsinformatie voor de configuratie vindt u bij de details."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "cb128050bf8483dc92f31388",
        "label": "Prijsreferenties voor videoconfiguraties",
        "profiles": [
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "In deze prijssleutel is geen aanvullende voorwaarde vastgelegd."
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.014",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "resolution: 4k"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.008",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0154",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "geluid: without_audio"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.014",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "invoer: with_video_input"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0086",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "invoer: with_video_input; resolutie: 4k"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0048",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "invoer: with_video_input; resolutie: 1080p"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0094",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "key": "video_token",
                "label": "Video-token price",
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "rate_role": "typed_video_token_primary_reference",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "bytedance/seedance-2.0",
    "input": [
      "text",
      "image",
      "audio"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De weergegeven tarieven geven een schatting van de kosten vóór de generatie. Het definitieve bedrag wordt berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van de uitvoer en de geschatte hoeveelheden zijn niet de definitieve factureerbare hoeveelheid.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Bewaar alle daadwerkelijke uitvoer die u bezit en de geretourneerde gemeten 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": "Videotoegang is niet beschikbaar of deze video-ID is niet gevonden.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Controleer videotoegang. Gebruik voor een bestaande video de oorspronkelijke openbare ID en dezelfde API-sleutel.",
                "type": "not_found_error"
              },
              {
                "condition": "De API-sleutel komt niet overeen met het geauthenticeerde account.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Controleer uw API-sleutel en accounttoegang voordat u indient.",
                "type": "authentication_error"
              },
              {
                "condition": "Het verzoek kon niet worden gelezen of de downloadindex is ongeldig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrigeer de verzoekbody. Kies voor een download een uitvoerindex die door de oorspronkelijke taak is geretourneerd.",
                "type": "invalid_request_error"
              },
              {
                "condition": "De geselecteerde videoconfiguratie kan niet worden geprijsd.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Kies een ondersteunde videoconfiguratie en vul de vereiste opties in voordat u een gecorrigeerd verzoek indient.",
                "type": "price_unavailable"
              },
              {
                "condition": "Een videoinvoer of oorspronkelijke vervolgtaak is ongeldig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Gebruik geldige HTTPS-invoer. Gebruik voor een vervolg uw voltooide oorspronkelijke openbare video-ID met dezelfde API-sleutel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Het beschikbare saldo of de limieten staan geen reservering toe.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Controleer uw beschikbare saldo en limieten voordat u een nieuw verzoek verstuurt.",
                "type": "billing_error"
              },
              {
                "condition": "Videoverificatie, opslag of servicetoegang is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Wacht tot de service beschikbaar is. Als u al een video-ID hebt, controleert u die oorspronkelijke taak in plaats van een nieuwe generatie aan te maken.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Het oorspronkelijke videoresultaat en de kosten moeten worden gecontroleerd.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Bewaar de geretourneerde video-ID en controleer die taak. Verstuur geen vervangend generatieverzoek terwijl deze wordt gecontroleerd.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "De bestaande videodownload is tijdelijk niet beschikbaar.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Controleer dezelfde videotaak later en download de bestaande uitvoer. Een nieuwe generatie maakt een afzonderlijke operatie aan.",
                "type": "server_error"
              },
              {
                "condition": "De video-inhoud is niet gepubliceerd.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Controleer de oorspronkelijke taakstatus. Download nadat deze completed meldt; als deze failed meldt, volgt u de melding over kostencontrole.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + oorspronkelijke id + X-Should-Retry:false; herhaal het oorspronkelijke verzoek nooit"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Geef een tekstprompt en een ondersteunde duur in hele seconden op. Gebruik een exact vermelde grootte, of een resolutie en beeldverhouding die resulteren in vermelde afmetingen.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Een geschreven prompt."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images is een array met objecten met type=image_url, image_url met daarin url, en frame_type. Gebruik een openbare HTTPS-afbeeldings-URL; first_frame en last_frame mogen elk eenmaal voorkomen. Gebruik een vermelde uitvoergrootte of compatibele afmetingen. Voeg geen videoreferenties toe.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Een geschreven prompt en een frameafbeelding."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "bytedance/seedance-2.0"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references is een array. Elk object bevat type=image_url of type=audio_url en een bijbehorend URL-object met daarin url. Gebruik openbare HTTPS-links. Laat frame_images weg om de referentiemodus te selecteren. Videoreferenties kunnen niet worden geprijsd.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "Een geschreven prompt en afbeeldings- of audioreferenties."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Positie van deze video in de uitvoerlijst, geteld vanaf nul.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Ondertekende HTTPS-download-URL voor deze voltooide video.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "SHA-256-digest van de oorspronkelijke videobytes; null indien niet beschikbaar.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Grootte van het oorspronkelijke videobestand in bytes; null indien niet beschikbaar.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Gemeten videoduur in milliseconden; null indien niet beschikbaar.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videobreedte in pixels; null indien niet beschikbaar.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videohoogte in pixels; null indien niet beschikbaar.",
                  "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": "Videocodec-identificatie; null indien niet vastgelegd.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Of de video een audiotrack bevat; null indien niet gemeten.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Audiocodec-identificatie; null wanneer geen identificatie is vastgelegd.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "ondertekende inhouds-URLs die u bezit",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance/seedance-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "bytedance/seedance-2.0"
                },
                "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": [
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "1:1",
                  "3:4",
                  "9:16",
                  "4:3",
                  "16:9",
                  "21:9",
                  "9:21"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Bij 480p en 720p kiest het weglaten van generate_audio de prijs met audio en kiest false de prijs zonder audio. Bij 1080p en 4K geldt de resolutieprijs voor beide instellingen. Controleer has_audio in het resultaat voor de geretourneerde audiotrack.",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Deze sleutels gelden voor elk frameobject. Laat frame_images weg voor een verzoek met uitsluitend tekst.",
                "content": "Array met frameobjecten. Elk object bevat type=image_url, image_url met daarin url en frame_type=first_frame of last_frame. Elke rol komt maximaal eenmaal voor. Gebruik openbare HTTPS-URLs.",
                "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",
                "conditions": "Laat frame_images weg om de referentiemodus te gebruiken. Gebruik openbare HTTPS-URLs.",
                "content": "Array met afbeeldings- of audioreferentieobjecten. Stel type in op image_url of audio_url en geef het bijbehorende URL-object met daarin url op. Voor videoreferenties kan nog steeds geen prijs worden bepaald.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "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"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_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": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480x480",
                  "480x640",
                  "480x854",
                  "640x480",
                  "854x480",
                  "1120x480",
                  "720x720",
                  "720x960",
                  "720x1280",
                  "720x1680",
                  "960x720",
                  "1280x720",
                  "1680x720",
                  "1080x1080",
                  "1080x1440",
                  "1080x1920",
                  "1440x1080",
                  "1920x1080",
                  "2520x1080",
                  "3840x2160",
                  "2160x3840",
                  "2160x2160",
                  "2880x2160",
                  "2160x2880",
                  "5040x2160"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "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": [
                    "1:1",
                    "3:4",
                    "9:16",
                    "4:3",
                    "16:9",
                    "21:9",
                    "9:21"
                  ]
                },
                "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": [
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "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": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "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"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_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": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "bytedance/seedance-2.0"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p",
                    "4K"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "480x480",
                    "480x640",
                    "480x854",
                    "640x480",
                    "854x480",
                    "1120x480",
                    "720x720",
                    "720x960",
                    "720x1280",
                    "720x1680",
                    "960x720",
                    "1280x720",
                    "1680x720",
                    "1080x1080",
                    "1080x1440",
                    "1080x1920",
                    "1440x1080",
                    "1920x1080",
                    "2520x1080",
                    "3840x2160",
                    "2160x3840",
                    "2160x2160",
                    "2880x2160",
                    "2160x2880",
                    "5040x2160"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "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.",
                "Request geometry is required for the pre-generation estimate and reserve. Returned geometry and track time describe the generated output; final charge follows the actual billed configuration.",
                "Video references with *_with_video_input quantity are rejected; image/audio references only where model reference types admit them."
              ]
            },
            "unsupported": [
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "seed",
              "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",
            "reference_to_video"
          ],
          "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"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "invoer: with_video_input; resolutie: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Het tarief per videotoken is de primaire prijsreferentie. De prominent weergegeven schattingen per seconde zijn afzonderlijke referenties, geen extra kosten.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Prijs per videotoken",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "Deze schatting is geen extra bedrag of vast tarief voor de voltooide generatie.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschatte generatiekosten",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "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('{\"model\":\"bytedance/seedance-2.0\",\"prompt\":\"A serene mountain landscape at sunset\",\"duration\":4,\"resolution\":\"480p\",\"size\":\"480x480\",\"generate_audio\":false}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o 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",
          "audio"
        ],
        "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"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0154000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000154",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0094000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_1080p_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000094",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.008000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000008",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_4k_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.0086000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_with_video_input",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.0000086",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "reference",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "The video-token rate is the primary price reference. Per-second headline estimates are separate references, not an extra charge.",
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Video-token price",
            "units": [
              {
                "amount": "0.014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_tokens_without_audio",
                "label": "Video-token price",
                "native_amount_usd_per_unit": "0.000014",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.3024",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.3024",
                "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": "bytedance/seedance-2.0",
        "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.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_1080p_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_4k_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_with_video_input",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "reference",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_tokens_without_audio",
            "label": "Video-token price",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.3024",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.3024",
            "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": "bytedance/seedance-2.0",
        "request_model_id": "bytedance/seedance-2.0",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 2.0",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.3024,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.3024,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000014",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "480p/720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000086",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "480p/720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000154",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000094",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "1080p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": false,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": false,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "4K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000008",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": false,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": false,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "4K"
            },
            "key": "base",
            "label": "base",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "billable_token_source": "usage.completion_tokens",
          "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
          "image_audio_ref_independent_charge": "not listed separately in this tariff",
          "input_includes_video": true,
          "maker_model_id": "dreamina-seedance-2-0-260128",
          "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
          "minimum_tokens_when_video_input": true,
          "offline_not_supported": true,
          "quoted_unit": "1000000_video_tokens",
          "resolution": "4K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000048",
            "amount_unit": "usd_per_token",
            "conditions": {
              "billable_token_source": "usage.completion_tokens",
              "estimated_quantity_formula": "(input_video_duration+output_video_duration)*output_width*output_height*output_fps/1024",
              "image_audio_ref_independent_charge": "not listed separately in this tariff",
              "input_includes_video": true,
              "maker_model_id": "dreamina-seedance-2-0-260128",
              "minimum_token_schedule": "depends on resolution/aspect/output duration; separate official estimate table, actual usage governs",
              "minimum_tokens_when_video_input": true,
              "offline_not_supported": true,
              "quoted_unit": "1000000_video_tokens",
              "resolution": "4K"
            },
            "key": "base",
            "label": "base",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "video_token"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video token",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000014",
            "key": "video_tokens",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.008000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=4k",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000008",
            "key": "video_tokens_4k",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000008",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0154000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=1080p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000154",
            "key": "video_tokens_1080p",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000154",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.014000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "audio=false",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.000014",
            "key": "video_tokens_without_audio",
            "label": "video token",
            "native_amount_usd_per_unit": "0.000014",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0086000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000086",
            "key": "video_tokens_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000086",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=4k · video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000048",
            "key": "video_tokens_4k_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          },
          {
            "amount": "0.0094000",
            "amount_unit": "usd_per_thousand_tokens",
            "basis": "resolution=1080p · video_reference_present Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.0000094",
            "key": "video_tokens_1080p_with_video_input",
            "label": "video token",
            "native_amount_usd_per_unit": "0.0000094",
            "native_quantity": 1,
            "quantity": 1000,
            "side": "out",
            "unit": "video_token"
          }
        ]
      }
    ],
    "public_id": "bytedance/seedance-2.0",
    "short": "ByteDance Seedance 2.0 combineert native audio-videogeneratie met beeld-, video- en geluidsreferenties. Regisseer nieuwe scènes, bewerk bestaand beeldmateriaal of verleng een reeks; de standaardversie omvat gedocumenteerde 1080p- en 10-bits 4K-uitvoer."
  },
  "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": "ByteDance Seedance 2.0 combineert native audio-videogeneratie met beeld-, video- en geluidsreferenties. Regisseer nieuwe scènes, bewerk bestaand beeldmateriaal of verleng een reeks; de standaardversie omvat gedocumenteerde 1080p- en 10-bits 4K-uitvoer.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "987aeca95bbcab7473b2db18e036eee586c2d0ba9194ad3d636bdf88b5184926",
    "raw_model_js_projection_sha256": "8baf96243c5b6c529c492d30259f5465a97cec9067d76d10dc2a97347ca4f52a",
    "raw_model_json_sha256": "987aeca95bbcab7473b2db18e036eee586c2d0ba9194ad3d636bdf88b5184926",
    "renderer_sha256": "be7649af06bb0ae446191041c6cfb8a9b83a53896c8c6e9173e76a39d513e829"
  },
  "sourceRevision": "7a077bb2e24e842b24a1432c3d756fa1bbd29c1138173f24f89a640d3c5b4db6"
}
