{
  "aboutHtml": "<p>Seedance 2.0 är ByteDance Seeds standardmodell för multimodalt ljud- och videoskapande. Den kombinerar text, bilder, video och ljud i en gemensam genereringsarkitektur, med separata kreativa arbetsflöden för referensstyrda scener, videoredigering och videoförlängning. Den är användbar när uppdraget behöver både ett sammanhängande framförande och specifik visuell eller ljudmässig information från förberett material.</p><h4>Multimodal referens och regikontroll</h4><p>Bilder kan definiera motivets utseende, visuell stil och komposition. Videoreferenser kan styra handling, kamerarörelse och effekter. Ljud kan styra röstklang, musik eller dialog. Definiera varje materials roll och beskriv sedan scenen som ska bli resultatet. Tillverkaren betonar kontroll över framförande, ljussättning, skuggor och kameraspråk.</p><p>Förbered en produktbild, en referens för kamerarörelsen och en ljudsignal för en produktberättelse. Ett uppdrag kan vara: ”Bevara den blå glasvasen från Image 1. Använd den långsamma sidledes åkningen från Video 1. Vasen står på en solbelyst hylla med mjuk instrumentalmusik baserad på Audio 1.” Avsedda utdata är en nyiscensatt scen som kombinerar utvald referensinformation.</p><p>Referensindata kan kombinera bild och ljud, bild och video, video och ljud eller alla tre. Enbart ljudindata och text plus ljud utan bild eller video stöds inte. Traditionell text-till-video, generering med första bildrutan och generering med första och sista bildrutan dokumenteras också. Använd det särskilda arbetsflödet för slutpunkter om fasta öppnings- och slutkompositioner är viktiga: att namnge en referensbild som slutpunkt i en omni-referensprompt är bara ett indirekt sätt att styra den.</p><h4>Redigera material</h4><p>Modellen kan ersätta ett motiv, lägga till eller ta bort objekt, ändra element och rita om eller reparera delar av en video. Beskriv den specifika förändringen och identifiera källmaterialet. Inkludera tidpunkten då objektet ska visas och dess position vid ett tillägg; ange objektet exakt vid borttagning eller ersättning och namnge vad som ska vara kvar.</p><p>Till exempel: ”Ersätt skrivbordslampan i Video 1 med mässingslampan i Image 1. Behåll kamerarörelsen, skrivbordsarrangemanget och ljusriktningen.” Det önskade resultatet är en redigerad version av scenen med den avsedda ersättningen. Granska oförändrade områden liksom det nya objektet, särskilt när objekt skyms, vid rörelse och vid byte av tagning.</p><h4>Förläng och koppla ihop en sekvens</h4><p>Seedance 2.0 kan förlänga en video framåt eller bakåt och koppla ihop upp till tre angivna klipp med genererade övergångar. Ange tidsriktning och den nya händelsen. Ordna klippen för en brygga och beskriv övergången mellan varje par, till exempel att kameran går in genom en dörröppning i en tagning och kommer fram i nästa miljö.</p><p>En enkel förlängning returnerar vanligtvis fortsättningen som utvecklats runt källmaterialet; inkludera en tydlig instruktion om slutresultatet också ska upprepa originalsegmentet. När en koppling mellan två eller tre klipp slutförs kan det dokumenterade arbetsflödet inkludera både originalmaterial och nytt övergångsinnehåll. Det är användbart för att utveckla en öppning eller ett avslut eller koppla ihop förberedda scener utan att lämna den förenande handlingen ospecificerad.</p><h4>Standardversionens utdata och 4K</h4><p>Standardversionen dokumenterar MP4 vid 24 fps och längder från 4 till 15 sekunder. Utdatanivåerna är 480p, 720p och 1080p med 8-bitars färgdjup samt 4K med 10-bitars färgdjup. Bildförhållandena som stöds är 21:9, 16:9, 4:3, 1:1, 3:4 och 9:16. Anpassningsbart bildutsnitt och automatiskt längdval dokumenteras också. Fast-versionen har en egen snävare utdataspecifikation för 480p/720p.</p><p>4K-utdata använder H.265/HEVC-kodning. Tiobitarskodning bevarar fler tonnyanser och jämnare färgövergångar, vilket är viktigt för material med subtila ljus- eller färggradienter. Kontrollera att avsedd uppspelnings- och redigeringsmiljö kan avkoda formatet; vissa webbläsare och enheter spelar inte upp det direkt. En kompatibel behållare garanterar inte i sig kompatibel videoavkodning.</p><p>Modellen kan generera synkroniserat ljud eller en tyst video, och den kan returnera den sista genererade bildrutan för en efterföljande scen. Genererat ljud är mono. Familjen 2.0 stöder inte det separata Draft-förhandsvisningsläget i två steg, så funktionen ska inte härledas från en annan Seedance-version.</p><h4>Referensförberedelse och väsentliga begränsningar</h4><p>Dokumenterad referenskapacitet är upp till nio bilder, tre videor och tre ljudklipp. Direktuppladdningar av referensbilder eller videor med verkliga mänskliga ansikten accepteras inte i den dokumenterade producentprofilen; porträttarbete använder dess stödda arbetsflöde för porträttresurser. Varje video- och ljudklipp måste vara 2–15 sekunder långt. Alla videoreferenser tillsammans måste rymmas inom 15 sekunder och alla ljudreferenser tillsammans har ett eget totalvärde på 15 sekunder. Videofiler använder MP4 eller MOV vid 24–60 fps, upp till 200 MB vardera; ljudfiler använder WAV eller MP3, upp till 15 MB vardera. De listade bildformaten är JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC och HEIF. Bilder måste vara mindre än 30 MB vardera och begärans meddelandekropp får inte överstiga 64 MB. I den dokumenterade referensindataprofilen måste bildbredd och höjd vardera vara strikt mellan 300 och 6 000 pixlar, med ett bredd-höjd-förhållande strikt mellan 0,4 och 2,5. Referensvideor tillåter 300–6 000 pixlar i varje dimension och förhållanden på 0,4–2,5 inklusive gränserna, med totalt 407 696–8 295 044 pixlar. MP4- eller MOV-videor använder H.264/AVC- eller H.265/HEVC-video och AAC- eller MP3-ljud.</p><p>Ordna filerna medvetet och hänvisa till varje fil med medietyp och nummer: Image 1, Video 1 och Audio 1. Numret följer ordningen mellan filer av samma typ. Förklara vilka egenskaper som ska överföras och vilket källinnehåll som inte ska definiera den nya scenen. Dokumenterade promptspråk omfattar engelska, spanska, indonesiska, portugisiska och japanska. Håll det talade språket konsekvent inom en dialog; guiden avråder från att blanda språk utom för egennamn. Skilj på talaren, den exakta repliken och framförandeanvisningen för röststyrt arbete.</p><p>Förbered första och sista bild med kompatibelt bildutsnitt. En avvikelse mellan indatabilden och utdatadimensionerna kan orsaka beskärning eller en abrupt visuell ändring; matchande dimensioner och anpassningsbart bildutsnitt är dokumenterade lösningar. Håll beskrivningen koncentrerad på händelsen och referensrollerna. Tillverkaren varnar för att långa promptar kan sprida information och göra att detaljer ignoreras. Granska resulterande rörelse, referenskontinuitet, ljudframförande och skarvar mellan scener som separata delar av det kreativa resultatet.</p><h4>Tagningsplanering och textregi</h4><p>Organisera uppdraget för en komplex scen som Shot 1, Shot 2 och Shot 3 och ange kamera, motivets handling, position och ljud i ordning. Guiden rekommenderar en kamerarörelse per tagning och prioritering av långsamma, sammanhängande handlingar. Exakta tidsstämplar per tagning är instabila, så ett händelseförlopp är bättre kontroll än att tvinga fram flera exakta tidsfönster.</p><p>Modellen genererar också vanlig text, inklusive slagord, undertexter och pratbubblor. Du kan styra textens färg, visuella behandling, plats och entré. Använd vanliga tecken i stället för sällsynta tecken eller specialsymboler och granska ordalydelsen under rörelsen. Koppla tydligt varje resurs till avsedd karaktär eller objekt för motivreferenser. Produktvinklar kan tillhandahålla olika visuell information; kollage med karaktären från flera vinklar kan förvirra ansiktsidentiteten. En separat tydlig porträttbild och helkroppsbild är den dokumenterade rekommendationen för karaktärsreferenser.</p><h4>Beteenden att granska före en redigering</h4><p>Guiden dokumenterar oönskade undertexter, logotyper, dubblerade karaktärer och stilglidning. Rent källmaterial, konsekventa etiketter och uttryckliga begränsningar minskar riskerna men garanterar inte att oönskad text eller dubbla figurer försvinner. Fler än fyra referenspersoner rapporteras som en stabilitetsrisk, skild från antalet filer modellen tar emot.</p><p>Videoförlängning kan skapa ett hopp eller en tillbakagång i skarven, och upprepade fortsättningar kan förstärka försämringen av bildkvaliteten. Granska gränsbildrutorna och begränsa staplade förlängningar. En refererad röst kan avvika från källans klang; berättarröst kan sluta med ett klick eller abrupt avbrott, där ljuduttoning är en dokumenterad lösning. Kinesiska polyfona, ovanliga eller likformiga tecken kan uttalas fel. För en exakt animerad effekt, till exempel en nedräkning, är en rörelsereferens mer informativ än enbart en verbal begäran. Det är konkreta skäl att kontrollera identitet, text, rörelse och ljud separat när klippet väljs.</p>",
  "aboutText": "Seedance 2.0 är ByteDance Seeds standardmodell för multimodalt ljud- och videoskapande. Den kombinerar text, bilder, video och ljud i en gemensam genereringsarkitektur, med separata kreativa arbetsflöden för referensstyrda scener, videoredigering och videoförlängning. Den är användbar när uppdraget behöver både ett sammanhängande framförande och specifik visuell eller ljudmässig information från förberett material.\n\n### Multimodal referens och regikontroll\n\nBilder kan definiera motivets utseende, visuell stil och komposition. Videoreferenser kan styra handling, kamerarörelse och effekter. Ljud kan styra röstklang, musik eller dialog. Definiera varje materials roll och beskriv sedan scenen som ska bli resultatet. Tillverkaren betonar kontroll över framförande, ljussättning, skuggor och kameraspråk.\n\nFörbered en produktbild, en referens för kamerarörelsen och en ljudsignal för en produktberättelse. Ett uppdrag kan vara: ”Bevara den blå glasvasen från Image 1. Använd den långsamma sidledes åkningen från Video 1. Vasen står på en solbelyst hylla med mjuk instrumentalmusik baserad på Audio 1.” Avsedda utdata är en nyiscensatt scen som kombinerar utvald referensinformation.\n\nReferensindata kan kombinera bild och ljud, bild och video, video och ljud eller alla tre. Enbart ljudindata och text plus ljud utan bild eller video stöds inte. Traditionell text-till-video, generering med första bildrutan och generering med första och sista bildrutan dokumenteras också. Använd det särskilda arbetsflödet för slutpunkter om fasta öppnings- och slutkompositioner är viktiga: att namnge en referensbild som slutpunkt i en omni-referensprompt är bara ett indirekt sätt att styra den.\n\n### Redigera material\n\nModellen kan ersätta ett motiv, lägga till eller ta bort objekt, ändra element och rita om eller reparera delar av en video. Beskriv den specifika förändringen och identifiera källmaterialet. Inkludera tidpunkten då objektet ska visas och dess position vid ett tillägg; ange objektet exakt vid borttagning eller ersättning och namnge vad som ska vara kvar.\n\nTill exempel: ”Ersätt skrivbordslampan i Video 1 med mässingslampan i Image 1. Behåll kamerarörelsen, skrivbordsarrangemanget och ljusriktningen.” Det önskade resultatet är en redigerad version av scenen med den avsedda ersättningen. Granska oförändrade områden liksom det nya objektet, särskilt när objekt skyms, vid rörelse och vid byte av tagning.\n\n### Förläng och koppla ihop en sekvens\n\nSeedance 2.0 kan förlänga en video framåt eller bakåt och koppla ihop upp till tre angivna klipp med genererade övergångar. Ange tidsriktning och den nya händelsen. Ordna klippen för en brygga och beskriv övergången mellan varje par, till exempel att kameran går in genom en dörröppning i en tagning och kommer fram i nästa miljö.\n\nEn enkel förlängning returnerar vanligtvis fortsättningen som utvecklats runt källmaterialet; inkludera en tydlig instruktion om slutresultatet också ska upprepa originalsegmentet. När en koppling mellan två eller tre klipp slutförs kan det dokumenterade arbetsflödet inkludera både originalmaterial och nytt övergångsinnehåll. Det är användbart för att utveckla en öppning eller ett avslut eller koppla ihop förberedda scener utan att lämna den förenande handlingen ospecificerad.\n\n### Standardversionens utdata och 4K\n\nStandardversionen dokumenterar MP4 vid 24 fps och längder från 4 till 15 sekunder. Utdatanivåerna är 480p, 720p och 1080p med 8-bitars färgdjup samt 4K med 10-bitars färgdjup. Bildförhållandena som stöds är 21:9, 16:9, 4:3, 1:1, 3:4 och 9:16. Anpassningsbart bildutsnitt och automatiskt längdval dokumenteras också. Fast-versionen har en egen snävare utdataspecifikation för 480p/720p.\n\n4K-utdata använder H.265/HEVC-kodning. Tiobitarskodning bevarar fler tonnyanser och jämnare färgövergångar, vilket är viktigt för material med subtila ljus- eller färggradienter. Kontrollera att avsedd uppspelnings- och redigeringsmiljö kan avkoda formatet; vissa webbläsare och enheter spelar inte upp det direkt. En kompatibel behållare garanterar inte i sig kompatibel videoavkodning.\n\nModellen kan generera synkroniserat ljud eller en tyst video, och den kan returnera den sista genererade bildrutan för en efterföljande scen. Genererat ljud är mono. Familjen 2.0 stöder inte det separata Draft-förhandsvisningsläget i två steg, så funktionen ska inte härledas från en annan Seedance-version.\n\n### Referensförberedelse och väsentliga begränsningar\n\nDokumenterad referenskapacitet är upp till nio bilder, tre videor och tre ljudklipp. Direktuppladdningar av referensbilder eller videor med verkliga mänskliga ansikten accepteras inte i den dokumenterade producentprofilen; porträttarbete använder dess stödda arbetsflöde för porträttresurser. Varje video- och ljudklipp måste vara 2–15 sekunder långt. Alla videoreferenser tillsammans måste rymmas inom 15 sekunder och alla ljudreferenser tillsammans har ett eget totalvärde på 15 sekunder. Videofiler använder MP4 eller MOV vid 24–60 fps, upp till 200 MB vardera; ljudfiler använder WAV eller MP3, upp till 15 MB vardera. De listade bildformaten är JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC och HEIF. Bilder måste vara mindre än 30 MB vardera och begärans meddelandekropp får inte överstiga 64 MB. I den dokumenterade referensindataprofilen måste bildbredd och höjd vardera vara strikt mellan 300 och 6 000 pixlar, med ett bredd-höjd-förhållande strikt mellan 0,4 och 2,5. Referensvideor tillåter 300–6 000 pixlar i varje dimension och förhållanden på 0,4–2,5 inklusive gränserna, med totalt 407 696–8 295 044 pixlar. MP4- eller MOV-videor använder H.264/AVC- eller H.265/HEVC-video och AAC- eller MP3-ljud.\n\nOrdna filerna medvetet och hänvisa till varje fil med medietyp och nummer: Image 1, Video 1 och Audio 1. Numret följer ordningen mellan filer av samma typ. Förklara vilka egenskaper som ska överföras och vilket källinnehåll som inte ska definiera den nya scenen. Dokumenterade promptspråk omfattar engelska, spanska, indonesiska, portugisiska och japanska. Håll det talade språket konsekvent inom en dialog; guiden avråder från att blanda språk utom för egennamn. Skilj på talaren, den exakta repliken och framförandeanvisningen för röststyrt arbete.\n\nFörbered första och sista bild med kompatibelt bildutsnitt. En avvikelse mellan indatabilden och utdatadimensionerna kan orsaka beskärning eller en abrupt visuell ändring; matchande dimensioner och anpassningsbart bildutsnitt är dokumenterade lösningar. Håll beskrivningen koncentrerad på händelsen och referensrollerna. Tillverkaren varnar för att långa promptar kan sprida information och göra att detaljer ignoreras. Granska resulterande rörelse, referenskontinuitet, ljudframförande och skarvar mellan scener som separata delar av det kreativa resultatet.\n\n### Tagningsplanering och textregi\n\nOrganisera uppdraget för en komplex scen som Shot 1, Shot 2 och Shot 3 och ange kamera, motivets handling, position och ljud i ordning. Guiden rekommenderar en kamerarörelse per tagning och prioritering av långsamma, sammanhängande handlingar. Exakta tidsstämplar per tagning är instabila, så ett händelseförlopp är bättre kontroll än att tvinga fram flera exakta tidsfönster.\n\nModellen genererar också vanlig text, inklusive slagord, undertexter och pratbubblor. Du kan styra textens färg, visuella behandling, plats och entré. Använd vanliga tecken i stället för sällsynta tecken eller specialsymboler och granska ordalydelsen under rörelsen. Koppla tydligt varje resurs till avsedd karaktär eller objekt för motivreferenser. Produktvinklar kan tillhandahålla olika visuell information; kollage med karaktären från flera vinklar kan förvirra ansiktsidentiteten. En separat tydlig porträttbild och helkroppsbild är den dokumenterade rekommendationen för karaktärsreferenser.\n\n### Beteenden att granska före en redigering\n\nGuiden dokumenterar oönskade undertexter, logotyper, dubblerade karaktärer och stilglidning. Rent källmaterial, konsekventa etiketter och uttryckliga begränsningar minskar riskerna men garanterar inte att oönskad text eller dubbla figurer försvinner. Fler än fyra referenspersoner rapporteras som en stabilitetsrisk, skild från antalet filer modellen tar emot.\n\nVideoförlängning kan skapa ett hopp eller en tillbakagång i skarven, och upprepade fortsättningar kan förstärka försämringen av bildkvaliteten. Granska gränsbildrutorna och begränsa staplade förlängningar. En refererad röst kan avvika från källans klang; berättarröst kan sluta med ett klick eller abrupt avbrott, där ljuduttoning är en dokumenterad lösning. Kinesiska polyfona, ovanliga eller likformiga tecken kan uttalas fel. För en exakt animerad effekt, till exempel en nedräkning, är en rörelsereferens mer informativ än enbart en verbal begäran. Det är konkreta skäl att kontrollera identitet, text, rörelse och ljud separat när klippet väljs.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4b1f678d4c0cc06cb804f7954ad458c94cb8613302a68b58a23f3e634a644821",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sv",
  "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=\"Stäng\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>bytedance/seedance-2.0</code><button type=\"button\" id=\"copy-id\">Kopiera ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modellkortets avsnitt\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Indata &amp; metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Exempel</button><button type=\"button\" data-card-jump=\"results\">Resultat</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|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\">Start</h3><p class=\"mdesc-full\">ByteDance Seedance 2.0 kombinerar inbyggd ljud- och videogenerering med bild-, video- och ljudreferenser. Regissera nya scener, redigera befintligt material eller förläng en sekvens; standardversionen omfattar dokumenterade utdata i 1080p och 10-bitars 4K.</p><dl class=\"card-io\" data-card-io><div><dt>Godkända indata</dt><dd>Text · Bilder · Ljud</dd></div><div><dt>Resultat</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.</p><div class=\"mabout\" id=\"m-about\"><p>Seedance 2.0 är ByteDance Seeds standardmodell för multimodalt ljud- och videoskapande. Den kombinerar text, bilder, video och ljud i en gemensam genereringsarkitektur, med separata kreativa arbetsflöden för referensstyrda scener, videoredigering och videoförlängning. Den är användbar när uppdraget behöver både ett sammanhängande framförande och specifik visuell eller ljudmässig information från förberett material.</p><h4>Multimodal referens och regikontroll</h4><p>Bilder kan definiera motivets utseende, visuell stil och komposition. Videoreferenser kan styra handling, kamerarörelse och effekter. Ljud kan styra röstklang, musik eller dialog. Definiera varje materials roll och beskriv sedan scenen som ska bli resultatet. Tillverkaren betonar kontroll över framförande, ljussättning, skuggor och kameraspråk.</p><p>Förbered en produktbild, en referens för kamerarörelsen och en ljudsignal för en produktberättelse. Ett uppdrag kan vara: ”Bevara den blå glasvasen från Image 1. Använd den långsamma sidledes åkningen från Video 1. Vasen står på en solbelyst hylla med mjuk instrumentalmusik baserad på Audio 1.” Avsedda utdata är en nyiscensatt scen som kombinerar utvald referensinformation.</p><p>Referensindata kan kombinera bild och ljud, bild och video, video och ljud eller alla tre. Enbart ljudindata och text plus ljud utan bild eller video stöds inte. Traditionell text-till-video, generering med första bildrutan och generering med första och sista bildrutan dokumenteras också. Använd det särskilda arbetsflödet för slutpunkter om fasta öppnings- och slutkompositioner är viktiga: att namnge en referensbild som slutpunkt i en omni-referensprompt är bara ett indirekt sätt att styra den.</p><h4>Redigera material</h4><p>Modellen kan ersätta ett motiv, lägga till eller ta bort objekt, ändra element och rita om eller reparera delar av en video. Beskriv den specifika förändringen och identifiera källmaterialet. Inkludera tidpunkten då objektet ska visas och dess position vid ett tillägg; ange objektet exakt vid borttagning eller ersättning och namnge vad som ska vara kvar.</p><p>Till exempel: ”Ersätt skrivbordslampan i Video 1 med mässingslampan i Image 1. Behåll kamerarörelsen, skrivbordsarrangemanget och ljusriktningen.” Det önskade resultatet är en redigerad version av scenen med den avsedda ersättningen. Granska oförändrade områden liksom det nya objektet, särskilt när objekt skyms, vid rörelse och vid byte av tagning.</p><h4>Förläng och koppla ihop en sekvens</h4><p>Seedance 2.0 kan förlänga en video framåt eller bakåt och koppla ihop upp till tre angivna klipp med genererade övergångar. Ange tidsriktning och den nya händelsen. Ordna klippen för en brygga och beskriv övergången mellan varje par, till exempel att kameran går in genom en dörröppning i en tagning och kommer fram i nästa miljö.</p><p>En enkel förlängning returnerar vanligtvis fortsättningen som utvecklats runt källmaterialet; inkludera en tydlig instruktion om slutresultatet också ska upprepa originalsegmentet. När en koppling mellan två eller tre klipp slutförs kan det dokumenterade arbetsflödet inkludera både originalmaterial och nytt övergångsinnehåll. Det är användbart för att utveckla en öppning eller ett avslut eller koppla ihop förberedda scener utan att lämna den förenande handlingen ospecificerad.</p><h4>Standardversionens utdata och 4K</h4><p>Standardversionen dokumenterar MP4 vid 24 fps och längder från 4 till 15 sekunder. Utdatanivåerna är 480p, 720p och 1080p med 8-bitars färgdjup samt 4K med 10-bitars färgdjup. Bildförhållandena som stöds är 21:9, 16:9, 4:3, 1:1, 3:4 och 9:16. Anpassningsbart bildutsnitt och automatiskt längdval dokumenteras också. Fast-versionen har en egen snävare utdataspecifikation för 480p/720p.</p><p>4K-utdata använder H.265/HEVC-kodning. Tiobitarskodning bevarar fler tonnyanser och jämnare färgövergångar, vilket är viktigt för material med subtila ljus- eller färggradienter. Kontrollera att avsedd uppspelnings- och redigeringsmiljö kan avkoda formatet; vissa webbläsare och enheter spelar inte upp det direkt. En kompatibel behållare garanterar inte i sig kompatibel videoavkodning.</p><p>Modellen kan generera synkroniserat ljud eller en tyst video, och den kan returnera den sista genererade bildrutan för en efterföljande scen. Genererat ljud är mono. Familjen 2.0 stöder inte det separata Draft-förhandsvisningsläget i två steg, så funktionen ska inte härledas från en annan Seedance-version.</p><h4>Referensförberedelse och väsentliga begränsningar</h4><p>Dokumenterad referenskapacitet är upp till nio bilder, tre videor och tre ljudklipp. Direktuppladdningar av referensbilder eller videor med verkliga mänskliga ansikten accepteras inte i den dokumenterade producentprofilen; porträttarbete använder dess stödda arbetsflöde för porträttresurser. Varje video- och ljudklipp måste vara 2–15 sekunder långt. Alla videoreferenser tillsammans måste rymmas inom 15 sekunder och alla ljudreferenser tillsammans har ett eget totalvärde på 15 sekunder. Videofiler använder MP4 eller MOV vid 24–60 fps, upp till 200 MB vardera; ljudfiler använder WAV eller MP3, upp till 15 MB vardera. De listade bildformaten är JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC och HEIF. Bilder måste vara mindre än 30 MB vardera och begärans meddelandekropp får inte överstiga 64 MB. I den dokumenterade referensindataprofilen måste bildbredd och höjd vardera vara strikt mellan 300 och 6 000 pixlar, med ett bredd-höjd-förhållande strikt mellan 0,4 och 2,5. Referensvideor tillåter 300–6 000 pixlar i varje dimension och förhållanden på 0,4–2,5 inklusive gränserna, med totalt 407 696–8 295 044 pixlar. MP4- eller MOV-videor använder H.264/AVC- eller H.265/HEVC-video och AAC- eller MP3-ljud.</p><p>Ordna filerna medvetet och hänvisa till varje fil med medietyp och nummer: Image 1, Video 1 och Audio 1. Numret följer ordningen mellan filer av samma typ. Förklara vilka egenskaper som ska överföras och vilket källinnehåll som inte ska definiera den nya scenen. Dokumenterade promptspråk omfattar engelska, spanska, indonesiska, portugisiska och japanska. Håll det talade språket konsekvent inom en dialog; guiden avråder från att blanda språk utom för egennamn. Skilj på talaren, den exakta repliken och framförandeanvisningen för röststyrt arbete.</p><p>Förbered första och sista bild med kompatibelt bildutsnitt. En avvikelse mellan indatabilden och utdatadimensionerna kan orsaka beskärning eller en abrupt visuell ändring; matchande dimensioner och anpassningsbart bildutsnitt är dokumenterade lösningar. Håll beskrivningen koncentrerad på händelsen och referensrollerna. Tillverkaren varnar för att långa promptar kan sprida information och göra att detaljer ignoreras. Granska resulterande rörelse, referenskontinuitet, ljudframförande och skarvar mellan scener som separata delar av det kreativa resultatet.</p><h4>Tagningsplanering och textregi</h4><p>Organisera uppdraget för en komplex scen som Shot 1, Shot 2 och Shot 3 och ange kamera, motivets handling, position och ljud i ordning. Guiden rekommenderar en kamerarörelse per tagning och prioritering av långsamma, sammanhängande handlingar. Exakta tidsstämplar per tagning är instabila, så ett händelseförlopp är bättre kontroll än att tvinga fram flera exakta tidsfönster.</p><p>Modellen genererar också vanlig text, inklusive slagord, undertexter och pratbubblor. Du kan styra textens färg, visuella behandling, plats och entré. Använd vanliga tecken i stället för sällsynta tecken eller specialsymboler och granska ordalydelsen under rörelsen. Koppla tydligt varje resurs till avsedd karaktär eller objekt för motivreferenser. Produktvinklar kan tillhandahålla olika visuell information; kollage med karaktären från flera vinklar kan förvirra ansiktsidentiteten. En separat tydlig porträttbild och helkroppsbild är den dokumenterade rekommendationen för karaktärsreferenser.</p><h4>Beteenden att granska före en redigering</h4><p>Guiden dokumenterar oönskade undertexter, logotyper, dubblerade karaktärer och stilglidning. Rent källmaterial, konsekventa etiketter och uttryckliga begränsningar minskar riskerna men garanterar inte att oönskad text eller dubbla figurer försvinner. Fler än fyra referenspersoner rapporteras som en stabilitetsrisk, skild från antalet filer modellen tar emot.</p><p>Videoförlängning kan skapa ett hopp eller en tillbakagång i skarven, och upprepade fortsättningar kan förstärka försämringen av bildkvaliteten. Granska gränsbildrutorna och begränsa staplade förlängningar. En refererad röst kan avvika från källans klang; berättarröst kan sluta med ett klick eller abrupt avbrott, där ljuduttoning är en dokumenterad lösning. Kinesiska polyfona, ovanliga eller likformiga tecken kan uttalas fel. För en exakt animerad effekt, till exempel en nedräkning, är en rörelsereferens mer informativ än enbart en verbal begäran. Det är konkreta skäl att kontrollera identitet, text, rörelse och ljud separat när klippet väljs.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tillgängligt i Ailoot · indata &amp; metoder</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Indatatyper</dt><dd><code>text</code>, <code>image</code>, <code>audio</code></dd></div><div><dt>Utdatatyper</dt><dd><code>video</code></dd></div><div><dt>Utdataformat</dt><dd>ursprungliga MP4-byte; ingen normalisering/omkodning</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Fält</th><th>Typ</th><th>Krav</th><th>Värden &amp; gränser</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>bytedance/seedance-2.0</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</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=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>480p, 720p, 1080p, 4K</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>1:1, 3:4, 9:16, 4:3, 16:9, 21:9, 9:21</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>false, true</div><div>Villkor: Vid 480p och 720p väljer ett utelämnat generate_audio priset med ljud, medan false väljer priset utan ljud. Vid 1080p och 4K gäller upplösningens pris för båda inställningarna. Kontrollera has_audio i resultatet för det returnerade ljudspåret.</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">frame_images</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>Minsta antal objekt: 1</div><div>Maximalt antal objekt: 2</div><div>Indatainnehåll: Array med bildruteobjekt. Varje objekt har type=image_url, image_url som innehåller url och frame_type=first_frame eller last_frame. Varje roll förekommer högst en gång. Använd offentliga HTTPS-länkar.</div><div>Exakta nycklar: type, image_url, frame_type</div><div>Villkor: Dessa nycklar gäller varje bildruteobjekt. Utelämna frame_images för en begäran med enbart text.</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>Indatainnehåll: Array med bild- eller ljudreferensobjekt. Sätt type till image_url eller audio_url och ange motsvarande URL-objekt som innehåller url. Videoreferenser kan fortfarande inte prissättas.</div><div>Villkor: Utelämna frame_images för att använda referensläge. Använd offentliga HTTPS-länkar.</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">size</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</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>Mönster: ^[1-9][0-9]*x[1-9][0-9]*$</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</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=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">callback_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>Mönster: ^https://</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinationer av indatamaterial</summary><p class=\"note-s\"><b>Text till video</b> · En skriven prompt. · Krävs: model, prompt, duration</p><p class=\"note-s\"><code>Ange en textprompt och en längd i hela sekunder som stöds. Använd en exakt angiven storlek, eller en upplösning och ett bildförhållande som motsvarar angivna dimensioner.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximalt antal UTF-8-byte: 10 000 · Minst ett tecken som inte är blanksteg krävs: Ja</p><p class=\"note-s\"><b>Bild till video</b> · En skriven prompt och en bildruta. · Krävs: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images är en array med objekt som har type=image_url, image_url som innehåller url samt frame_type. Använd en offentlig HTTPS URL till en bild; first_frame och last_frame får förekomma en gång vardera. Använd en angiven utdatastorlek eller kompatibla dimensioner. Lägg inte till videoreferenser.</code></p><p class=\"note-s\">Exakta nycklar: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximalt antal UTF-8-byte: 10 000 · Minst ett tecken som inte är blanksteg krävs: Ja</p><p class=\"note-s\"><b>Reference to video</b> · En skriven prompt och bild- eller ljudreferenser. · Krävs: model, prompt, duration, input_references</p><p class=\"note-s\"><code>input_references är en array. Varje objekt har type=image_url eller type=audio_url och ett motsvarande URL-objekt som innehåller url. Använd offentliga HTTPS-länkar. Utelämna frame_images för att välja referensläge. Videoreferenser kan inte prissättas.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · bytedance/seedance-2.0</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximalt antal UTF-8-byte: 10 000 · Minst ett tecken som inte är blanksteg krävs: Ja</p></details><details class=\"note-s\" data-method-contract><summary>Metodparametrar och livscykel</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, size, seed, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Livscykel: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Priser</h3><div class=\"card-result-process\" data-billing-basis><h5>Så beräknas slutavgiften</h5><p class=\"note-s\">De visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.</p><dl data-price-conditions><dt>Snabbt läge</dt><dd>Ej angivet <span class=\"note-s\">När snabbt läge är valt</span></dd><dt>Flex-läge</dt><dd>Ej angivet <span class=\"note-s\">När läget flex är valt</span></dd><dt>Högsta resonemangsnivå</dt><dd>Ej angivet <span class=\"note-s\">När den högsta resonemangsnivån använder standardjusteringen (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Uppskattade priser för jämförelse</h4><h4>Priser efter konfiguration</h4><p class=\"note-s\">Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Prislista</th><th>Prognostiserad mängd</th><th>Debiteringsenhet</th><th>Debiteringsvillkor</th><th>Avgift</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Grundpriser för token</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>Grundpris</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>—</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>—</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Indata · Indatatoken · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Utdata · Utdatatoken · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Cacheläsning · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Skrivning till cache · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Skrivning till cache, 1 tim · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per 1K videotoken</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>Inget ytterligare villkor anges i denna prisnyckel.</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken · Uppskattning endast för jämförelse</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per 1K videotoken</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>resolution: 1080p</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken · Uppskattning endast för jämförelse</span> <b>$0.0154</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per 1K videotoken</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>indata: with_video_input; upplösning: 1080p</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>reference · Pris per videotoken · Uppskattning endast för jämförelse</span> <b>$0.0094</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per 1K videotoken</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>resolution: 4k</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken · Uppskattning endast för jämförelse</span> <b>$0.008</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per 1K videotoken</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>indata: with_video_input; upplösning: 4k</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>reference · Pris per videotoken · Uppskattning endast för jämförelse</span> <b>$0.0048</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per 1K videotoken</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>indata: with_video_input</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>reference · Pris per videotoken · Uppskattning endast för jämförelse</span> <b>$0.0086</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per 1K videotoken</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>ljud: without_audio</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken · Uppskattning endast för jämförelse</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Uppskattad genereringskostnad</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>uppskattning för en generering</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>—</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>—</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Uppskattad genereringskostnad · Uppskattning endast för jämförelse</span> <b>$0.3024</b> <span class=\"price-unit\">uppskattning före generering</span></div><p class=\"note-s\">Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. <a href=\"/docs/sv/billing/reserve/\">Så fungerar reservation och slutreglering →</a></p><div data-declared-reference-pricing><h4>Detaljer om referenstariffen</h4><p class=\"note-s\">Referensprislistor på modellnivå ändrar inte metodval, prisuppgifter eller avgifter. Aktiva avgifter använder priserna för den valda Ailoot-metoden.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Prisreferenser för videokonfigurationer</summary><h4>Priser efter konfiguration</h4><p class=\"note-s\">Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Debiteringsvillkor</th><th>Avgift</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>Inget ytterligare villkor anges i denna prisnyckel.</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>resolution: 4k</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken</span> <b>$0.008</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>resolution: 1080p</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken</span> <b>$0.0154</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>ljud: without_audio</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Pris per videotoken</span> <b>$0.014</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>indata: with_video_input</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>reference · Pris per videotoken</span> <b>$0.0086</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>indata: with_video_input; upplösning: 4k</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>reference · Pris per videotoken</span> <b>$0.0048</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Pris för videotoken</th><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>indata: with_video_input; upplösning: 1080p</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>reference · Pris per videotoken</span> <b>$0.0094</b> <span class=\"price-unit\">per 1K videotoken</span></div><p class=\"note-s\">Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exempelbegäranden</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodvarianter\"><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 · skapa video</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiera kod\"><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\">Ta emot och spara resultat</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">signerade innehållslänkar som du äger</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>Kontrollera jobbstatus</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodvarianter\"><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 för ursprunglig åtgärd</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiera kod\"><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>Andra innehållsläsningar</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodvarianter\"><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\">Spara alla färdiga utdata som tillhör dig</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiera kod\"><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>Behåll alla färdiga resultat</h5><p class=\"note-s\">Spara varje färdig video eller returnerad fil; hämta varje faktiskt returnerad resurs-URL.</p><p class=\"note-s\">Behåll varje faktiskt resultat som du äger och dess returnerade, uppmätta metadata.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Om det ursprungliga svaret behöver kontrolleras</h5><p class=\"note-s\">503 result_pending_check + ursprungligt id + X-Should-Retry:false; upprepa aldrig originalet</p></div><details class=\"card-about\" data-output-fields><summary>Svarsfält</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Fält</th><th>Typ</th><th>Betydelse</th></tr></thead><tbody><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Nollbaserad position för denna video i utdatalistan.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Signerad HTTPS URL för hämtning av denna färdiga video.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>SHA-256-kontrollsumma för den ursprungliga videons byte; null om den inte är tillgänglig.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Storleken på den ursprungliga videofilen i byte; null om den inte är tillgänglig.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Uppmätt videolängd i millisekunder; null om den inte är tillgänglig.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Videobredd i pixlar; null om den inte är tillgänglig.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Videohöjd i pixlar; null om den inte är tillgänglig.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Identifierare för videokodek; null om ingen har registrerats.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>boolean | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Om videon innehåller ett ljudspår; null om detta inte har mätts.</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Betydelse\"><span class=\"card-cell-label\">Betydelse</span>Identifierare för ljudkodek; null när ingen identifierare har registrerats.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fel och nästa steg</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Villkor</th><th>Nästa steg</th></tr></thead><tbody><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Videoåtkomst är inte tillgänglig eller detta video-ID hittades inte.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Kontrollera videoåtkomst. För en befintlig video använder du dess ursprungliga offentliga ID och samma API-nyckel.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>API-nyckeln motsvarar inte det autentiserade kontot.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Kontrollera din API-nyckel och kontoåtkomst innan du skickar in.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Begäran kunde inte läsas eller hämtningsindexet är ogiltigt.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Korrigera begäranskroppen. Vid hämtning väljer du ett utdataindex som returnerats av den ursprungliga uppgiften.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Den valda videokonfigurationen kan inte prissättas.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Välj en videokonfiguration som stöds och fyll i dess obligatoriska alternativ innan du skickar en korrigerad begäran.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Videoindata eller den ursprungliga fortsättningsuppgiften är ogiltig.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Använd giltiga HTTPS-indata. För fortsättning använder du det färdiga originalets offentliga video-ID med samma API-nyckel.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>402 · <code>billing_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Det tillgängliga saldot eller gränserna medger ingen reservation.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Kontrollera ditt tillgängliga saldo och dina gränser innan du skickar en ny begäran.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code>server_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Videoverifiering, lagring eller tjänsteåtkomst är tillfälligt otillgänglig.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Vänta tills tjänsten är tillgänglig. Om du redan har ett video-ID kontrollerar du den ursprungliga uppgiften i stället för att skapa en ny generering.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Det ursprungliga videoresultatet och debiteringen behöver kontrolleras.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Behåll det returnerade video-ID:t och kontrollera den uppgiften. Skicka ingen ersättande genereringsbegäran medan den kontrolleras.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Hämtningen av den befintliga videon är tillfälligt otillgänglig.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Kontrollera samma videouppgift senare och hämta dess befintliga resultat. En ny generering skapar en separat operation.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Videoinnehållet har inte publicerats.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Kontrollera den ursprungliga uppgiftens status. Hämta när den rapporterar completed; om den rapporterar failed följer du dess meddelande om debiteringskontroll.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Modellalias</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>Alias för metodsökvägar</h4><p class=\"note-s\">Använd metodsökvägarna som visas ovan.</p><h4>Relaterade anropar-ID:n</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 visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.",
          "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": "Behåll varje faktiskt resultat som du äger och dess returnerade, uppmätta 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": "Videoåtkomst är inte tillgänglig eller detta video-ID hittades inte.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera videoåtkomst. För en befintlig video använder du dess ursprungliga offentliga ID och samma API-nyckel.",
                "type": "not_found_error"
              },
              {
                "condition": "API-nyckeln motsvarar inte det autentiserade kontot.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera din API-nyckel och kontoåtkomst innan du skickar in.",
                "type": "authentication_error"
              },
              {
                "condition": "Begäran kunde inte läsas eller hämtningsindexet är ogiltigt.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Korrigera begäranskroppen. Vid hämtning väljer du ett utdataindex som returnerats av den ursprungliga uppgiften.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den valda videokonfigurationen kan inte prissättas.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Välj en videokonfiguration som stöds och fyll i dess obligatoriska alternativ innan du skickar en korrigerad begäran.",
                "type": "price_unavailable"
              },
              {
                "condition": "Videoindata eller den ursprungliga fortsättningsuppgiften är ogiltig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Använd giltiga HTTPS-indata. För fortsättning använder du det färdiga originalets offentliga video-ID med samma API-nyckel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Det tillgängliga saldot eller gränserna medger ingen reservation.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera ditt tillgängliga saldo och dina gränser innan du skickar en ny begäran.",
                "type": "billing_error"
              },
              {
                "condition": "Videoverifiering, lagring eller tjänsteåtkomst är tillfälligt otillgänglig.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Vänta tills tjänsten är tillgänglig. Om du redan har ett video-ID kontrollerar du den ursprungliga uppgiften i stället för att skapa en ny generering.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Det ursprungliga videoresultatet och debiteringen behöver kontrolleras.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Behåll det returnerade video-ID:t och kontrollera den uppgiften. Skicka ingen ersättande genereringsbegäran medan den kontrolleras.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Hämtningen av den befintliga videon är tillfälligt otillgänglig.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Kontrollera samma videouppgift senare och hämta dess befintliga resultat. En ny generering skapar en separat operation.",
                "type": "server_error"
              },
              {
                "condition": "Videoinnehållet har inte publicerats.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera den ursprungliga uppgiftens status. Hämta när den rapporterar completed; om den rapporterar failed följer du dess meddelande om debiteringskontroll.",
                "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 + ursprungligt id + X-Should-Retry:false; upprepa aldrig originalet"
            },
            "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": "Ange en textprompt och en längd i hela sekunder som stöds. Använd en exakt angiven storlek, eller en upplösning och ett bildförhållande som motsvarar angivna dimensioner.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "En skriven 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 är en array med objekt som har type=image_url, image_url som innehåller url samt frame_type. Använd en offentlig HTTPS URL till en bild; first_frame och last_frame får förekomma en gång vardera. Använd en angiven utdatastorlek eller kompatibla dimensioner. Lägg inte till videoreferenser.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "En skriven prompt och en bildruta."
              },
              {
                "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 är en array. Varje objekt har type=image_url eller type=audio_url och ett motsvarande URL-objekt som innehåller url. Använd offentliga HTTPS-länkar. Utelämna frame_images för att välja referensläge. Videoreferenser kan inte prissättas.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "En skriven prompt och bild- eller ljudreferenser."
              }
            ],
            "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": "Nollbaserad position för denna video i utdatalistan.",
                  "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": "Signerad HTTPS URL för hämtning av denna färdiga 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-kontrollsumma för den ursprungliga videons byte; null om den inte är tillgänglig.",
                  "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": "Storleken på den ursprungliga videofilen i byte; null om den inte är tillgänglig.",
                  "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": "Uppmätt videolängd i millisekunder; null om den inte är tillgänglig.",
                  "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": "Videobredd i pixlar; null om den inte är tillgänglig.",
                  "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": "Videohöjd i pixlar; null om den inte är tillgänglig.",
                  "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": "Identifierare för videokodek; null om ingen har registrerats.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Om videon innehåller ett ljudspår; null om detta inte har mätts.",
                  "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": "Identifierare för ljudkodek; null när ingen identifierare har registrerats.",
                  "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": "signerade innehållslänkar som du äger",
              "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": "Vid 480p och 720p väljer ett utelämnat generate_audio priset med ljud, medan false väljer priset utan ljud. Vid 1080p och 4K gäller upplösningens pris för båda inställningarna. Kontrollera has_audio i resultatet för det returnerade ljudspåret.",
                "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": "Dessa nycklar gäller varje bildruteobjekt. Utelämna frame_images för en begäran med enbart text.",
                "content": "Array med bildruteobjekt. Varje objekt har type=image_url, image_url som innehåller url och frame_type=first_frame eller last_frame. Varje roll förekommer högst en gång. Använd offentliga HTTPS-länkar.",
                "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": "Utelämna frame_images för att använda referensläge. Använd offentliga HTTPS-länkar.",
                "content": "Array med bild- eller ljudreferensobjekt. Sätt type till image_url eller audio_url och ange motsvarande URL-objekt som innehåller url. Videoreferenser kan fortfarande inte prissättas.",
                "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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "indata: with_video_input; upplösning: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Uppskattad genereringskostnad",
            "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": "6391fc1bd53b42b6be641237debe9a7745ea3e50806ab72d374f95f24ae1550d",
    "input_html_sha256": "e8495f972d51c5d4fe68645b75eda8e9373be4e15023386ef69d8337d74a0660",
    "private_audit_sha256": "be21cd94e37b273354b0409136f488550f24f3bd5e843d61dd2cfd053501bb95",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sv/bytedance-seedance-2-0/",
    "description": "ByteDance Seedance 2.0 kombinerar inbyggd ljud- och videogenerering med bild-, video- och ljudreferenser. Regissera nya scener, redigera befintligt material eller förläng en sekvens; standardversionen omfattar dokumenterade utdata i 1080p och 10-bitars 4K.",
    "locale": "sv",
    "md_url": "https://ailoot.ai/models/sv/bytedance-seedance-2-0/index.md",
    "title": "ByteDance: Seedance 2.0 — Ailoot",
    "url": "https://ailoot.ai/models/sv/bytedance-seedance-2-0/"
  },
  "rawModel": {
    "about": "Seedance 2.0 är ByteDance Seeds standardmodell för multimodalt ljud- och videoskapande. Den kombinerar text, bilder, video och ljud i en gemensam genereringsarkitektur, med separata kreativa arbetsflöden för referensstyrda scener, videoredigering och videoförlängning. Den är användbar när uppdraget behöver både ett sammanhängande framförande och specifik visuell eller ljudmässig information från förberett material.\n\n### Multimodal referens och regikontroll\n\nBilder kan definiera motivets utseende, visuell stil och komposition. Videoreferenser kan styra handling, kamerarörelse och effekter. Ljud kan styra röstklang, musik eller dialog. Definiera varje materials roll och beskriv sedan scenen som ska bli resultatet. Tillverkaren betonar kontroll över framförande, ljussättning, skuggor och kameraspråk.\n\nFörbered en produktbild, en referens för kamerarörelsen och en ljudsignal för en produktberättelse. Ett uppdrag kan vara: ”Bevara den blå glasvasen från Image 1. Använd den långsamma sidledes åkningen från Video 1. Vasen står på en solbelyst hylla med mjuk instrumentalmusik baserad på Audio 1.” Avsedda utdata är en nyiscensatt scen som kombinerar utvald referensinformation.\n\nReferensindata kan kombinera bild och ljud, bild och video, video och ljud eller alla tre. Enbart ljudindata och text plus ljud utan bild eller video stöds inte. Traditionell text-till-video, generering med första bildrutan och generering med första och sista bildrutan dokumenteras också. Använd det särskilda arbetsflödet för slutpunkter om fasta öppnings- och slutkompositioner är viktiga: att namnge en referensbild som slutpunkt i en omni-referensprompt är bara ett indirekt sätt att styra den.\n\n### Redigera material\n\nModellen kan ersätta ett motiv, lägga till eller ta bort objekt, ändra element och rita om eller reparera delar av en video. Beskriv den specifika förändringen och identifiera källmaterialet. Inkludera tidpunkten då objektet ska visas och dess position vid ett tillägg; ange objektet exakt vid borttagning eller ersättning och namnge vad som ska vara kvar.\n\nTill exempel: ”Ersätt skrivbordslampan i Video 1 med mässingslampan i Image 1. Behåll kamerarörelsen, skrivbordsarrangemanget och ljusriktningen.” Det önskade resultatet är en redigerad version av scenen med den avsedda ersättningen. Granska oförändrade områden liksom det nya objektet, särskilt när objekt skyms, vid rörelse och vid byte av tagning.\n\n### Förläng och koppla ihop en sekvens\n\nSeedance 2.0 kan förlänga en video framåt eller bakåt och koppla ihop upp till tre angivna klipp med genererade övergångar. Ange tidsriktning och den nya händelsen. Ordna klippen för en brygga och beskriv övergången mellan varje par, till exempel att kameran går in genom en dörröppning i en tagning och kommer fram i nästa miljö.\n\nEn enkel förlängning returnerar vanligtvis fortsättningen som utvecklats runt källmaterialet; inkludera en tydlig instruktion om slutresultatet också ska upprepa originalsegmentet. När en koppling mellan två eller tre klipp slutförs kan det dokumenterade arbetsflödet inkludera både originalmaterial och nytt övergångsinnehåll. Det är användbart för att utveckla en öppning eller ett avslut eller koppla ihop förberedda scener utan att lämna den förenande handlingen ospecificerad.\n\n### Standardversionens utdata och 4K\n\nStandardversionen dokumenterar MP4 vid 24 fps och längder från 4 till 15 sekunder. Utdatanivåerna är 480p, 720p och 1080p med 8-bitars färgdjup samt 4K med 10-bitars färgdjup. Bildförhållandena som stöds är 21:9, 16:9, 4:3, 1:1, 3:4 och 9:16. Anpassningsbart bildutsnitt och automatiskt längdval dokumenteras också. Fast-versionen har en egen snävare utdataspecifikation för 480p/720p.\n\n4K-utdata använder H.265/HEVC-kodning. Tiobitarskodning bevarar fler tonnyanser och jämnare färgövergångar, vilket är viktigt för material med subtila ljus- eller färggradienter. Kontrollera att avsedd uppspelnings- och redigeringsmiljö kan avkoda formatet; vissa webbläsare och enheter spelar inte upp det direkt. En kompatibel behållare garanterar inte i sig kompatibel videoavkodning.\n\nModellen kan generera synkroniserat ljud eller en tyst video, och den kan returnera den sista genererade bildrutan för en efterföljande scen. Genererat ljud är mono. Familjen 2.0 stöder inte det separata Draft-förhandsvisningsläget i två steg, så funktionen ska inte härledas från en annan Seedance-version.\n\n### Referensförberedelse och väsentliga begränsningar\n\nDokumenterad referenskapacitet är upp till nio bilder, tre videor och tre ljudklipp. Direktuppladdningar av referensbilder eller videor med verkliga mänskliga ansikten accepteras inte i den dokumenterade producentprofilen; porträttarbete använder dess stödda arbetsflöde för porträttresurser. Varje video- och ljudklipp måste vara 2–15 sekunder långt. Alla videoreferenser tillsammans måste rymmas inom 15 sekunder och alla ljudreferenser tillsammans har ett eget totalvärde på 15 sekunder. Videofiler använder MP4 eller MOV vid 24–60 fps, upp till 200 MB vardera; ljudfiler använder WAV eller MP3, upp till 15 MB vardera. De listade bildformaten är JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC och HEIF. Bilder måste vara mindre än 30 MB vardera och begärans meddelandekropp får inte överstiga 64 MB. I den dokumenterade referensindataprofilen måste bildbredd och höjd vardera vara strikt mellan 300 och 6 000 pixlar, med ett bredd-höjd-förhållande strikt mellan 0,4 och 2,5. Referensvideor tillåter 300–6 000 pixlar i varje dimension och förhållanden på 0,4–2,5 inklusive gränserna, med totalt 407 696–8 295 044 pixlar. MP4- eller MOV-videor använder H.264/AVC- eller H.265/HEVC-video och AAC- eller MP3-ljud.\n\nOrdna filerna medvetet och hänvisa till varje fil med medietyp och nummer: Image 1, Video 1 och Audio 1. Numret följer ordningen mellan filer av samma typ. Förklara vilka egenskaper som ska överföras och vilket källinnehåll som inte ska definiera den nya scenen. Dokumenterade promptspråk omfattar engelska, spanska, indonesiska, portugisiska och japanska. Håll det talade språket konsekvent inom en dialog; guiden avråder från att blanda språk utom för egennamn. Skilj på talaren, den exakta repliken och framförandeanvisningen för röststyrt arbete.\n\nFörbered första och sista bild med kompatibelt bildutsnitt. En avvikelse mellan indatabilden och utdatadimensionerna kan orsaka beskärning eller en abrupt visuell ändring; matchande dimensioner och anpassningsbart bildutsnitt är dokumenterade lösningar. Håll beskrivningen koncentrerad på händelsen och referensrollerna. Tillverkaren varnar för att långa promptar kan sprida information och göra att detaljer ignoreras. Granska resulterande rörelse, referenskontinuitet, ljudframförande och skarvar mellan scener som separata delar av det kreativa resultatet.\n\n### Tagningsplanering och textregi\n\nOrganisera uppdraget för en komplex scen som Shot 1, Shot 2 och Shot 3 och ange kamera, motivets handling, position och ljud i ordning. Guiden rekommenderar en kamerarörelse per tagning och prioritering av långsamma, sammanhängande handlingar. Exakta tidsstämplar per tagning är instabila, så ett händelseförlopp är bättre kontroll än att tvinga fram flera exakta tidsfönster.\n\nModellen genererar också vanlig text, inklusive slagord, undertexter och pratbubblor. Du kan styra textens färg, visuella behandling, plats och entré. Använd vanliga tecken i stället för sällsynta tecken eller specialsymboler och granska ordalydelsen under rörelsen. Koppla tydligt varje resurs till avsedd karaktär eller objekt för motivreferenser. Produktvinklar kan tillhandahålla olika visuell information; kollage med karaktären från flera vinklar kan förvirra ansiktsidentiteten. En separat tydlig porträttbild och helkroppsbild är den dokumenterade rekommendationen för karaktärsreferenser.\n\n### Beteenden att granska före en redigering\n\nGuiden dokumenterar oönskade undertexter, logotyper, dubblerade karaktärer och stilglidning. Rent källmaterial, konsekventa etiketter och uttryckliga begränsningar minskar riskerna men garanterar inte att oönskad text eller dubbla figurer försvinner. Fler än fyra referenspersoner rapporteras som en stabilitetsrisk, skild från antalet filer modellen tar emot.\n\nVideoförlängning kan skapa ett hopp eller en tillbakagång i skarven, och upprepade fortsättningar kan förstärka försämringen av bildkvaliteten. Granska gränsbildrutorna och begränsa staplade förlängningar. En refererad röst kan avvika från källans klang; berättarröst kan sluta med ett klick eller abrupt avbrott, där ljuduttoning är en dokumenterad lösning. Kinesiska polyfona, ovanliga eller likformiga tecken kan uttalas fel. För en exakt animerad effekt, till exempel en nedräkning, är en rörelsereferens mer informativ än enbart en verbal begäran. Det är konkreta skäl att kontrollera identitet, text, rörelse och ljud separat när klippet väljs.",
    "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": "Fullständig prissättning för konfigurationen finns i detaljerna."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "cb128050bf8483dc92f31388",
        "label": "Prisreferenser för videokonfigurationer",
        "profiles": [
          {
            "basis": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "Inget ytterligare villkor anges i denna prisnyckel."
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "resolution: 4k"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "ljud: without_audio"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "indata: with_video_input"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "indata: with_video_input; upplösning: 4k"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "indata: with_video_input; upplösning: 1080p"
            },
            "label": "Pris för 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 visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.",
          "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": "Behåll varje faktiskt resultat som du äger och dess returnerade, uppmätta 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": "Videoåtkomst är inte tillgänglig eller detta video-ID hittades inte.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera videoåtkomst. För en befintlig video använder du dess ursprungliga offentliga ID och samma API-nyckel.",
                "type": "not_found_error"
              },
              {
                "condition": "API-nyckeln motsvarar inte det autentiserade kontot.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera din API-nyckel och kontoåtkomst innan du skickar in.",
                "type": "authentication_error"
              },
              {
                "condition": "Begäran kunde inte läsas eller hämtningsindexet är ogiltigt.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Korrigera begäranskroppen. Vid hämtning väljer du ett utdataindex som returnerats av den ursprungliga uppgiften.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den valda videokonfigurationen kan inte prissättas.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Välj en videokonfiguration som stöds och fyll i dess obligatoriska alternativ innan du skickar en korrigerad begäran.",
                "type": "price_unavailable"
              },
              {
                "condition": "Videoindata eller den ursprungliga fortsättningsuppgiften är ogiltig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Använd giltiga HTTPS-indata. För fortsättning använder du det färdiga originalets offentliga video-ID med samma API-nyckel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Det tillgängliga saldot eller gränserna medger ingen reservation.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera ditt tillgängliga saldo och dina gränser innan du skickar en ny begäran.",
                "type": "billing_error"
              },
              {
                "condition": "Videoverifiering, lagring eller tjänsteåtkomst är tillfälligt otillgänglig.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Vänta tills tjänsten är tillgänglig. Om du redan har ett video-ID kontrollerar du den ursprungliga uppgiften i stället för att skapa en ny generering.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Det ursprungliga videoresultatet och debiteringen behöver kontrolleras.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Behåll det returnerade video-ID:t och kontrollera den uppgiften. Skicka ingen ersättande genereringsbegäran medan den kontrolleras.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Hämtningen av den befintliga videon är tillfälligt otillgänglig.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Kontrollera samma videouppgift senare och hämta dess befintliga resultat. En ny generering skapar en separat operation.",
                "type": "server_error"
              },
              {
                "condition": "Videoinnehållet har inte publicerats.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Kontrollera den ursprungliga uppgiftens status. Hämta när den rapporterar completed; om den rapporterar failed följer du dess meddelande om debiteringskontroll.",
                "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 + ursprungligt id + X-Should-Retry:false; upprepa aldrig originalet"
            },
            "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": "Ange en textprompt och en längd i hela sekunder som stöds. Använd en exakt angiven storlek, eller en upplösning och ett bildförhållande som motsvarar angivna dimensioner.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "En skriven 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 är en array med objekt som har type=image_url, image_url som innehåller url samt frame_type. Använd en offentlig HTTPS URL till en bild; first_frame och last_frame får förekomma en gång vardera. Använd en angiven utdatastorlek eller kompatibla dimensioner. Lägg inte till videoreferenser.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "En skriven prompt och en bildruta."
              },
              {
                "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 är en array. Varje objekt har type=image_url eller type=audio_url och ett motsvarande URL-objekt som innehåller url. Använd offentliga HTTPS-länkar. Utelämna frame_images för att välja referensläge. Videoreferenser kan inte prissättas.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "En skriven prompt och bild- eller ljudreferenser."
              }
            ],
            "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": "Nollbaserad position för denna video i utdatalistan.",
                  "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": "Signerad HTTPS URL för hämtning av denna färdiga 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-kontrollsumma för den ursprungliga videons byte; null om den inte är tillgänglig.",
                  "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": "Storleken på den ursprungliga videofilen i byte; null om den inte är tillgänglig.",
                  "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": "Uppmätt videolängd i millisekunder; null om den inte är tillgänglig.",
                  "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": "Videobredd i pixlar; null om den inte är tillgänglig.",
                  "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": "Videohöjd i pixlar; null om den inte är tillgänglig.",
                  "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": "Identifierare för videokodek; null om ingen har registrerats.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Om videon innehåller ett ljudspår; null om detta inte har mätts.",
                  "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": "Identifierare för ljudkodek; null när ingen identifierare har registrerats.",
                  "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": "signerade innehållslänkar som du äger",
              "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": "Vid 480p och 720p väljer ett utelämnat generate_audio priset med ljud, medan false väljer priset utan ljud. Vid 1080p och 4K gäller upplösningens pris för båda inställningarna. Kontrollera has_audio i resultatet för det returnerade ljudspåret.",
                "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": "Dessa nycklar gäller varje bildruteobjekt. Utelämna frame_images för en begäran med enbart text.",
                "content": "Array med bildruteobjekt. Varje objekt har type=image_url, image_url som innehåller url och frame_type=first_frame eller last_frame. Varje roll förekommer högst en gång. Använd offentliga HTTPS-länkar.",
                "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": "Utelämna frame_images för att använda referensläge. Använd offentliga HTTPS-länkar.",
                "content": "Array med bild- eller ljudreferensobjekt. Sätt type till image_url eller audio_url och ange motsvarande URL-objekt som innehåller url. Videoreferenser kan fortfarande inte prissättas.",
                "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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "input: with_video_input; resolution: 1080p",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "resolution: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "indata: with_video_input; upplösning: 4k",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Priset per videotoken är den huvudsakliga prisreferensen. De övergripande uppskattningarna per sekund är separata referenser och innebär ingen extra avgift.",
            "dimensions": {
              "conditions": "input: with_video_input",
              "quoted_unit": "per 1,000 video tokens"
            },
            "label": "Pris för 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": "Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Uppskattad genereringskostnad",
            "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 kombinerar inbyggd ljud- och videogenerering med bild-, video- och ljudreferenser. Regissera nya scener, redigera befintligt material eller förläng en sekvens; standardversionen omfattar dokumenterade utdata i 1080p och 10-bitars 4K."
  },
  "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 kombinerar inbyggd ljud- och videogenerering med bild-, video- och ljudreferenser. Regissera nya scener, redigera befintligt material eller förläng en sekvens; standardversionen omfattar dokumenterade utdata i 1080p och 10-bitars 4K.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "c6669d24991fbfb867bb9d2888d934280080057c464b4931d9af8fe56e78f118",
    "raw_model_js_projection_sha256": "6b2773c0f0803fdea3ae60b8fc73c6cb46a741c54f0cee6304a093fc95b5b532",
    "raw_model_json_sha256": "c6669d24991fbfb867bb9d2888d934280080057c464b4931d9af8fe56e78f118",
    "renderer_sha256": "8a45bb31b83d2551e6d975cf4683518c7cb445a54b9394a01947f4dd103f1051"
  },
  "sourceRevision": "1377b7122a8cea9af745c5858c5a52c9f3718c483f909ccc419dfff7efe93656"
}
