{
  "aboutHtml": "<p>Avatar IV är HeyGens avatarmotor för att omvandla en stillbild till en uttrycksfull talvideo. Dess diffusionsinspirerade utformning från ljud till uttryck använder röstton, rytm och känsla för att styra ansiktsrörelse, huvudlutningar, pauser och mikrouttryck. Syftet är en presentatör eller karaktär som framför talat innehåll med läppsynkronisering och gester, snarare än en allmän scengenerator som skapar en hel miljö och ett ljudspår från en filmisk prompt.</p><p>Tillverkaren beskriver stöd för verklighetstrogna och stiliserade karaktärer, inklusive vinklade bilder eller profilbilder, ansikten i animestil och husdjur. Fotobaserade karaktärer fungerar bäst när ögon, mun och ansiktsstruktur är lätta att identifiera. HeyGen rekommenderar en tydlig, välbelyst bild med naturlig hållning och synliga händer när gester är viktiga. Ett mycket litet ansikte, dolda läppar, kraftiga masker, en framträdande näbb eller starkt överdrivna proportioner kan försvaga ansiktsrörelse och läppsynkronisering. Håll källans bildutsnitt lämpat för avsett framförande.</p><p>Producenten erbjuder två vägar för talindata. Ett skrivet manus paras med en vald röst; ett förinspelat ljudspår tillhandahåller rösten och timingen direkt. Använd vägen för inspelat ljud när framförandet redan är fastställt och manusvägen när talet behöver syntetiseras. Indata är alternativ i det dokumenterade gränssnittet. Förbered slutlig ordalydelse, namn och uttal före animation och spara ljud eller manus tillsammans med returnerad video så att det talade resultatet kan kontrolleras.</p><p>HeyGens Avatar IV-modellprofil omfattar studioavatarer, Digital Twins, Photo Avatars, direkta bilder och promptskapade motiv. En återanvändbar Photo Avatar ger ett stabilt motiv för senare videor, medan ett arbetsflöde med direkt bild börjar från den angivna bilden. Producentens Photo Avatar-profil erbjuder rörelseinstruktioner i fri text och uttrycksfullhetsvalen high, medium eller low, med low som standard. Behåll valt avatarutseende och motor när en serie skapas så att en ändrad källbild eller renderingsmodell inte blir en obemärkt ändring av presentatören.</p><p>Beskriv en synlig kroppshandling och dess känslomässiga kvalitet för rörelseregi. ”Nickar varsamt med ett varmt leende” ger en gest och ett uttryck; en kort hälsning kan använda en vänlig vinkning. Tillverkaren rekommenderar en huvudgest, valfritt tillsammans med ett ansiktsuttryck, och högst två korta satser för en sekvens. Avatar IV hanterar tempot utifrån framförandet, så Studio-guiden kräver inget gestschema sekund för sekund. Specifik, kortfattad ordalydelse är lättare att granska än flera konkurrerande handlingar i en prompt.</p><p>Producentens ljud-till-video-profil renderar upp till trettio minuters angivet ljud per begäran och uppladdade MP3- eller WAV-resurser har en gräns på 32 MB. Dela materialet vid sammanhängande talgränser för en längre lektion eller inspelning och behåll originalordningen. Slutvideons talade timing ska följa valt ljud snarare än en orelaterad uppskattning av klipplängd.</p><p>De dokumenterade utdatainställningarna från producenten omfattar 720p eller 1080p och formerna 16:9, 9:16, 4:5, 5:4 eller 1:1, med ett automatiskt alternativ som följer källans proportioner. Cover-anpassning kan beskära motivet; contain passar in hela motivet och kan lämna omgivande bakgrund synlig. Arbetsflödet för ljud-till-video returnerar MP4 som standard. För videoavatarer kräver transparenta WebM-utdata stöd för friläggning, och producenten tillämpar bakgrundsborttagning för dessa utdata i stället för att kombinera dem med en ny bakgrund. Granska faktiskt bildutsnitt och fil innan presentatören placeras i en större komposition.</p><p>En utbildningsintroduktion kan använda en tydlig presentatörsbild, en kortfattad förklaring och en återhållsam gest vid nyckelinstruktionen. En produktförklaring kan behålla samma avatarutseende medan talmanuset ändras för olika funktioner. Producenten dokumenterar också valfria undertextfiler och inbrända undertexter; granska ordalydelse och timing tillsammans med talet. Renderingen är asynkron i tillverkargränssnittet, så ett skapandesvar och den färdiga videon är olika leveranser. Spara den färdiga inspelningen och dess slutförandestatus med uppgiftens resultat.</p><p>Avatar IV hålls separat från Avatar V:s referensstyrda rörelse och dess separata Studio-förinställningskontroller. Den skiljer sig också från HeyGen Videos generella scengenerering och från ett interaktivt live-avatarsamtal. Granska renderad munrörelse, synliga händer, ansiktsuttryck, pauser och talad ordalydelse mot källmaterial och avsedd ton. Bild, pose, ljussättning och rörelseinstruktioner påverkar resultatet; en fotobaserad animation ska kontrolleras som ett genererat framförande, med valda indata sparade för senare revideringar.</p>",
  "aboutText": "Avatar IV är HeyGens avatarmotor för att omvandla en stillbild till en uttrycksfull talvideo. Dess diffusionsinspirerade utformning från ljud till uttryck använder röstton, rytm och känsla för att styra ansiktsrörelse, huvudlutningar, pauser och mikrouttryck. Syftet är en presentatör eller karaktär som framför talat innehåll med läppsynkronisering och gester, snarare än en allmän scengenerator som skapar en hel miljö och ett ljudspår från en filmisk prompt.\n\nTillverkaren beskriver stöd för verklighetstrogna och stiliserade karaktärer, inklusive vinklade bilder eller profilbilder, ansikten i animestil och husdjur. Fotobaserade karaktärer fungerar bäst när ögon, mun och ansiktsstruktur är lätta att identifiera. HeyGen rekommenderar en tydlig, välbelyst bild med naturlig hållning och synliga händer när gester är viktiga. Ett mycket litet ansikte, dolda läppar, kraftiga masker, en framträdande näbb eller starkt överdrivna proportioner kan försvaga ansiktsrörelse och läppsynkronisering. Håll källans bildutsnitt lämpat för avsett framförande.\n\nProducenten erbjuder två vägar för talindata. Ett skrivet manus paras med en vald röst; ett förinspelat ljudspår tillhandahåller rösten och timingen direkt. Använd vägen för inspelat ljud när framförandet redan är fastställt och manusvägen när talet behöver syntetiseras. Indata är alternativ i det dokumenterade gränssnittet. Förbered slutlig ordalydelse, namn och uttal före animation och spara ljud eller manus tillsammans med returnerad video så att det talade resultatet kan kontrolleras.\n\nHeyGens Avatar IV-modellprofil omfattar studioavatarer, Digital Twins, Photo Avatars, direkta bilder och promptskapade motiv. En återanvändbar Photo Avatar ger ett stabilt motiv för senare videor, medan ett arbetsflöde med direkt bild börjar från den angivna bilden. Producentens Photo Avatar-profil erbjuder rörelseinstruktioner i fri text och uttrycksfullhetsvalen high, medium eller low, med low som standard. Behåll valt avatarutseende och motor när en serie skapas så att en ändrad källbild eller renderingsmodell inte blir en obemärkt ändring av presentatören.\n\nBeskriv en synlig kroppshandling och dess känslomässiga kvalitet för rörelseregi. ”Nickar varsamt med ett varmt leende” ger en gest och ett uttryck; en kort hälsning kan använda en vänlig vinkning. Tillverkaren rekommenderar en huvudgest, valfritt tillsammans med ett ansiktsuttryck, och högst två korta satser för en sekvens. Avatar IV hanterar tempot utifrån framförandet, så Studio-guiden kräver inget gestschema sekund för sekund. Specifik, kortfattad ordalydelse är lättare att granska än flera konkurrerande handlingar i en prompt.\n\nProducentens ljud-till-video-profil renderar upp till trettio minuters angivet ljud per begäran och uppladdade MP3- eller WAV-resurser har en gräns på 32 MB. Dela materialet vid sammanhängande talgränser för en längre lektion eller inspelning och behåll originalordningen. Slutvideons talade timing ska följa valt ljud snarare än en orelaterad uppskattning av klipplängd.\n\nDe dokumenterade utdatainställningarna från producenten omfattar 720p eller 1080p och formerna 16:9, 9:16, 4:5, 5:4 eller 1:1, med ett automatiskt alternativ som följer källans proportioner. Cover-anpassning kan beskära motivet; contain passar in hela motivet och kan lämna omgivande bakgrund synlig. Arbetsflödet för ljud-till-video returnerar MP4 som standard. För videoavatarer kräver transparenta WebM-utdata stöd för friläggning, och producenten tillämpar bakgrundsborttagning för dessa utdata i stället för att kombinera dem med en ny bakgrund. Granska faktiskt bildutsnitt och fil innan presentatören placeras i en större komposition.\n\nEn utbildningsintroduktion kan använda en tydlig presentatörsbild, en kortfattad förklaring och en återhållsam gest vid nyckelinstruktionen. En produktförklaring kan behålla samma avatarutseende medan talmanuset ändras för olika funktioner. Producenten dokumenterar också valfria undertextfiler och inbrända undertexter; granska ordalydelse och timing tillsammans med talet. Renderingen är asynkron i tillverkargränssnittet, så ett skapandesvar och den färdiga videon är olika leveranser. Spara den färdiga inspelningen och dess slutförandestatus med uppgiftens resultat.\n\nAvatar IV hålls separat från Avatar V:s referensstyrda rörelse och dess separata Studio-förinställningskontroller. Den skiljer sig också från HeyGen Videos generella scengenerering och från ett interaktivt live-avatarsamtal. Granska renderad munrörelse, synliga händer, ansiktsuttryck, pauser och talad ordalydelse mot källmaterial och avsedd ton. Bild, pose, ljussättning och rörelseinstruktioner påverkar resultatet; en fotobaserad animation ska kontrolleras som ett genererat framförande, med valda indata sparade för senare revideringar.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "3d1e8e26532f68085cea966d19972daf6dbd7ad9c2b278c80f320ba0cca58abc",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sv",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">HeyGen: Avatar IV</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Stäng\">×</button></div><div class=\"idline\"><span>HeyGen /</span><code>heygen/avatar-iv</code><button type=\"button\" id=\"copy-id\">Kopiera ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modellkortets avsnitt\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Indata &amp; metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Exempel</button><button type=\"button\" data-card-jump=\"results\">Resultat</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|heygen%2Favatar-iv\">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\">Avatar IV animerar ett foto till en läppsynkroniserad talvideo med ansiktsuttryck och gesttiming styrda av rösten. HeyGen dokumenterar arbetsflöden med manus eller inspelat ljud och rörelsekontroller för Photo Avatar för verklighetstrogna eller stiliserade presentatörer.</p><dl class=\"card-io\" data-card-io><div><dt>Godkända indata</dt><dd>Text · Bilder · Ljud · Video</dd></div><div><dt>Resultat</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.</p><div class=\"mabout\" id=\"m-about\"><p>Avatar IV är HeyGens avatarmotor för att omvandla en stillbild till en uttrycksfull talvideo. Dess diffusionsinspirerade utformning från ljud till uttryck använder röstton, rytm och känsla för att styra ansiktsrörelse, huvudlutningar, pauser och mikrouttryck. Syftet är en presentatör eller karaktär som framför talat innehåll med läppsynkronisering och gester, snarare än en allmän scengenerator som skapar en hel miljö och ett ljudspår från en filmisk prompt.</p><p>Tillverkaren beskriver stöd för verklighetstrogna och stiliserade karaktärer, inklusive vinklade bilder eller profilbilder, ansikten i animestil och husdjur. Fotobaserade karaktärer fungerar bäst när ögon, mun och ansiktsstruktur är lätta att identifiera. HeyGen rekommenderar en tydlig, välbelyst bild med naturlig hållning och synliga händer när gester är viktiga. Ett mycket litet ansikte, dolda läppar, kraftiga masker, en framträdande näbb eller starkt överdrivna proportioner kan försvaga ansiktsrörelse och läppsynkronisering. Håll källans bildutsnitt lämpat för avsett framförande.</p><p>Producenten erbjuder två vägar för talindata. Ett skrivet manus paras med en vald röst; ett förinspelat ljudspår tillhandahåller rösten och timingen direkt. Använd vägen för inspelat ljud när framförandet redan är fastställt och manusvägen när talet behöver syntetiseras. Indata är alternativ i det dokumenterade gränssnittet. Förbered slutlig ordalydelse, namn och uttal före animation och spara ljud eller manus tillsammans med returnerad video så att det talade resultatet kan kontrolleras.</p><p>HeyGens Avatar IV-modellprofil omfattar studioavatarer, Digital Twins, Photo Avatars, direkta bilder och promptskapade motiv. En återanvändbar Photo Avatar ger ett stabilt motiv för senare videor, medan ett arbetsflöde med direkt bild börjar från den angivna bilden. Producentens Photo Avatar-profil erbjuder rörelseinstruktioner i fri text och uttrycksfullhetsvalen high, medium eller low, med low som standard. Behåll valt avatarutseende och motor när en serie skapas så att en ändrad källbild eller renderingsmodell inte blir en obemärkt ändring av presentatören.</p><p>Beskriv en synlig kroppshandling och dess känslomässiga kvalitet för rörelseregi. ”Nickar varsamt med ett varmt leende” ger en gest och ett uttryck; en kort hälsning kan använda en vänlig vinkning. Tillverkaren rekommenderar en huvudgest, valfritt tillsammans med ett ansiktsuttryck, och högst två korta satser för en sekvens. Avatar IV hanterar tempot utifrån framförandet, så Studio-guiden kräver inget gestschema sekund för sekund. Specifik, kortfattad ordalydelse är lättare att granska än flera konkurrerande handlingar i en prompt.</p><p>Producentens ljud-till-video-profil renderar upp till trettio minuters angivet ljud per begäran och uppladdade MP3- eller WAV-resurser har en gräns på 32 MB. Dela materialet vid sammanhängande talgränser för en längre lektion eller inspelning och behåll originalordningen. Slutvideons talade timing ska följa valt ljud snarare än en orelaterad uppskattning av klipplängd.</p><p>De dokumenterade utdatainställningarna från producenten omfattar 720p eller 1080p och formerna 16:9, 9:16, 4:5, 5:4 eller 1:1, med ett automatiskt alternativ som följer källans proportioner. Cover-anpassning kan beskära motivet; contain passar in hela motivet och kan lämna omgivande bakgrund synlig. Arbetsflödet för ljud-till-video returnerar MP4 som standard. För videoavatarer kräver transparenta WebM-utdata stöd för friläggning, och producenten tillämpar bakgrundsborttagning för dessa utdata i stället för att kombinera dem med en ny bakgrund. Granska faktiskt bildutsnitt och fil innan presentatören placeras i en större komposition.</p><p>En utbildningsintroduktion kan använda en tydlig presentatörsbild, en kortfattad förklaring och en återhållsam gest vid nyckelinstruktionen. En produktförklaring kan behålla samma avatarutseende medan talmanuset ändras för olika funktioner. Producenten dokumenterar också valfria undertextfiler och inbrända undertexter; granska ordalydelse och timing tillsammans med talet. Renderingen är asynkron i tillverkargränssnittet, så ett skapandesvar och den färdiga videon är olika leveranser. Spara den färdiga inspelningen och dess slutförandestatus med uppgiftens resultat.</p><p>Avatar IV hålls separat från Avatar V:s referensstyrda rörelse och dess separata Studio-förinställningskontroller. Den skiljer sig också från HeyGen Videos generella scengenerering och från ett interaktivt live-avatarsamtal. Granska renderad munrörelse, synliga händer, ansiktsuttryck, pauser och talad ordalydelse mot källmaterial och avsedd ton. Bild, pose, ljussättning och rörelseinstruktioner påverkar resultatet; en fotobaserad animation ska kontrolleras som ett genererat framförande, med valda indata sparade för senare revideringar.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tillgängligt i Ailoot · indata &amp; metoder</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Videor</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Indatatyper</dt><dd><code>text</code>, <code>image</code>, <code>audio</code>, <code>video</code></dd></div><div><dt>Utdatatyper</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Fält</th><th>Typ</th><th>Krav</th><th>Värden &amp; gränser</th><th>Standard</th></tr></thead><tbody><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>heygen/avatar-iv</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span><div>Minsta antal objekt: 2</div><div>Maximalt antal objekt: 2</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valfritt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Metodparametrar och livscykel</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Avtal</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>model, input_references</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>text, image, audio, video</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_conditions</code></th><td data-cell-label=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>Använd faktiska innehållslänkar till färdiga medietillgångar som du äger, med deras returnerade signaturer: en videokälla för BFL eller en bildkälla och en ljudkälla för avatar. Källans belägg för ägare, typ och byte krävs., Ange exakt en PNG/JPEG-bild och en WAV/MP3-ljudtillgång. Ljudet är högst 32000000 byte, med en längd större än 0 och högst 1800 sekunder.</td></tr></tbody></table></div><p>Livscykel: <code>asynchronous_job_then_owned_outputs</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code> · faktiskt returnerat id eller polling_url</p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Priser</h3><div class=\"card-result-process\" data-billing-basis><h5>Så beräknas slutavgiften</h5><p class=\"note-s\">De visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.</p><dl data-price-conditions><dt>Snabbt läge</dt><dd>Ej angivet <span class=\"note-s\">När snabbt läge är valt</span></dd><dt>Flex-läge</dt><dd>Ej angivet <span class=\"note-s\">När läget flex är valt</span></dd><dt>Högsta resonemangsnivå</dt><dd>Ej angivet <span class=\"note-s\">När den högsta resonemangsnivån använder standardjusteringen (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Uppskattade priser för jämförelse</h4><h4>Priser efter konfiguration</h4><p class=\"note-s\">Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Prislista</th><th>Prognostiserad mängd</th><th>Debiteringsenhet</th><th>Debiteringsvillkor</th><th>Avgift</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Grundpriser för token</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>Grundpris</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>—</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>—</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Indata · Indatatoken · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Utdata · Utdatatoken · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Cacheläsning · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Skrivning till cache · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Skrivning till cache, 1 tim · Uppskattning endast för jämförelse</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopris</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per videosekund</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>Inget ytterligare villkor anges i denna prisnyckel.</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Videopris · Uppskattning endast för jämförelse</span> <b>$0.1</b> <span class=\"price-unit\">per videosekund</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Uppskattad genereringskostnad</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Prognostiserad mängd\"><span class=\"card-cell-label\">Prognostiserad mängd</span>uppskattning för en generering</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>—</td><td data-cell-label=\"Debiteringsvillkor\"><span class=\"card-cell-label\">Debiteringsvillkor</span>—</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Utdata · Uppskattad genereringskostnad · Uppskattning endast för jämförelse</span> <b>$0.1</b> <span class=\"price-unit\">uppskattning före generering</span></div><p class=\"note-s\">Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. <a href=\"/docs/sv/billing/reserve/\">Så fungerar reservation och slutreglering →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exempelbegäranden</h3><h4>Ailoot Ultra · Videor</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodvarianter\"><button class=\"cg-tab\" id=\"model-code-1711-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1711-panel-0\" aria-selected=\"true\" tabindex=\"0\">Använd faktiska indata och bevara hela resultatet</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiera kod\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1711-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1711-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_REFERENCES_JSON\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;heygen/avatar-iv&#39;, &#39;input_references&#39;: &#39;${ACTUAL_OWNED_INPUT_REFERENCES}&#39;}\nrequest[&#39;input_references&#39;]=json.loads(os.environ[&#39;AILOOT_INPUT_REFERENCES_JSON&#39;])\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),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 response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ta emot och spara resultat</h3><h4>Ailoot Ultra · Videor</h4><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li></ul><h5>Spara alla färdiga resurser</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodvarianter\"><button class=\"cg-tab\" id=\"model-code-1712-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1712-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET alla färdiga resurser</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiera kod\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1712-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1712-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}&quot;\nexport AILOOT_STATUS_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[&quot;AILOOT_STATUS_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose the actual completed status file&quot;)\nr=json.loads(f.read_text())\nif r.get(&quot;status&quot;)!=&quot;completed&quot; or not isinstance(r.get(&quot;data&quot;),list) or not r[&quot;data&quot;]:raise SystemExit(&quot;Wait for a completed status with asset paths&quot;)\nurls=[]\nfor x in r[&quot;data&quot;]:\n    if not isinstance(x,str) or &quot;\\n&quot; in x or &quot;\\r&quot; in x:raise SystemExit(&quot;Invalid asset path&quot;)\n    u=urljoin(&quot;https://api.ailoot.ai&quot;,x)\n    z=urlsplit(u)\n    if z.scheme!=&quot;https&quot; or z.netloc!=&quot;api.ailoot.ai&quot; or z.username or z.password:raise SystemExit(&quot;Use the actual Ailoot asset paths from status&quot;)\n    urls.append(u)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; \\\n    -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o &quot;video-${index}.mp4&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>Behåll alla färdiga resultat</h5><p class=\"note-s\">Spara varje färdig video eller returnerad fil; hämta varje faktiskt returnerad resurs-URL.</p><p class=\"note-s\">Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Om det ursprungliga svaret behöver kontrolleras</h5><p class=\"note-s\">Behåll X-Client-Request-ID, X-Ailoot-Task-Id och faktiskt returnerat id/polling_url. Fortsätt med det ursprungliga jobbet; skicka inte skapandebegäran igen.</p></div><details class=\"card-about\" data-output-fields><summary>Svarsfält</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Fält</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</span><code class=\"card-field-name\">outputs[]</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Modellalias</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=heygen%2Favatar-iv&amp;route=Ultra&amp;caller=heygen%2Favatar-iv&amp;fmt=videos\"><code>heygen/avatar-iv</code></a></span></p><h4>Alias för metodsökvägar</h4><p class=\"note-s\">Använd metodsökvägarna som visas ovan.</p><h4>Relaterade anropar-ID:n</h4><p class=\"note-s\"><a href=\"#m=heygen%2Favatar-iv&amp;route=Ultra&amp;caller=heygen%2Favatar-iv&amp;fmt=videos\"><code>heygen/avatar-iv</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "heygen/avatar-iv",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "heygen/avatar-iv",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|heygen%2Favatar-iv",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "Behåll X-Client-Request-ID, X-Ailoot-Task-Id och faktiskt returnerat id/polling_url. Fortsätt med det ursprungliga jobbet; skicka inte skapandebegäran igen."
            },
            "outputs": {
              "all_results": "Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "heygen/avatar-iv"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "image_url": {
                          "additionalProperties": false,
                          "properties": {
                            "url": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "type": "object"
                        },
                        "type": {
                          "const": "image_url"
                        }
                      },
                      "required": [
                        "type",
                        "image_url"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "audio_url": {
                          "additionalProperties": false,
                          "properties": {
                            "url": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "type": "object"
                        },
                        "type": {
                          "const": "audio_url"
                        }
                      },
                      "required": [
                        "type",
                        "audio_url"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maximum_items": 2,
                "minimum_items": 2,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "name": "prompt",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "allOf": [
                    {
                      "contains": {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      "maxContains": 1,
                      "minContains": 1
                    },
                    {
                      "contains": {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      },
                      "maxContains": 1,
                      "minContains": 1
                    }
                  ],
                  "items": {
                    "anyOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "maxItems": 2,
                  "minItems": 2,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "heygen/avatar-iv"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "const": "",
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "heygen/avatar-iv"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Använd faktiska innehållslänkar till färdiga medietillgångar som du äger, med deras returnerade signaturer: en videokälla för BFL eller en bildkälla och en ljudkälla för avatar. Källans belägg för ägare, typ och byte krävs.",
              "Ange exakt en PNG/JPEG-bild och en WAV/MP3-ljudtillgång. Ljudet är högst 32000000 byte, med en längd större än 0 och högst 1800 sekunder."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "faktiskt returnerat id eller polling_url",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "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.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Uppskattad genereringskostnad",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "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}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'heygen/avatar-iv', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    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 Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "Videor",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "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.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "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": "heygen/avatar-iv",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "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.1",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.1",
            "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.1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1",
            "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": "heygen/avatar-iv",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "bcf58272e10194cd6080970f078d77dc05c2dbb079bf08f5ea01cd43dcf1217d",
    "input_html_sha256": "4235de8af705cd80945eed16509c95965bad790497af0027613da68aeaadf13c",
    "private_audit_sha256": "f59014a44984f9fa107f6e4c332e6b3dadf6fa12f555decbe3494505e9855ab6",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sv/heygen-avatar-iv/",
    "description": "Avatar IV animerar ett foto till en läppsynkroniserad talvideo med ansiktsuttryck och gesttiming styrda av rösten. HeyGen dokumenterar arbetsflöden med manus eller inspelat ljud och rörelsekontroller för Photo Avatar för verklighetstrogna eller stiliserade presentatörer.",
    "locale": "sv",
    "md_url": "https://ailoot.ai/models/sv/heygen-avatar-iv/index.md",
    "title": "HeyGen: Avatar IV — Ailoot",
    "url": "https://ailoot.ai/models/sv/heygen-avatar-iv/"
  },
  "rawModel": {
    "about": "Avatar IV är HeyGens avatarmotor för att omvandla en stillbild till en uttrycksfull talvideo. Dess diffusionsinspirerade utformning från ljud till uttryck använder röstton, rytm och känsla för att styra ansiktsrörelse, huvudlutningar, pauser och mikrouttryck. Syftet är en presentatör eller karaktär som framför talat innehåll med läppsynkronisering och gester, snarare än en allmän scengenerator som skapar en hel miljö och ett ljudspår från en filmisk prompt.\n\nTillverkaren beskriver stöd för verklighetstrogna och stiliserade karaktärer, inklusive vinklade bilder eller profilbilder, ansikten i animestil och husdjur. Fotobaserade karaktärer fungerar bäst när ögon, mun och ansiktsstruktur är lätta att identifiera. HeyGen rekommenderar en tydlig, välbelyst bild med naturlig hållning och synliga händer när gester är viktiga. Ett mycket litet ansikte, dolda läppar, kraftiga masker, en framträdande näbb eller starkt överdrivna proportioner kan försvaga ansiktsrörelse och läppsynkronisering. Håll källans bildutsnitt lämpat för avsett framförande.\n\nProducenten erbjuder två vägar för talindata. Ett skrivet manus paras med en vald röst; ett förinspelat ljudspår tillhandahåller rösten och timingen direkt. Använd vägen för inspelat ljud när framförandet redan är fastställt och manusvägen när talet behöver syntetiseras. Indata är alternativ i det dokumenterade gränssnittet. Förbered slutlig ordalydelse, namn och uttal före animation och spara ljud eller manus tillsammans med returnerad video så att det talade resultatet kan kontrolleras.\n\nHeyGens Avatar IV-modellprofil omfattar studioavatarer, Digital Twins, Photo Avatars, direkta bilder och promptskapade motiv. En återanvändbar Photo Avatar ger ett stabilt motiv för senare videor, medan ett arbetsflöde med direkt bild börjar från den angivna bilden. Producentens Photo Avatar-profil erbjuder rörelseinstruktioner i fri text och uttrycksfullhetsvalen high, medium eller low, med low som standard. Behåll valt avatarutseende och motor när en serie skapas så att en ändrad källbild eller renderingsmodell inte blir en obemärkt ändring av presentatören.\n\nBeskriv en synlig kroppshandling och dess känslomässiga kvalitet för rörelseregi. ”Nickar varsamt med ett varmt leende” ger en gest och ett uttryck; en kort hälsning kan använda en vänlig vinkning. Tillverkaren rekommenderar en huvudgest, valfritt tillsammans med ett ansiktsuttryck, och högst två korta satser för en sekvens. Avatar IV hanterar tempot utifrån framförandet, så Studio-guiden kräver inget gestschema sekund för sekund. Specifik, kortfattad ordalydelse är lättare att granska än flera konkurrerande handlingar i en prompt.\n\nProducentens ljud-till-video-profil renderar upp till trettio minuters angivet ljud per begäran och uppladdade MP3- eller WAV-resurser har en gräns på 32 MB. Dela materialet vid sammanhängande talgränser för en längre lektion eller inspelning och behåll originalordningen. Slutvideons talade timing ska följa valt ljud snarare än en orelaterad uppskattning av klipplängd.\n\nDe dokumenterade utdatainställningarna från producenten omfattar 720p eller 1080p och formerna 16:9, 9:16, 4:5, 5:4 eller 1:1, med ett automatiskt alternativ som följer källans proportioner. Cover-anpassning kan beskära motivet; contain passar in hela motivet och kan lämna omgivande bakgrund synlig. Arbetsflödet för ljud-till-video returnerar MP4 som standard. För videoavatarer kräver transparenta WebM-utdata stöd för friläggning, och producenten tillämpar bakgrundsborttagning för dessa utdata i stället för att kombinera dem med en ny bakgrund. Granska faktiskt bildutsnitt och fil innan presentatören placeras i en större komposition.\n\nEn utbildningsintroduktion kan använda en tydlig presentatörsbild, en kortfattad förklaring och en återhållsam gest vid nyckelinstruktionen. En produktförklaring kan behålla samma avatarutseende medan talmanuset ändras för olika funktioner. Producenten dokumenterar också valfria undertextfiler och inbrända undertexter; granska ordalydelse och timing tillsammans med talet. Renderingen är asynkron i tillverkargränssnittet, så ett skapandesvar och den färdiga videon är olika leveranser. Spara den färdiga inspelningen och dess slutförandestatus med uppgiftens resultat.\n\nAvatar IV hålls separat från Avatar V:s referensstyrda rörelse och dess separata Studio-förinställningskontroller. Den skiljer sig också från HeyGen Videos generella scengenerering och från ett interaktivt live-avatarsamtal. Granska renderad munrörelse, synliga händer, ansiktsuttryck, pauser och talad ordalydelse mot källmaterial och avsedd ton. Bild, pose, ljussättning och rörelseinstruktioner påverkar resultatet; en fotobaserad animation ska kontrolleras som ett genererat framförande, med valda indata sparade för senare revideringar.",
    "alias_of": null,
    "aliases": [],
    "author": "HeyGen",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Fullständig prissättning för konfigurationen finns i detaljerna."
      }
    ],
    "ctx": null,
    "formats": [
      "videos"
    ],
    "id": "heygen/avatar-iv",
    "input": [
      "text",
      "image",
      "audio",
      "video"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "De visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual zero-based output index from completed manifest"
                  }
                }
              ],
              "creation_id_field": "id",
              "media_library": {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              "mode": "asynchronous_job_then_owned_outputs",
              "operation_id_is_not_task_id": true,
              "output_content_response": "owned MP4 bytes with Range support",
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned id or polling_url",
                  "path": "/v1/videos/{request_id}"
                }
              ],
              "unknown": "Behåll X-Client-Request-ID, X-Ailoot-Task-Id och faktiskt returnerat id/polling_url. Fortsätt med det ursprungliga jobbet; skicka inte skapandebegäran igen."
            },
            "outputs": {
              "all_results": "Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.",
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": null
                },
                {
                  "description": null,
                  "name": "status",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": null
                },
                {
                  "description": null,
                  "name": "outputs[]",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "heygen/avatar-iv"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "image_url": {
                          "additionalProperties": false,
                          "properties": {
                            "url": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "type": "object"
                        },
                        "type": {
                          "const": "image_url"
                        }
                      },
                      "required": [
                        "type",
                        "image_url"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "audio_url": {
                          "additionalProperties": false,
                          "properties": {
                            "url": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "url"
                          ],
                          "type": "object"
                        },
                        "type": {
                          "const": "audio_url"
                        }
                      },
                      "required": [
                        "type",
                        "audio_url"
                      ],
                      "type": "object"
                    }
                  ]
                },
                "maximum_items": 2,
                "minimum_items": 2,
                "name": "input_references",
                "required": true,
                "type": "array"
              },
              {
                "name": "prompt",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input_references": {
                  "allOf": [
                    {
                      "contains": {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      "maxContains": 1,
                      "minContains": 1
                    },
                    {
                      "contains": {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      },
                      "maxContains": 1,
                      "minContains": 1
                    }
                  ],
                  "items": {
                    "anyOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      },
                      {
                        "additionalProperties": false,
                        "properties": {
                          "audio_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "audio_url"
                          }
                        },
                        "required": [
                          "type",
                          "audio_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "maxItems": 2,
                  "minItems": 2,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "heygen/avatar-iv"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "const": "",
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_references"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input_references": "${ACTUAL_OWNED_INPUT_REFERENCES}",
                "model": "heygen/avatar-iv"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Använd faktiska innehållslänkar till färdiga medietillgångar som du äger, med deras returnerade signaturer: en videokälla för BFL eller en bildkälla och en ljudkälla för avatar. Källans belägg för ägare, typ och byte krävs.",
              "Ange exakt en PNG/JPEG-bild och en WAV/MP3-ljudtillgång. Ljudet är högst 32000000 byte, med en längd större än 0 och högst 1800 sekunder."
            ],
            "material_types": [
              "text",
              "image",
              "audio",
              "video"
            ],
            "required": [
              "model",
              "input_references"
            ]
          },
          "lifecycle": {
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual zero-based output index from completed manifest"
                }
              }
            ],
            "creation_id_field": "id",
            "media_library": {
              "http": "GET",
              "path": "/v1/media/assets"
            },
            "mode": "asynchronous_job_then_owned_outputs",
            "operation_id_is_not_task_id": true,
            "output_content_response": "owned MP4 bytes with Range support",
            "status": [
              {
                "http": "GET",
                "id_source": "faktiskt returnerat id eller polling_url",
                "path": "/v1/videos/{request_id}"
              }
            ],
            "unknown": "Keep X-Client-Request-ID, X-Ailoot-Task-Id and actual returned id/polling_url. Continue the original job; do not submit creation again."
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": null
              },
              {
                "description": null,
                "name": "status",
                "type": null
              },
              {
                "description": null,
                "name": "data[]",
                "type": null
              },
              {
                "description": null,
                "name": "outputs[]",
                "type": null
              }
            ]
          }
        },
        "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.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Uppskattad genereringskostnad",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "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}\"\n: \"${AILOOT_INPUT_REFERENCES_JSON:?Set the actual documented input value}\"\nexport AILOOT_INPUT_REFERENCES_JSON\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'heygen/avatar-iv', 'input_references': '${ACTUAL_OWNED_INPUT_REFERENCES}'}\nrequest['input_references']=json.loads(os.environ['AILOOT_INPUT_REFERENCES_JSON'])\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}\"\nexport AILOOT_STATUS_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nfrom urllib.parse import urlsplit,urljoin\nf=Path(os.environ[\"AILOOT_STATUS_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose the actual completed status file\")\nr=json.loads(f.read_text())\nif r.get(\"status\")!=\"completed\" or not isinstance(r.get(\"data\"),list) or not r[\"data\"]:raise SystemExit(\"Wait for a completed status with asset paths\")\nurls=[]\nfor x in r[\"data\"]:\n    if not isinstance(x,str) or \"\\n\" in x or \"\\r\" in x:raise SystemExit(\"Invalid asset path\")\n    u=urljoin(\"https://api.ailoot.ai\",x)\n    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 Ailoot asset paths from status\")\n    urls.append(u)\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_REQUEST\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" \\\n    -H \"Authorization: Bearer $AILOOT_API_KEY\" -o \"video-${index}.mp4\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "GET all completed assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "audio",
          "video"
        ],
        "label": "Videor",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "videos",
        "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.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "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": "heygen/avatar-iv",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}"
        ],
        "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.1",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.1",
            "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.1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1",
            "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": "heygen/avatar-iv",
        "request_model_id": "heygen/avatar-iv",
        "route_label": "Ultra"
      }
    ],
    "name": "HeyGen: Avatar IV",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.1,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.1,
      "varies": false
    },
    "short": "Avatar IV animerar ett foto till en läppsynkroniserad talvideo med ansiktsuttryck och gesttiming styrda av rösten. HeyGen dokumenterar arbetsflöden med manus eller inspelat ljud och rörelsekontroller för Photo Avatar för verklighetstrogna eller stiliserade presentatörer."
  },
  "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": "Avatar IV animerar ett foto till en läppsynkroniserad talvideo med ansiktsuttryck och gesttiming styrda av rösten. HeyGen dokumenterar arbetsflöden med manus eller inspelat ljud och rörelsekontroller för Photo Avatar för verklighetstrogna eller stiliserade presentatörer.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "ba15956d6c541e43473250af907342e2b2129235bf9af324e5e8c210064f27c8",
    "renderer_sha256": "8a45bb31b83d2551e6d975cf4683518c7cb445a54b9394a01947f4dd103f1051"
  },
  "sourceRevision": "15e49cd11a089ec02d390e3cde6f7356c0e42dc251ed6ef50760bb0314734b6e"
}
