{
  "aboutHtml": "<p>Ett audiovisuelt resultat fra en multimodal beskrivelse</p><p>MiniMax H3 er MiniMax’ omnimodale videosystem. Det tolker tekst, bilder, video og lyd samlet og genererer deretter video med innebygd stereolyd. Produsenten presenterer det for korte kreative arbeider som produktvisualiseringer, reklame, animerte plakater og konsepter for filmtitler, der forholdene mellom referansematerialene er like viktige som scenebeskrivelsen.</p><p>Det dokumenterte systemet produserer videoer på 4–15 sekunder ved 24 bilder per sekund med 32 kHz stereolyd. H3-Base genererer i 768p; den fullstendige 2K-arbeidsflyten regenererer resultatet ved hjelp av den opprinnelige multimodale konteksten. Dette er mer enn en vanlig størrelsesendring: det andre trinnet bruker modellen og kildekonteksten på nytt for å gjenskape fine detaljer. H3 Max og H3-Context-IR har egne roller og grenser.</p><p>Skaping fra tekst og enkeltbilder</p><p>Inndata med bare tekst beskriver hele den audiovisuelle tidslinjen. Et første bilde forankrer åpningen, et siste bilde forankrer avslutningen, og to bilder kan definere begge. For et opptak fra første bilde begynner du med komposisjonen og identiteten som er synlig i stillbildet, og beskriver deretter handlingen som utvikler seg fra dette. For en overgang fra første til siste bilde beskriver du den observerbare bevegelsen som forbinder de to tilstandene, i stedet for å gjenta to urelaterte bildebeskrivelser.</p><p>En praktisk produktbeskrivelse kan angi en lukket pakke i åpningsbildet, hånden som åpner den, kameraets rolige bevegelse og sluttilstanden som skal nås. Bevar objektets form, etikettplassering og lyssetting i de innsendte bildene. Skaping fra enkeltbilder og referansestyrt skaping er separate inndatamoduser; produsentens grensesnitt blander ikke roller som første/siste bilde med roller som referansemedium i én forespørsel.</p><p>Referansestyrt generering og redigering</p><p>Referansemodusen tar imot tekst sammen med bilder, videoklipp og lydklipp. Angi hva hver kilde bidrar med: en karakters utseende, en lokasjon, kamerabevegelse, den tidsmessige strukturen i et kildeklipp eller en stemme. En video som bare brukes for kamerabevegelse, er noe annet enn en video som faktisk skal redigeres eller videreføres. Beskriv dette forholdet uttrykkelig.</p><p>Produsentens referanseveiledning skiller mellom motivdefinisjoner, et oppgavesammendrag, en analyse av hva som skal beholdes, en detaljert opptaksbeskrivelse, det samlede lydbildet og bakgrunnsmusikk som bare publikum hører. Den skiller mellom å bevare synlig innhold, å overføre egenskaper og å bruke en bred stilreferanse. For lyd er kopiering av et signal noe annet enn å referere til klang, rytme eller fremføring. Hold disse rollene stabile gjennom hele beskrivelsen.</p><p>For en referansestyrt scene sender du inn et karakterbilde, en kort referanse for kamerabevegelse og en lydreferanse for stemme, og beskriver deretter hvor hver av dem skal påvirke målopptaket. Angi hvilke kles-, miljø- eller objektdetaljer som må forbli gjenkjennelige. Sammenlign det ferdige klippet med disse kravene, inkludert bevegelseskontinuitet og forholdet mellom den synlige taleren og stemmen som høres.</p><p>Tale, lyd og opptakstiming</p><p>H3 modellerer dialog, fysiske lyder, atmosfære og musikk samlet. Modellkortet dokumenterer stabil dialogstøtte for arabisk, kinesisk, engelsk, fransk, tysk, italiensk, japansk, koreansk, portugisisk, russisk og spansk; andre språk beskrives som varierende støttet. Oppgi de nøyaktige replikkene og språket, med en stabil taleridentitet på tvers av opptak.</p><p>Produsentens veiledninger for promptskriving bruker engelsk i beskrivende avsnitt, mens dialog og synlig tekst bevares på originalspråket. Taleinnhold bruker <code>&lt;d&gt;[Language] ...&lt;/d&gt;</code>, med taleridentitet og stemmebeskrivelse utenfor blokken. Skill mellom tale i scenen og fortellerstemme utenfor bildet, og angi når en replikk fortsetter over et klipp eller avbrytes av avslutningen. Bevar også synlig tekst nøyaktig. Tilpass talemengden til den valgte lengden, og kontroller den gjengitte teksten og den hørbare replikken samlet.</p><p>Beskriv kamerabevegelse som en handling, inkludert rekkevidde og hastighet når det har betydning. Nummerer opptakene i avspillingsrekkefølge, og hold klippetidspunktene innenfor videolengden. Skill mellom scenelyder som fottrinn eller en dør som lukkes, og bakgrunnsmusikk som bare publikum hører. Disse valgene gjør en kort opptaksplan enklere å tolke og enklere å vurdere opp mot resultatet.</p><p>Klargjøring av inndata og tallfestede grenser</p><p>Det nåværende genereringsskjemaet krever tekst som ikke er tom i alle moduser, med opptil 7 000 tegn per tekstelement. Bilder kan være JPG, JPEG, PNG, WebP, HEIC eller HEIF, opptil 30 MB hver, med hver side fra 256 til 5 760 piksler og sideforhold fra 0.4 til 2.5. Bildeinndata tillater ett åpningsbilde og ett sluttbilde; referansemodus tillater opptil ni referansebilder.</p><p>Referansevideo kan inneholde opptil tre MP4- eller MOV-klipp, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Et klipp kan være opptil 50 MB; videokodeken er H.264 eller H.265, med AAC- eller MP3-lyd, sider fra 256 til 5 760 piksler, sideforhold fra 0.4 til 2.5 og bildefrekvens fra 23.976 til 60. Referanselyd støtter opptil tre WAV- eller MP3-klipp, opptil 15 MB hver, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Modellkortet begrenser blandede referanseinndata til 12 filer. Den dokumenterte grensen for forespørselskroppen er 64 MB, atskilt fra grensene per fil.</p><p>Velg bare referanser som bidrar til beskrivelsen, og gjør hvert bidrag uttrykkelig. En tydelig visning av motivet er mer nyttig enn flere motstridende visninger uten forklaring. Bevar referanserekkefølgen, beskjær bort irrelevant materiale uten å fjerne nødvendig scenekontekst, og kontroller at korte kildeklipp inneholder handlingen eller stemmeegenskapen du ber om.</p><p>Utdataformat og det komplette systemet</p><p>Produsentens H3-grensesnitt tilbyr 768P og 2K. Generering med bare tekst krever et konkret sideforhold: 21:9, 16:9, 4:3, 1:1, 3:4 eller 9:16. Skaping fra første/siste bilde får sideforholdet fra inngangsbildet; referansebasert skaping kan bruke et tilpasset eller uttrykkelig angitt sideforhold. Utdataenes heltallige lengde er 4–15 sekunder.</p><p>Modellkortet skiller mellom H3-Context-IR, som tolker og beriker beskrivelsen, H3-Base, som genererer audiovisuelt innhold, og H3-Regenerate-2K, som skaper resultatet med høyere oppløsning. De utgitte grunnmodellvektene skiller mellom oppgaver styrt av enkeltbilder og omnimodale referanser. Kontekst- og regenereringskomponentene er atskilt fra disse grunnvektene, så navnet på en åpen modellvekt alene fastslår ikke hvordan hele systemet oppfører seg.</p><p>Produsentens genereringsarbeidsflyt er asynkron. Grensesnittet for oppgavesøk henter oppgaver fra de siste sju dagene. Behold oppgaveidentiteten til det faktiske videoresultatet returneres, og lagre deretter klippet i stedet for bare å beholde en tidsbegrenset nedlastingsadresse. Vurder visuell identitet, liten tekst, samspill mellom objekter, taleinnhold og lydtiming i den tiltenkte visningsstørrelsen. Produsenten oppgir multimodal forståelse og fine visuelle detaljer som områder for videre forbedring; en detaljert beskrivelse og sammenligning med kildene er fortsatt sentralt for et nyttig resultat.</p>",
  "aboutText": "Ett audiovisuelt resultat fra en multimodal beskrivelse\n\nMiniMax H3 er MiniMax’ omnimodale videosystem. Det tolker tekst, bilder, video og lyd samlet og genererer deretter video med innebygd stereolyd. Produsenten presenterer det for korte kreative arbeider som produktvisualiseringer, reklame, animerte plakater og konsepter for filmtitler, der forholdene mellom referansematerialene er like viktige som scenebeskrivelsen.\n\nDet dokumenterte systemet produserer videoer på 4–15 sekunder ved 24 bilder per sekund med 32 kHz stereolyd. H3-Base genererer i 768p; den fullstendige 2K-arbeidsflyten regenererer resultatet ved hjelp av den opprinnelige multimodale konteksten. Dette er mer enn en vanlig størrelsesendring: det andre trinnet bruker modellen og kildekonteksten på nytt for å gjenskape fine detaljer. H3 Max og H3-Context-IR har egne roller og grenser.\n\nSkaping fra tekst og enkeltbilder\n\nInndata med bare tekst beskriver hele den audiovisuelle tidslinjen. Et første bilde forankrer åpningen, et siste bilde forankrer avslutningen, og to bilder kan definere begge. For et opptak fra første bilde begynner du med komposisjonen og identiteten som er synlig i stillbildet, og beskriver deretter handlingen som utvikler seg fra dette. For en overgang fra første til siste bilde beskriver du den observerbare bevegelsen som forbinder de to tilstandene, i stedet for å gjenta to urelaterte bildebeskrivelser.\n\nEn praktisk produktbeskrivelse kan angi en lukket pakke i åpningsbildet, hånden som åpner den, kameraets rolige bevegelse og sluttilstanden som skal nås. Bevar objektets form, etikettplassering og lyssetting i de innsendte bildene. Skaping fra enkeltbilder og referansestyrt skaping er separate inndatamoduser; produsentens grensesnitt blander ikke roller som første/siste bilde med roller som referansemedium i én forespørsel.\n\nReferansestyrt generering og redigering\n\nReferansemodusen tar imot tekst sammen med bilder, videoklipp og lydklipp. Angi hva hver kilde bidrar med: en karakters utseende, en lokasjon, kamerabevegelse, den tidsmessige strukturen i et kildeklipp eller en stemme. En video som bare brukes for kamerabevegelse, er noe annet enn en video som faktisk skal redigeres eller videreføres. Beskriv dette forholdet uttrykkelig.\n\nProdusentens referanseveiledning skiller mellom motivdefinisjoner, et oppgavesammendrag, en analyse av hva som skal beholdes, en detaljert opptaksbeskrivelse, det samlede lydbildet og bakgrunnsmusikk som bare publikum hører. Den skiller mellom å bevare synlig innhold, å overføre egenskaper og å bruke en bred stilreferanse. For lyd er kopiering av et signal noe annet enn å referere til klang, rytme eller fremføring. Hold disse rollene stabile gjennom hele beskrivelsen.\n\nFor en referansestyrt scene sender du inn et karakterbilde, en kort referanse for kamerabevegelse og en lydreferanse for stemme, og beskriver deretter hvor hver av dem skal påvirke målopptaket. Angi hvilke kles-, miljø- eller objektdetaljer som må forbli gjenkjennelige. Sammenlign det ferdige klippet med disse kravene, inkludert bevegelseskontinuitet og forholdet mellom den synlige taleren og stemmen som høres.\n\nTale, lyd og opptakstiming\n\nH3 modellerer dialog, fysiske lyder, atmosfære og musikk samlet. Modellkortet dokumenterer stabil dialogstøtte for arabisk, kinesisk, engelsk, fransk, tysk, italiensk, japansk, koreansk, portugisisk, russisk og spansk; andre språk beskrives som varierende støttet. Oppgi de nøyaktige replikkene og språket, med en stabil taleridentitet på tvers av opptak.\n\nProdusentens veiledninger for promptskriving bruker engelsk i beskrivende avsnitt, mens dialog og synlig tekst bevares på originalspråket. Taleinnhold bruker `<d>[Language] ...</d>`, med taleridentitet og stemmebeskrivelse utenfor blokken. Skill mellom tale i scenen og fortellerstemme utenfor bildet, og angi når en replikk fortsetter over et klipp eller avbrytes av avslutningen. Bevar også synlig tekst nøyaktig. Tilpass talemengden til den valgte lengden, og kontroller den gjengitte teksten og den hørbare replikken samlet.\n\nBeskriv kamerabevegelse som en handling, inkludert rekkevidde og hastighet når det har betydning. Nummerer opptakene i avspillingsrekkefølge, og hold klippetidspunktene innenfor videolengden. Skill mellom scenelyder som fottrinn eller en dør som lukkes, og bakgrunnsmusikk som bare publikum hører. Disse valgene gjør en kort opptaksplan enklere å tolke og enklere å vurdere opp mot resultatet.\n\nKlargjøring av inndata og tallfestede grenser\n\nDet nåværende genereringsskjemaet krever tekst som ikke er tom i alle moduser, med opptil 7 000 tegn per tekstelement. Bilder kan være JPG, JPEG, PNG, WebP, HEIC eller HEIF, opptil 30 MB hver, med hver side fra 256 til 5 760 piksler og sideforhold fra 0.4 til 2.5. Bildeinndata tillater ett åpningsbilde og ett sluttbilde; referansemodus tillater opptil ni referansebilder.\n\nReferansevideo kan inneholde opptil tre MP4- eller MOV-klipp, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Et klipp kan være opptil 50 MB; videokodeken er H.264 eller H.265, med AAC- eller MP3-lyd, sider fra 256 til 5 760 piksler, sideforhold fra 0.4 til 2.5 og bildefrekvens fra 23.976 til 60. Referanselyd støtter opptil tre WAV- eller MP3-klipp, opptil 15 MB hver, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Modellkortet begrenser blandede referanseinndata til 12 filer. Den dokumenterte grensen for forespørselskroppen er 64 MB, atskilt fra grensene per fil.\n\nVelg bare referanser som bidrar til beskrivelsen, og gjør hvert bidrag uttrykkelig. En tydelig visning av motivet er mer nyttig enn flere motstridende visninger uten forklaring. Bevar referanserekkefølgen, beskjær bort irrelevant materiale uten å fjerne nødvendig scenekontekst, og kontroller at korte kildeklipp inneholder handlingen eller stemmeegenskapen du ber om.\n\nUtdataformat og det komplette systemet\n\nProdusentens H3-grensesnitt tilbyr 768P og 2K. Generering med bare tekst krever et konkret sideforhold: 21:9, 16:9, 4:3, 1:1, 3:4 eller 9:16. Skaping fra første/siste bilde får sideforholdet fra inngangsbildet; referansebasert skaping kan bruke et tilpasset eller uttrykkelig angitt sideforhold. Utdataenes heltallige lengde er 4–15 sekunder.\n\nModellkortet skiller mellom H3-Context-IR, som tolker og beriker beskrivelsen, H3-Base, som genererer audiovisuelt innhold, og H3-Regenerate-2K, som skaper resultatet med høyere oppløsning. De utgitte grunnmodellvektene skiller mellom oppgaver styrt av enkeltbilder og omnimodale referanser. Kontekst- og regenereringskomponentene er atskilt fra disse grunnvektene, så navnet på en åpen modellvekt alene fastslår ikke hvordan hele systemet oppfører seg.\n\nProdusentens genereringsarbeidsflyt er asynkron. Grensesnittet for oppgavesøk henter oppgaver fra de siste sju dagene. Behold oppgaveidentiteten til det faktiske videoresultatet returneres, og lagre deretter klippet i stedet for bare å beholde en tidsbegrenset nedlastingsadresse. Vurder visuell identitet, liten tekst, samspill mellom objekter, taleinnhold og lydtiming i den tiltenkte visningsstørrelsen. Produsenten oppgir multimodal forståelse og fine visuelle detaljer som områder for videre forbedring; en detaljert beskrivelse og sammenligning med kildene er fortsatt sentralt for et nyttig resultat.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "3b292727eb910e02c92d0c20364c834d7e49d079942055d941e1778d1902f4d4",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nb",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">MiniMax: H3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Lukk\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>minimax/hailuo-3</code><button type=\"button\" id=\"copy-id\">Kopier ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Seksjoner i modellkortet\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Inndata &amp; metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Eksempler</button><button type=\"button\" data-card-jump=\"results\">Resultater</button><button type=\"button\" data-card-jump=\"aliases\">Aliaser</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|minimax%2Fhailuo-3\">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\">MiniMax H3 genererer korte videoer med innebygd stereolyd fra tekst, enkeltbilder eller multimodale referanser. Den støtter skaping fra første/siste bilde, referansestyrt redigering og sammenhenger for bevegelse eller stemme, med resultater på 4–15 sekunder og en egen arbeidsflyt for regenerering i 2K.</p><dl class=\"card-io\" data-card-io><div><dt>Godkjente inndata</dt><dd>Tekst · Bilder · Lyd · Video</dd></div><div><dt>Resultater</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.</p><div class=\"mabout\" id=\"m-about\"><p>Ett audiovisuelt resultat fra en multimodal beskrivelse</p><p>MiniMax H3 er MiniMax’ omnimodale videosystem. Det tolker tekst, bilder, video og lyd samlet og genererer deretter video med innebygd stereolyd. Produsenten presenterer det for korte kreative arbeider som produktvisualiseringer, reklame, animerte plakater og konsepter for filmtitler, der forholdene mellom referansematerialene er like viktige som scenebeskrivelsen.</p><p>Det dokumenterte systemet produserer videoer på 4–15 sekunder ved 24 bilder per sekund med 32 kHz stereolyd. H3-Base genererer i 768p; den fullstendige 2K-arbeidsflyten regenererer resultatet ved hjelp av den opprinnelige multimodale konteksten. Dette er mer enn en vanlig størrelsesendring: det andre trinnet bruker modellen og kildekonteksten på nytt for å gjenskape fine detaljer. H3 Max og H3-Context-IR har egne roller og grenser.</p><p>Skaping fra tekst og enkeltbilder</p><p>Inndata med bare tekst beskriver hele den audiovisuelle tidslinjen. Et første bilde forankrer åpningen, et siste bilde forankrer avslutningen, og to bilder kan definere begge. For et opptak fra første bilde begynner du med komposisjonen og identiteten som er synlig i stillbildet, og beskriver deretter handlingen som utvikler seg fra dette. For en overgang fra første til siste bilde beskriver du den observerbare bevegelsen som forbinder de to tilstandene, i stedet for å gjenta to urelaterte bildebeskrivelser.</p><p>En praktisk produktbeskrivelse kan angi en lukket pakke i åpningsbildet, hånden som åpner den, kameraets rolige bevegelse og sluttilstanden som skal nås. Bevar objektets form, etikettplassering og lyssetting i de innsendte bildene. Skaping fra enkeltbilder og referansestyrt skaping er separate inndatamoduser; produsentens grensesnitt blander ikke roller som første/siste bilde med roller som referansemedium i én forespørsel.</p><p>Referansestyrt generering og redigering</p><p>Referansemodusen tar imot tekst sammen med bilder, videoklipp og lydklipp. Angi hva hver kilde bidrar med: en karakters utseende, en lokasjon, kamerabevegelse, den tidsmessige strukturen i et kildeklipp eller en stemme. En video som bare brukes for kamerabevegelse, er noe annet enn en video som faktisk skal redigeres eller videreføres. Beskriv dette forholdet uttrykkelig.</p><p>Produsentens referanseveiledning skiller mellom motivdefinisjoner, et oppgavesammendrag, en analyse av hva som skal beholdes, en detaljert opptaksbeskrivelse, det samlede lydbildet og bakgrunnsmusikk som bare publikum hører. Den skiller mellom å bevare synlig innhold, å overføre egenskaper og å bruke en bred stilreferanse. For lyd er kopiering av et signal noe annet enn å referere til klang, rytme eller fremføring. Hold disse rollene stabile gjennom hele beskrivelsen.</p><p>For en referansestyrt scene sender du inn et karakterbilde, en kort referanse for kamerabevegelse og en lydreferanse for stemme, og beskriver deretter hvor hver av dem skal påvirke målopptaket. Angi hvilke kles-, miljø- eller objektdetaljer som må forbli gjenkjennelige. Sammenlign det ferdige klippet med disse kravene, inkludert bevegelseskontinuitet og forholdet mellom den synlige taleren og stemmen som høres.</p><p>Tale, lyd og opptakstiming</p><p>H3 modellerer dialog, fysiske lyder, atmosfære og musikk samlet. Modellkortet dokumenterer stabil dialogstøtte for arabisk, kinesisk, engelsk, fransk, tysk, italiensk, japansk, koreansk, portugisisk, russisk og spansk; andre språk beskrives som varierende støttet. Oppgi de nøyaktige replikkene og språket, med en stabil taleridentitet på tvers av opptak.</p><p>Produsentens veiledninger for promptskriving bruker engelsk i beskrivende avsnitt, mens dialog og synlig tekst bevares på originalspråket. Taleinnhold bruker <code>&lt;d&gt;[Language] ...&lt;/d&gt;</code>, med taleridentitet og stemmebeskrivelse utenfor blokken. Skill mellom tale i scenen og fortellerstemme utenfor bildet, og angi når en replikk fortsetter over et klipp eller avbrytes av avslutningen. Bevar også synlig tekst nøyaktig. Tilpass talemengden til den valgte lengden, og kontroller den gjengitte teksten og den hørbare replikken samlet.</p><p>Beskriv kamerabevegelse som en handling, inkludert rekkevidde og hastighet når det har betydning. Nummerer opptakene i avspillingsrekkefølge, og hold klippetidspunktene innenfor videolengden. Skill mellom scenelyder som fottrinn eller en dør som lukkes, og bakgrunnsmusikk som bare publikum hører. Disse valgene gjør en kort opptaksplan enklere å tolke og enklere å vurdere opp mot resultatet.</p><p>Klargjøring av inndata og tallfestede grenser</p><p>Det nåværende genereringsskjemaet krever tekst som ikke er tom i alle moduser, med opptil 7 000 tegn per tekstelement. Bilder kan være JPG, JPEG, PNG, WebP, HEIC eller HEIF, opptil 30 MB hver, med hver side fra 256 til 5 760 piksler og sideforhold fra 0.4 til 2.5. Bildeinndata tillater ett åpningsbilde og ett sluttbilde; referansemodus tillater opptil ni referansebilder.</p><p>Referansevideo kan inneholde opptil tre MP4- eller MOV-klipp, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Et klipp kan være opptil 50 MB; videokodeken er H.264 eller H.265, med AAC- eller MP3-lyd, sider fra 256 til 5 760 piksler, sideforhold fra 0.4 til 2.5 og bildefrekvens fra 23.976 til 60. Referanselyd støtter opptil tre WAV- eller MP3-klipp, opptil 15 MB hver, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Modellkortet begrenser blandede referanseinndata til 12 filer. Den dokumenterte grensen for forespørselskroppen er 64 MB, atskilt fra grensene per fil.</p><p>Velg bare referanser som bidrar til beskrivelsen, og gjør hvert bidrag uttrykkelig. En tydelig visning av motivet er mer nyttig enn flere motstridende visninger uten forklaring. Bevar referanserekkefølgen, beskjær bort irrelevant materiale uten å fjerne nødvendig scenekontekst, og kontroller at korte kildeklipp inneholder handlingen eller stemmeegenskapen du ber om.</p><p>Utdataformat og det komplette systemet</p><p>Produsentens H3-grensesnitt tilbyr 768P og 2K. Generering med bare tekst krever et konkret sideforhold: 21:9, 16:9, 4:3, 1:1, 3:4 eller 9:16. Skaping fra første/siste bilde får sideforholdet fra inngangsbildet; referansebasert skaping kan bruke et tilpasset eller uttrykkelig angitt sideforhold. Utdataenes heltallige lengde er 4–15 sekunder.</p><p>Modellkortet skiller mellom H3-Context-IR, som tolker og beriker beskrivelsen, H3-Base, som genererer audiovisuelt innhold, og H3-Regenerate-2K, som skaper resultatet med høyere oppløsning. De utgitte grunnmodellvektene skiller mellom oppgaver styrt av enkeltbilder og omnimodale referanser. Kontekst- og regenereringskomponentene er atskilt fra disse grunnvektene, så navnet på en åpen modellvekt alene fastslår ikke hvordan hele systemet oppfører seg.</p><p>Produsentens genereringsarbeidsflyt er asynkron. Grensesnittet for oppgavesøk henter oppgaver fra de siste sju dagene. Behold oppgaveidentiteten til det faktiske videoresultatet returneres, og lagre deretter klippet i stedet for bare å beholde en tidsbegrenset nedlastingsadresse. Vurder visuell identitet, liten tekst, samspill mellom objekter, taleinnhold og lydtiming i den tiltenkte visningsstørrelsen. Produsenten oppgir multimodal forståelse og fine visuelle detaljer som områder for videre forbedring; en detaljert beskrivelse og sammenligning med kildene er fortsatt sentralt for et nyttig resultat.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tilgjengelig i Ailoot · inndata &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>Inndatatyper</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</code></dd></div><div><dt>Utdatatyper</dt><dd><code>video</code></dd></div><div><dt>Utdataformat</dt><dd>opprinnelige MP4-bytes; ingen normalisering/transkoding</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Felt</th><th>Type</th><th>Krav</th><th>Verdier &amp; grenser</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>minimax/hailuo-3</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15</div><div>Minimum: 1</div><div>Maksimum: 600</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>2K</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>21:9, 16:9, 4:3, 1:1, 3:4, 9:16</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>boolean</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>false, true</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">frame_images</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>Minste antall elementer: 1</div><div>Maksimalt antall elementer: 2</div><div>Inngående innhold: Matrise med bildeobjekter. Hvert objekt har type=image_url, image_url som inneholder url, og frame_type. Bruk en HTTPS-basert URL til bildet, og sett frame_type til first_frame eller last_frame. Hver bilderolle forekommer høyst én gang.</div><div>Nøyaktige nøkler: type, image_url, frame_type</div><div>Vilkår: Disse nøklene beskriver hvert bildeobjekt; image_url inneholder bare url. Utelat frame_images ved en forespørsel som bare inneholder tekst.</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">callback_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>Mønster: ^https://</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</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>Kombinasjoner av inngående materialer</summary><p class=\"note-s\"><b>Tekst til video</b> · En skriftlig ledetekst. · Påkrevd: model, prompt, duration</p><p class=\"note-s\"><code>Oppgi prompt som tekst og duration som hele sekunder. Velg en støttet oppløsning og ved behov et sideforhold.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · minimax/hailuo-3</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maksimalt antall UTF-8-byte: 10 000 · Minst ett tegn som ikke er mellomrom, kreves: Ja</p><p class=\"note-s\"><b>Bilde til video</b> · En skriftlig ledetekst og et bilde for første enkeltbilde. · Påkrevd: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images er en matrise. Hvert bildeobjekt har type, image_url og frame_type; image_url inneholder url. Sett type til image_url. Bruk first_frame med en valgfri last_frame. Hver bilderolle forekommer høyst én gang. Oppgi en offentlig tilgjengelig HTTPS-basert URL til bildet for hvert enkeltbilde. Bruk enkeltbilder eller bildereferanser i én forespørsel; ikke kombiner begge. Velg en støttet oppløsning og ved behov et sideforhold.</code></p><p class=\"note-s\">Nøyaktige nøkler: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · minimax/hailuo-3</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maksimalt antall UTF-8-byte: 10 000 · Minst ett tegn som ikke er mellomrom, kreves: Ja</p><p class=\"note-s\"><b>Reference to video</b> · En skriftlig ledetekst og støttede bilde-, video- og lydreferanser. · Påkrevd: model, prompt, duration, input_references</p><p class=\"note-s\"><code>input_references er en matrise med objekter. Sett type til image_url, video_url, audio_url, og bruk det tilsvarende feltet som inneholder url. Bruk offentlig tilgjengelige HTTPS-adresser. Utelat frame_images for å velge referansemodus. Anslaget inkluderer den viste komponenten per bilde bare for referansebilder etter de første fem. Endelig belastning følger den faktisk fakturerte konfigurasjonen. Ikke kombiner bildereferanser med enkeltbilder. Velg en støttet oppløsning og ved behov et sideforhold.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type: string · minimax/hailuo-3</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type: string · Maksimalt antall UTF-8-byte: 10 000 · Minst ett tegn som ikke er mellomrom, kreves: Ja</p></details><details class=\"note-s\" data-method-contract><summary>Metodeparametere og livssyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</span>text, image, audio, video</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Livssyklus: <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>Slik beregnes det endelige beløpet</h5><p class=\"note-s\">De viste satsene anslår kostnaden før generering. Det endelige beløpet beregnes ut fra kostnaden som er registrert for den opprinnelige genereringen. Målt varighet på utdataene og anslåtte mengder er ikke den endelige fakturerbare mengden.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.</p><dl data-price-conditions><dt>Hurtigmodus</dt><dd>Ikke angitt <span class=\"note-s\">Når hurtigmodus er valgt</span></dd><dt>Flex-modus</dt><dd>Ikke angitt <span class=\"note-s\">Når flex-modus er valgt</span></dd><dt>Maksimal resonneringsinnsats</dt><dd>Ikke angitt <span class=\"note-s\">Når justeringen «default» brukes for maksimal resonneringsinnsats</span></dd></dl></div><div data-declared-tariff-pricing><h4>Estimerte satser for sammenligning</h4><h4>Priser etter konfigurasjon</h4><p class=\"note-s\">Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasjon</th><th>Prisplan</th><th>Forventet mengde</th><th>Faktureringsenhet</th><th>Faktureringsvilkår</th><th>Kostnad</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>Grunnpriser for tokener</th><td data-cell-label=\"Prisplan\"><span class=\"card-cell-label\">Prisplan</span>Grunnsats</td><td data-cell-label=\"Forventet mengde\"><span class=\"card-cell-label\">Forventet mengde</span>—</td><td data-cell-label=\"Faktureringsenhet\"><span class=\"card-cell-label\">Faktureringsenhet</span>—</td><td data-cell-label=\"Faktureringsvilkår\"><span class=\"card-cell-label\">Faktureringsvilkår</span>—</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Inndata · Inngående tokener · Estimat kun for sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Utdata · Utgående tokener · Estimat kun for sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Inndata · Lesing fra hurtigbuffer · Estimat kun for sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Inndata · Skriving til hurtigbuffer · Estimat kun for sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Inndata · Skriving til hurtigbuffer, 1 time · Estimat kun for sammenligning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div></td></tr><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>Videopris</th><td data-cell-label=\"Prisplan\"><span class=\"card-cell-label\">Prisplan</span>—</td><td data-cell-label=\"Forventet mengde\"><span class=\"card-cell-label\">Forventet mengde</span>—</td><td data-cell-label=\"Faktureringsenhet\"><span class=\"card-cell-label\">Faktureringsenhet</span>per videosekund</td><td data-cell-label=\"Faktureringsvilkår\"><span class=\"card-cell-label\">Faktureringsvilkår</span>Ingen ytterligere betingelse er angitt i denne prisnøkkelen.</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Utdata · Videopris · Estimat kun for sammenligning</span> <b>$0.26</b> <span class=\"price-unit\">per videosekund</span></div></td></tr><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>referansebilde</th><td data-cell-label=\"Prisplan\"><span class=\"card-cell-label\">Prisplan</span>—</td><td data-cell-label=\"Forventet mengde\"><span class=\"card-cell-label\">Forventet mengde</span>—</td><td data-cell-label=\"Faktureringsenhet\"><span class=\"card-cell-label\">Faktureringsenhet</span>per referansebilde</td><td data-cell-label=\"Faktureringsvilkår\"><span class=\"card-cell-label\">Faktureringsvilkår</span>—</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Inndata · referansebilde · Estimat kun for sammenligning</span> <b>$0.08</b> <span class=\"price-unit\">per referansebilde</span></div></td></tr><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>Anslått genereringskostnad</th><td data-cell-label=\"Prisplan\"><span class=\"card-cell-label\">Prisplan</span>—</td><td data-cell-label=\"Forventet mengde\"><span class=\"card-cell-label\">Forventet mengde</span>estimat for én generering</td><td data-cell-label=\"Faktureringsenhet\"><span class=\"card-cell-label\">Faktureringsenhet</span>—</td><td data-cell-label=\"Faktureringsvilkår\"><span class=\"card-cell-label\">Faktureringsvilkår</span>—</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Utdata · Anslått genereringskostnad · Estimat kun for sammenligning</span> <b>$1.3</b> <span class=\"price-unit\">estimat før generering</span></div><p class=\"note-s\">Dette anslaget er verken en tilleggsavgift eller en fast sats for den fullførte genereringen.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. <a href=\"/docs/nb/billing/reserve/\">Slik fungerer reservasjon og oppgjør →</a></p><div data-declared-reference-pricing><h4>Detaljer om referansetariffen</h4><p class=\"note-s\">Referanseprisplaner på modellnivå endrer ikke metodevalg, prisoverslag eller kostnader. Aktive kostnader bruker satsene til den valgte Ailoot-metoden.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Prisreferanser for videokonfigurasjoner</summary><h4>Priser etter konfigurasjon</h4><p class=\"note-s\">Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasjon</th><th>Faktureringsvilkår</th><th>Kostnad</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>Videopris</th><td data-cell-label=\"Faktureringsvilkår\"><span class=\"card-cell-label\">Faktureringsvilkår</span>Ingen ytterligere betingelse er angitt i denne prisnøkkelen.</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Utdata · Videopris</span> <b>$0.26</b> <span class=\"price-unit\">per videosekund</span></div><p class=\"note-s\">Publisert prisreferanse for den viste konfigurasjonen. Endelige belastninger følger konfigurasjonen som faktisk faktureres.</p></td></tr><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>Referansebilder etter de første fem</th><td data-cell-label=\"Faktureringsvilkår\"><span class=\"card-cell-label\">Faktureringsvilkår</span>Ingen ytterligere betingelse er angitt i denne prisnøkkelen.</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Inndata · Referansebilder etter de fem første</span> <b>$0.08</b> <span class=\"price-unit\">per bilde</span></div><p class=\"note-s\">De første fem referansebildene er gratis; den oppførte satsen per bilde gjelder etter de første fem. Publisert prisreferanse for den viste konfigurasjonen. Endelige belastninger følger den faktisk fakturerte konfigurasjonen.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Eksempelforespørsler</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><button class=\"cg-tab\" id=\"model-code-1866-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1866-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · opprett video</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopier kode\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1866-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1866-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;aspect_ratio&quot;:&quot;16:9&quot;,&quot;duration&quot;:8,&quot;model&quot;:&quot;minimax/hailuo-3&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;resolution&quot;:&quot;2K&quot;}&#39;, encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Motta og lagre resultater</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">Signerte innholdsadresser for ressurser du eier</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>Kontroller jobbstatus</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><button class=\"cg-tab\" id=\"model-code-1867-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1867-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET status for opprinnelig operasjon</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopier kode\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1867-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1867-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>Andre innholdslesinger</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><button class=\"cg-tab\" id=\"model-code-1868-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1868-panel-0\" aria-selected=\"true\" tabindex=\"0\">Lagre alle ferdige utdata som tilhører deg</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopier kode\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1868-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1868-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Behold alle ferdige resultater</h5><p class=\"note-s\">Lagre hver ferdige video eller returnerte fil; hent hver faktisk returnerte ressurs-URL.</p><p class=\"note-s\">Behold alle faktiske utdata du eier, og de returnerte målte metadataene.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Hvis det opprinnelige svaret må kontrolleres</h5><p class=\"note-s\">503 result_pending_check + opprinnelig id + X-Should-Retry:false; gjenta aldri den opprinnelige sendingen</p></div><details class=\"card-about\" data-output-fields><summary>Svarfelter</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Felt</th><th>Type</th><th>Betydning</th></tr></thead><tbody><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Nullbasert posisjon for denne videoen i utdatalisten.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Signert HTTPS-basert URL for nedlasting av denne ferdigstilte videoen.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>SHA-256-kontrollsum for den opprinnelige videoens byte; null hvis utilgjengelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Størrelsen på den opprinnelige videofilen i byte; null hvis utilgjengelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Målt videovarighet i millisekunder; null hvis utilgjengelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Videobredde i piksler; null hvis utilgjengelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Videohøyde i piksler; null hvis utilgjengelig.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Identifikator for videokodeken; null hvis ikke registrert.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>boolean | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Om videoen inneholder et lydspor; null hvis ikke målt.</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Betydning\"><span class=\"card-cell-label\">Betydning</span>Identifikator for lydkodeken; null når ingen identifikator er registrert.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Feil og neste trinn</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Vilkår</th><th>Neste trinn</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Videotilgang er utilgjengelig, eller denne video-ID-en ble ikke funnet.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Kontroller videotilgangen. For en eksisterende video bruker du den opprinnelige offentlige ID-en og samme API-nøkkel.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>API-nøkkelen samsvarer ikke med den autentiserte kontoen.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Kontroller API-nøkkelen din og kontotilgangen før innsending.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Forespørselen kunne ikke leses, eller nedlastingsindeksen er ugyldig.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Korriger forespørselskroppen. Ved nedlasting velger du en utdataindeks som ble returnert av den opprinnelige oppgaven.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Den valgte videokonfigurasjonen kan ikke prises.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Velg en støttet videokonfigurasjon og fyll ut de påkrevde alternativene før du sender en korrigert forespørsel.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Videoinndata eller den opprinnelige fortsettelsesoppgaven er ugyldig.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Bruk gyldige HTTPS-inndata. Ved fortsettelse bruker du den ferdigstilte originalens offentlige video-ID med samme API-nøkkel.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Den tilgjengelige saldoen eller grensene tillater ikke en reservasjon.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Kontroller tilgjengelig saldo og grenser før du sender en ny forespørsel.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Videokontroll, lagring eller tjenestetilgang er midlertidig utilgjengelig.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Vent til tjenesten er tilgjengelig. Hvis du allerede har en video-ID, kontroller den opprinnelige oppgaven fremfor å opprette 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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Det opprinnelige videoresultatet og belastningen må kontrolleres.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Behold den returnerte video-ID-en og kontroller den oppgaven. Ikke send en erstatningsforespørsel om generering mens den kontrolleres.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Nedlasting av den eksisterende videoen er midlertidig utilgjengelig.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Kontroller den samme videooppgaven senere og last ned de eksisterende utdataene. En ny generering oppretter en separat operasjon.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Videoinnholdet er ikke publisert.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Kontroller den opprinnelige oppgavestatusen. Last ned etter at den rapporterer completed; hvis den rapporterer failed, følg varselet om kontroll av belastningen.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliaser</h3><h4>Modellaliaser</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=minimax%2Fhailuo-3&amp;route=Ultra&amp;caller=minimax%2Fhailuo-3&amp;fmt=videos\"><code>minimax/hailuo-3</code></a></span></p><h4>Aliaser for metodestier</h4><p class=\"note-s\">Bruk metodestiene som vises ovenfor.</p><h4>Tilknyttede anroper-ID-er</h4><p class=\"note-s\"><a href=\"#m=minimax%2Fhailuo-3&amp;route=Ultra&amp;caller=minimax%2Fhailuo-3&amp;fmt=videos\"><code>minimax/hailuo-3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "minimax/hailuo-3",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "minimax/hailuo-3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|minimax%2Fhailuo-3",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De viste satsene anslår kostnaden før generering. Det endelige beløpet beregnes ut fra kostnaden som er registrert for den opprinnelige genereringen. Målt varighet på utdataene og anslåtte mengder er ikke den endelige fakturerbare mengden.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Behold alle faktiske utdata du eier, og de returnerte målte metadataene.",
            "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": "Videotilgang er utilgjengelig, eller denne video-ID-en ble ikke funnet.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller videotilgangen. For en eksisterende video bruker du den opprinnelige offentlige ID-en og samme API-nøkkel.",
                "type": "not_found_error"
              },
              {
                "condition": "API-nøkkelen samsvarer ikke med den autentiserte kontoen.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller API-nøkkelen din og kontotilgangen før innsending.",
                "type": "authentication_error"
              },
              {
                "condition": "Forespørselen kunne ikke leses, eller nedlastingsindeksen er ugyldig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Korriger forespørselskroppen. Ved nedlasting velger du en utdataindeks som ble returnert av den opprinnelige oppgaven.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den valgte videokonfigurasjonen kan ikke prises.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Velg en støttet videokonfigurasjon og fyll ut de påkrevde alternativene før du sender en korrigert forespørsel.",
                "type": "price_unavailable"
              },
              {
                "condition": "Videoinndata eller den opprinnelige fortsettelsesoppgaven er ugyldig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Bruk gyldige HTTPS-inndata. Ved fortsettelse bruker du den ferdigstilte originalens offentlige video-ID med samme API-nøkkel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den tilgjengelige saldoen eller grensene tillater ikke en reservasjon.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller tilgjengelig saldo og grenser før du sender en ny forespørsel.",
                "type": "billing_error"
              },
              {
                "condition": "Videokontroll, lagring eller tjenestetilgang er midlertidig utilgjengelig.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Vent til tjenesten er tilgjengelig. Hvis du allerede har en video-ID, kontroller den opprinnelige oppgaven fremfor å opprette en ny generering.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Det opprinnelige videoresultatet og belastningen må kontrolleres.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Behold den returnerte video-ID-en og kontroller den oppgaven. Ikke send en erstatningsforespørsel om generering mens den kontrolleres.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Nedlasting av den eksisterende videoen er midlertidig utilgjengelig.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Kontroller den samme videooppgaven senere og last ned de eksisterende utdataene. En ny generering oppretter en separat operasjon.",
                "type": "server_error"
              },
              {
                "condition": "Videoinnholdet er ikke publisert.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller den opprinnelige oppgavestatusen. Last ned etter at den rapporterer completed; hvis den rapporterer failed, følg varselet om kontroll av belastningen.",
                "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 + opprinnelig id + X-Should-Retry:false; gjenta aldri den opprinnelige sendingen"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "minimax/hailuo-3"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Oppgi prompt som tekst og duration som hele sekunder. Velg en støttet oppløsning og ved behov et sideforhold.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "En skriftlig ledetekst."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "minimax/hailuo-3"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images er en matrise. Hvert bildeobjekt har type, image_url og frame_type; image_url inneholder url. Sett type til image_url. Bruk first_frame med en valgfri last_frame. Hver bilderolle forekommer høyst én gang. Oppgi en offentlig tilgjengelig HTTPS-basert URL til bildet for hvert enkeltbilde. Bruk enkeltbilder eller bildereferanser i én forespørsel; ikke kombiner begge. Velg en støttet oppløsning og ved behov et sideforhold.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "En skriftlig ledetekst og et bilde for første enkeltbilde."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "minimax/hailuo-3"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references er en matrise med objekter. Sett type til image_url, video_url, audio_url, og bruk det tilsvarende feltet som inneholder url. Bruk offentlig tilgjengelige HTTPS-adresser. Utelat frame_images for å velge referansemodus. Anslaget inkluderer den viste komponenten per bilde bare for referansebilder etter de første fem. Endelig belastning følger den faktisk fakturerte konfigurasjonen. Ikke kombiner bildereferanser med enkeltbilder. Velg en støttet oppløsning og ved behov et sideforhold.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "En skriftlig ledetekst og støttede bilde-, video- og lydreferanser."
              }
            ],
            "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": "Nullbasert posisjon for denne videoen i utdatalisten.",
                  "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": "Signert HTTPS-basert URL for nedlasting av denne ferdigstilte videoen.",
                  "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-kontrollsum for den opprinnelige videoens byte; null hvis utilgjengelig.",
                  "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": "Størrelsen på den opprinnelige videofilen i byte; null hvis utilgjengelig.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Målt videovarighet i millisekunder; null hvis utilgjengelig.",
                  "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": "Videobredde i piksler; null hvis utilgjengelig.",
                  "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øyde i piksler; null hvis utilgjengelig.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identifikator for videokodeken; null hvis ikke registrert.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Om videoen inneholder et lydspor; null hvis ikke målt.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identifikator for lydkodeken; null når ingen identifikator er registrert.",
                  "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": "Signerte innholdsadresser for ressurser du eier",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "minimax/hailuo-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "minimax/hailuo-3"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    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": [
                  "2K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "2K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Disse nøklene beskriver hvert bildeobjekt; image_url inneholder bare url. Utelat frame_images ved en forespørsel som bare inneholder tekst.",
                "content": "Matrise med bildeobjekter. Hvert objekt har type=image_url, image_url som inneholder url, og frame_type. Bruk en HTTPS-basert URL til bildet, og sett frame_type til first_frame eller last_frame. Hver bilderolle forekommer høyst én gang.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": "minimax/hailuo-3"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "2K"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Frame images plus image references are rejected because mixed additive input count is unproved; pure frame or pure reference mode remains separately priced."
              ]
            },
            "unsupported": [
              "size",
              "seed",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.26",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.26",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference image"
            },
            "label": "reference image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_images",
                "label": "reference image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_images"
              }
            ]
          },
          {
            "basis": "Dette anslaget er verken en tilleggsavgift eller en fast sats for den fullførte genereringen.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Anslått genereringskostnad",
            "units": [
              {
                "amount": "1.3",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1.3",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"minimax/hailuo-3\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"2K\"}', 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",
          "video"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.26",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.26",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference image"
            },
            "label": "reference image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_images",
                "label": "reference image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_images"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "1.3",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1.3",
                "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": "minimax/hailuo-3",
        "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.26",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.26",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_images",
            "label": "reference image",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "per reference image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "reference_images"
          },
          {
            "amount": "1.3",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "1.3",
            "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": "minimax/hailuo-3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "7e90012c9dc4a6b6a8ea9e7978dae69c7b24429fa2981edc57a40ed0b0846d79",
    "input_html_sha256": "4fcc99902ccccacc9bcde4ecfaada33b5ca389d184b280ce33ae3f12d5aa8a9d",
    "private_audit_sha256": "6357b7c0341ad34ccc1cbfb6c6db28d86bd93a8d21440f0d40763105514d6c82",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nb/minimax-hailuo-3/",
    "description": "MiniMax H3 genererer korte videoer med innebygd stereolyd fra tekst, enkeltbilder eller multimodale referanser. Den støtter skaping fra første/siste bilde, referansestyrt redigering og sammenhenger for bevegelse eller stemme, med resultater på 4–15 sekunder og en egen arbeidsflyt for regenerering i 2K.",
    "locale": "nb",
    "md_url": "https://ailoot.ai/models/nb/minimax-hailuo-3/index.md",
    "title": "MiniMax: H3 — Ailoot",
    "url": "https://ailoot.ai/models/nb/minimax-hailuo-3/"
  },
  "rawModel": {
    "about": "Ett audiovisuelt resultat fra en multimodal beskrivelse\n\nMiniMax H3 er MiniMax’ omnimodale videosystem. Det tolker tekst, bilder, video og lyd samlet og genererer deretter video med innebygd stereolyd. Produsenten presenterer det for korte kreative arbeider som produktvisualiseringer, reklame, animerte plakater og konsepter for filmtitler, der forholdene mellom referansematerialene er like viktige som scenebeskrivelsen.\n\nDet dokumenterte systemet produserer videoer på 4–15 sekunder ved 24 bilder per sekund med 32 kHz stereolyd. H3-Base genererer i 768p; den fullstendige 2K-arbeidsflyten regenererer resultatet ved hjelp av den opprinnelige multimodale konteksten. Dette er mer enn en vanlig størrelsesendring: det andre trinnet bruker modellen og kildekonteksten på nytt for å gjenskape fine detaljer. H3 Max og H3-Context-IR har egne roller og grenser.\n\nSkaping fra tekst og enkeltbilder\n\nInndata med bare tekst beskriver hele den audiovisuelle tidslinjen. Et første bilde forankrer åpningen, et siste bilde forankrer avslutningen, og to bilder kan definere begge. For et opptak fra første bilde begynner du med komposisjonen og identiteten som er synlig i stillbildet, og beskriver deretter handlingen som utvikler seg fra dette. For en overgang fra første til siste bilde beskriver du den observerbare bevegelsen som forbinder de to tilstandene, i stedet for å gjenta to urelaterte bildebeskrivelser.\n\nEn praktisk produktbeskrivelse kan angi en lukket pakke i åpningsbildet, hånden som åpner den, kameraets rolige bevegelse og sluttilstanden som skal nås. Bevar objektets form, etikettplassering og lyssetting i de innsendte bildene. Skaping fra enkeltbilder og referansestyrt skaping er separate inndatamoduser; produsentens grensesnitt blander ikke roller som første/siste bilde med roller som referansemedium i én forespørsel.\n\nReferansestyrt generering og redigering\n\nReferansemodusen tar imot tekst sammen med bilder, videoklipp og lydklipp. Angi hva hver kilde bidrar med: en karakters utseende, en lokasjon, kamerabevegelse, den tidsmessige strukturen i et kildeklipp eller en stemme. En video som bare brukes for kamerabevegelse, er noe annet enn en video som faktisk skal redigeres eller videreføres. Beskriv dette forholdet uttrykkelig.\n\nProdusentens referanseveiledning skiller mellom motivdefinisjoner, et oppgavesammendrag, en analyse av hva som skal beholdes, en detaljert opptaksbeskrivelse, det samlede lydbildet og bakgrunnsmusikk som bare publikum hører. Den skiller mellom å bevare synlig innhold, å overføre egenskaper og å bruke en bred stilreferanse. For lyd er kopiering av et signal noe annet enn å referere til klang, rytme eller fremføring. Hold disse rollene stabile gjennom hele beskrivelsen.\n\nFor en referansestyrt scene sender du inn et karakterbilde, en kort referanse for kamerabevegelse og en lydreferanse for stemme, og beskriver deretter hvor hver av dem skal påvirke målopptaket. Angi hvilke kles-, miljø- eller objektdetaljer som må forbli gjenkjennelige. Sammenlign det ferdige klippet med disse kravene, inkludert bevegelseskontinuitet og forholdet mellom den synlige taleren og stemmen som høres.\n\nTale, lyd og opptakstiming\n\nH3 modellerer dialog, fysiske lyder, atmosfære og musikk samlet. Modellkortet dokumenterer stabil dialogstøtte for arabisk, kinesisk, engelsk, fransk, tysk, italiensk, japansk, koreansk, portugisisk, russisk og spansk; andre språk beskrives som varierende støttet. Oppgi de nøyaktige replikkene og språket, med en stabil taleridentitet på tvers av opptak.\n\nProdusentens veiledninger for promptskriving bruker engelsk i beskrivende avsnitt, mens dialog og synlig tekst bevares på originalspråket. Taleinnhold bruker `<d>[Language] ...</d>`, med taleridentitet og stemmebeskrivelse utenfor blokken. Skill mellom tale i scenen og fortellerstemme utenfor bildet, og angi når en replikk fortsetter over et klipp eller avbrytes av avslutningen. Bevar også synlig tekst nøyaktig. Tilpass talemengden til den valgte lengden, og kontroller den gjengitte teksten og den hørbare replikken samlet.\n\nBeskriv kamerabevegelse som en handling, inkludert rekkevidde og hastighet når det har betydning. Nummerer opptakene i avspillingsrekkefølge, og hold klippetidspunktene innenfor videolengden. Skill mellom scenelyder som fottrinn eller en dør som lukkes, og bakgrunnsmusikk som bare publikum hører. Disse valgene gjør en kort opptaksplan enklere å tolke og enklere å vurdere opp mot resultatet.\n\nKlargjøring av inndata og tallfestede grenser\n\nDet nåværende genereringsskjemaet krever tekst som ikke er tom i alle moduser, med opptil 7 000 tegn per tekstelement. Bilder kan være JPG, JPEG, PNG, WebP, HEIC eller HEIF, opptil 30 MB hver, med hver side fra 256 til 5 760 piksler og sideforhold fra 0.4 til 2.5. Bildeinndata tillater ett åpningsbilde og ett sluttbilde; referansemodus tillater opptil ni referansebilder.\n\nReferansevideo kan inneholde opptil tre MP4- eller MOV-klipp, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Et klipp kan være opptil 50 MB; videokodeken er H.264 eller H.265, med AAC- eller MP3-lyd, sider fra 256 til 5 760 piksler, sideforhold fra 0.4 til 2.5 og bildefrekvens fra 23.976 til 60. Referanselyd støtter opptil tre WAV- eller MP3-klipp, opptil 15 MB hver, hvert på 2–15 sekunder og samlet høyst 15 sekunder. Modellkortet begrenser blandede referanseinndata til 12 filer. Den dokumenterte grensen for forespørselskroppen er 64 MB, atskilt fra grensene per fil.\n\nVelg bare referanser som bidrar til beskrivelsen, og gjør hvert bidrag uttrykkelig. En tydelig visning av motivet er mer nyttig enn flere motstridende visninger uten forklaring. Bevar referanserekkefølgen, beskjær bort irrelevant materiale uten å fjerne nødvendig scenekontekst, og kontroller at korte kildeklipp inneholder handlingen eller stemmeegenskapen du ber om.\n\nUtdataformat og det komplette systemet\n\nProdusentens H3-grensesnitt tilbyr 768P og 2K. Generering med bare tekst krever et konkret sideforhold: 21:9, 16:9, 4:3, 1:1, 3:4 eller 9:16. Skaping fra første/siste bilde får sideforholdet fra inngangsbildet; referansebasert skaping kan bruke et tilpasset eller uttrykkelig angitt sideforhold. Utdataenes heltallige lengde er 4–15 sekunder.\n\nModellkortet skiller mellom H3-Context-IR, som tolker og beriker beskrivelsen, H3-Base, som genererer audiovisuelt innhold, og H3-Regenerate-2K, som skaper resultatet med høyere oppløsning. De utgitte grunnmodellvektene skiller mellom oppgaver styrt av enkeltbilder og omnimodale referanser. Kontekst- og regenereringskomponentene er atskilt fra disse grunnvektene, så navnet på en åpen modellvekt alene fastslår ikke hvordan hele systemet oppfører seg.\n\nProdusentens genereringsarbeidsflyt er asynkron. Grensesnittet for oppgavesøk henter oppgaver fra de siste sju dagene. Behold oppgaveidentiteten til det faktiske videoresultatet returneres, og lagre deretter klippet i stedet for bare å beholde en tidsbegrenset nedlastingsadresse. Vurder visuell identitet, liten tekst, samspill mellom objekter, taleinnhold og lydtiming i den tiltenkte visningsstørrelsen. Produsenten oppgir multimodal forståelse og fine visuelle detaljer som områder for videre forbedring; en detaljert beskrivelse og sammenligning med kildene er fortsatt sentralt for et nyttig resultat.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "available": null,
    "canonical_model": "minimax/hailuo-3",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1.3",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "1.3",
            "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": "Fullstendige priser for konfigurasjonen finnes i detaljene."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "ffcc346d33bca9e66b22f181",
        "label": "Prisreferanser for videokonfigurasjoner",
        "profiles": [
          {
            "basis": "Publisert prisreferanse for den viste konfigurasjonen. Endelige belastninger følger konfigurasjonen som faktisk faktureres.",
            "dimensions": {
              "conditions": "Ingen ytterligere betingelse er angitt i denne prisnøkkelen."
            },
            "label": "Videopris",
            "units": [
              {
                "amount": "0.26",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "De første fem referansebildene er gratis; den oppførte satsen per bilde gjelder etter de første fem. Publisert prisreferanse for den viste konfigurasjonen. Endelige belastninger følger den faktisk fakturerte konfigurasjonen.",
            "dimensions": {
              "conditions": "Ingen ytterligere betingelse er angitt i denne prisnøkkelen."
            },
            "label": "Referansebilder etter de første fem",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "key": "input_image",
                "label": "Reference images after the first five",
                "public_unit_label": "per image",
                "quantity": 1,
                "rate_role": "typed_video_image_reference",
                "side": "in",
                "unit": "image"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "minimax/hailuo-3",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De viste satsene anslår kostnaden før generering. Det endelige beløpet beregnes ut fra kostnaden som er registrert for den opprinnelige genereringen. Målt varighet på utdataene og anslåtte mengder er ikke den endelige fakturerbare mengden.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Behold alle faktiske utdata du eier, og de returnerte målte metadataene.",
            "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": "Videotilgang er utilgjengelig, eller denne video-ID-en ble ikke funnet.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller videotilgangen. For en eksisterende video bruker du den opprinnelige offentlige ID-en og samme API-nøkkel.",
                "type": "not_found_error"
              },
              {
                "condition": "API-nøkkelen samsvarer ikke med den autentiserte kontoen.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller API-nøkkelen din og kontotilgangen før innsending.",
                "type": "authentication_error"
              },
              {
                "condition": "Forespørselen kunne ikke leses, eller nedlastingsindeksen er ugyldig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Korriger forespørselskroppen. Ved nedlasting velger du en utdataindeks som ble returnert av den opprinnelige oppgaven.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den valgte videokonfigurasjonen kan ikke prises.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Velg en støttet videokonfigurasjon og fyll ut de påkrevde alternativene før du sender en korrigert forespørsel.",
                "type": "price_unavailable"
              },
              {
                "condition": "Videoinndata eller den opprinnelige fortsettelsesoppgaven er ugyldig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Bruk gyldige HTTPS-inndata. Ved fortsettelse bruker du den ferdigstilte originalens offentlige video-ID med samme API-nøkkel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Den tilgjengelige saldoen eller grensene tillater ikke en reservasjon.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller tilgjengelig saldo og grenser før du sender en ny forespørsel.",
                "type": "billing_error"
              },
              {
                "condition": "Videokontroll, lagring eller tjenestetilgang er midlertidig utilgjengelig.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Vent til tjenesten er tilgjengelig. Hvis du allerede har en video-ID, kontroller den opprinnelige oppgaven fremfor å opprette en ny generering.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Det opprinnelige videoresultatet og belastningen må kontrolleres.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Behold den returnerte video-ID-en og kontroller den oppgaven. Ikke send en erstatningsforespørsel om generering mens den kontrolleres.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Nedlasting av den eksisterende videoen er midlertidig utilgjengelig.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Kontroller den samme videooppgaven senere og last ned de eksisterende utdataene. En ny generering oppretter en separat operasjon.",
                "type": "server_error"
              },
              {
                "condition": "Videoinnholdet er ikke publisert.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Kontroller den opprinnelige oppgavestatusen. Last ned etter at den rapporterer completed; hvis den rapporterer failed, følg varselet om kontroll av belastningen.",
                "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 + opprinnelig id + X-Should-Retry:false; gjenta aldri den opprinnelige sendingen"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "minimax/hailuo-3"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Oppgi prompt som tekst og duration som hele sekunder. Velg en støttet oppløsning og ved behov et sideforhold.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "En skriftlig ledetekst."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "minimax/hailuo-3"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images er en matrise. Hvert bildeobjekt har type, image_url og frame_type; image_url inneholder url. Sett type til image_url. Bruk first_frame med en valgfri last_frame. Hver bilderolle forekommer høyst én gang. Oppgi en offentlig tilgjengelig HTTPS-basert URL til bildet for hvert enkeltbilde. Bruk enkeltbilder eller bildereferanser i én forespørsel; ikke kombiner begge. Velg en støttet oppløsning og ved behov et sideforhold.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "En skriftlig ledetekst og et bilde for første enkeltbilde."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "minimax/hailuo-3"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references er en matrise med objekter. Sett type til image_url, video_url, audio_url, og bruk det tilsvarende feltet som inneholder url. Bruk offentlig tilgjengelige HTTPS-adresser. Utelat frame_images for å velge referansemodus. Anslaget inkluderer den viste komponenten per bilde bare for referansebilder etter de første fem. Endelig belastning følger den faktisk fakturerte konfigurasjonen. Ikke kombiner bildereferanser med enkeltbilder. Velg en støttet oppløsning og ved behov et sideforhold.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "En skriftlig ledetekst og støttede bilde-, video- og lydreferanser."
              }
            ],
            "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": "Nullbasert posisjon for denne videoen i utdatalisten.",
                  "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": "Signert HTTPS-basert URL for nedlasting av denne ferdigstilte videoen.",
                  "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-kontrollsum for den opprinnelige videoens byte; null hvis utilgjengelig.",
                  "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": "Størrelsen på den opprinnelige videofilen i byte; null hvis utilgjengelig.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Målt videovarighet i millisekunder; null hvis utilgjengelig.",
                  "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": "Videobredde i piksler; null hvis utilgjengelig.",
                  "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øyde i piksler; null hvis utilgjengelig.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identifikator for videokodeken; null hvis ikke registrert.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Om videoen inneholder et lydspor; null hvis ikke målt.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identifikator for lydkodeken; null når ingen identifikator er registrert.",
                  "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": "Signerte innholdsadresser for ressurser du eier",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "minimax/hailuo-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "minimax/hailuo-3"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    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": [
                  "2K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "2K"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "21:9",
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Disse nøklene beskriver hvert bildeobjekt; image_url inneholder bare url. Utelat frame_images ved en forespørsel som bare inneholder tekst.",
                "content": "Matrise med bildeobjekter. Hvert objekt har type=image_url, image_url som inneholder url, og frame_type. Bruk en HTTPS-basert URL til bildet, og sett frame_type til first_frame eller last_frame. Hver bilderolle forekommer høyst én gang.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 2,
                "max_items": 2,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame",
                          "last_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 2,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "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": {
                          "type": {
                            "const": "video_url"
                          },
                          "video_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"
                          }
                        },
                        "required": [
                          "type",
                          "video_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": "minimax/hailuo-3"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "2K"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Frame images plus image references are rejected because mixed additive input count is unproved; pure frame or pure reference mode remains separately priced."
              ]
            },
            "unsupported": [
              "size",
              "seed",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "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"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.26",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.26",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference image"
            },
            "label": "reference image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_images",
                "label": "reference image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_images"
              }
            ]
          },
          {
            "basis": "Dette anslaget er verken en tilleggsavgift eller en fast sats for den fullførte genereringen.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Anslått genereringskostnad",
            "units": [
              {
                "amount": "1.3",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1.3",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"minimax/hailuo-3\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"2K\"}', 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",
          "video"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.26",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.26",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per reference image"
            },
            "label": "reference image",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "reference_images",
                "label": "reference image",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "per reference image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "reference_images"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "1.3",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "1.3",
                "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": "minimax/hailuo-3",
        "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.26",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.26",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "reference_images",
            "label": "reference image",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "per reference image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "reference_images"
          },
          {
            "amount": "1.3",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "1.3",
            "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": "minimax/hailuo-3",
        "request_model_id": "minimax/hailuo-3",
        "route_label": "Ultra"
      }
    ],
    "name": "MiniMax: H3",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 1.3,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 1.3,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "input_materials_additive": true,
          "resolution": "768P"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.16",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "input_materials_additive": true,
              "resolution": "768P"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "input_materials_additive": true,
          "resolution": "2K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.26",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "input_materials_additive": true,
              "resolution": "2K"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "adds_to_output": true,
          "output_resolution": "768P"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.16",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "adds_to_output": true,
              "output_resolution": "768P"
            },
            "key": "input_video",
            "label": "input video",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "adds_to_output": true,
          "output_resolution": "2K"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.26",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "adds_to_output": true,
              "output_resolution": "2K"
            },
            "key": "input_video",
            "label": "input video",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "adds_to_output": true,
          "first_free_reference_images": 5,
          "only_additional_images_charged": true,
          "reference_audio_free": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_input_image",
            "conditions": {
              "adds_to_output": true,
              "first_free_reference_images": 5,
              "only_additional_images_charged": true,
              "reference_audio_free": true
            },
            "key": "input_image",
            "label": "input image",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.26",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "output second",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.26",
            "key": "duration_seconds",
            "label": "output second",
            "native_amount_usd_per_unit": "0.26",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "reference image",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.08",
            "key": "reference_images",
            "label": "reference image",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "quantity": 1,
            "side": "in",
            "unit": "reference_image"
          }
        ]
      }
    ],
    "public_id": "minimax/hailuo-3",
    "short": "MiniMax H3 genererer korte videoer med innebygd stereolyd fra tekst, enkeltbilder eller multimodale referanser. Den støtter skaping fra første/siste bilde, referansestyrt redigering og sammenhenger for bevegelse eller stemme, med resultater på 4–15 sekunder og en egen arbeidsflyt for regenerering i 2K."
  },
  "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": "MiniMax H3 genererer korte videoer med innebygd stereolyd fra tekst, enkeltbilder eller multimodale referanser. Den støtter skaping fra første/siste bilde, referansestyrt redigering og sammenhenger for bevegelse eller stemme, med resultater på 4–15 sekunder og en egen arbeidsflyt for regenerering i 2K.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "4502cbf18d2b0e999114ea259cf7205403b40d6ba3b1cb9ca22c649aeb37f1f5",
    "renderer_sha256": "c8cb5a92c10b47373d294dee7465d66796cd4710c6626fd81459dc0625fc6d26"
  },
  "sourceRevision": "bd4421eb6e1ede6a5992cc2c917fcb31b5b7fd14c1c6d02ba82b9c27ec62f72f"
}
