Snabbstart för Image & Video
Lär dig generera bilder och videor från textprompter och referensmedia.
Image & Video API är asynkront. Du skickar in en generering och laddar ned resultatet från en signerad URL när den är klar. Bilder och videor har separata slutpunkter, men strukturen för begäran och svaret är densamma för båda.
Det finns två sätt att hämta resultatet. Webhook-leverans är det rekommenderade alternativet och används i exemplen nedan: ElevenLabs anropar din slutpunkt när en generering når en slutgiltig status, så ingen tid går åt till väntan. Pollning är ett alternativ när du inte har någon slutpunkt som kan ta emot en callback, och varje exempel visar hur du använder det i stället.
Image & Video API kräver Pro-planen eller högre. Anrop från en arbetsyta under den nivån
avvisas med felet 402 paid_plan_required. Din API-nyckel måste också ha behörigheten Image & Video eller
Flows för arbetsytan.
Generera en bild
Skapa en API-nyckel
Skapa en API-nyckel i kontrollpanelen här, som du använder för att säkert få åtkomst till API:et.
Spara nyckeln som en hanterad hemlighet och skicka den till SDK:erna antingen som en miljövariabel via en .env-fil eller direkt i appens konfiguration, beroende på vad du föredrar.
Installera SDK:t
SDK
CLI
Vi använder också biblioteket dotenv för att läsa in vår API-nyckel från en miljövariabel.
Skicka in genereringen
Varje modell har sin egen begärandeklass, och dess fält är de parametrar som modellen accepterar. Att byta modell kan därför ändra vilka fält som är tillgängliga. Okända fält avvisas i stället för att ignoreras.
webhook begär att det färdiga resultatet levereras till arbetsytans webhooks, så anropet
returnerar så snart genereringen har köats. Det kräver en webhook som prenumererar på genererings-
händelser; se Image & Video-
webhooks för att konfigurera en, eller utelämna
fältet och polla i stället.
SDK
CLI
Svaret innehåller genererings-ID:t och inget annat. En nyligen skapad generering är alltid
pending:
Hämta resultatet
Eftersom begäran använde webhook skickar ElevenLabs en flows_generation-händelse till din
slutpunkt när genereringen når completed eller failed. Händelsens data är identisk med
vad GET-slutpunkten returnerar, och
Image & Video-webhooks beskriver
hanteraren som tar emot den.
Om du inte har en slutpunkt som kan ta emot callbacks tar du bort webhook från begäran ovan och pollar i stället.
Hämta genereringen tills statusen är completed eller failed, och vänta minst två sekunder
mellan bildbegäranden – se Riktlinjer för pollning för intervallen
per modalitet.
Oavsett metod innehåller en slutförd generering samma fält:
Generera en video
Videogenereringar använder flows.video och följer samma mönster för att skicka in och hämta resultat. En video kan ta
flera minuter, så det här exemplet använder webhook-leverans med webhook i stället för att vänta på
resultatet.
Anropet returnerar så snart genereringen har köats och det färdiga resultatet levereras till varje
webhook i din arbetsyta som prenumererar på genereringshändelser. Videoutdata är MP4, så den slutförda nyttolasten rapporterar en
content_mime_type på video/mp4. Se
Image & Video-webhooks för att konfigurera en
webhook och skriva hanteraren som tar emot detta.
webhook kräver minst en webhook i arbetsytan som prenumererar på genereringshändelser. Utan en sådan
avvisas anropet för att skapa en generering i stället för att starta en generering vars resultat inte har någonstans att ta vägen. Ta bort
fältet för att i stället polla med flows.video.get, och polla högst en gång var tionde
sekund.
Hämta resultat
Webhooks och pollning returnerar samma nyttolast, så valet handlar om hur du väntar på den snarare än vad du får.
Använd webhooks när du kan. Välj pollning när du inte har någonstans att ta emot en callback, och följ intervallen nedan när du gör det.
Välja webhook-mål
webhook accepterar två former. WebhookTarget_All når varje webhook som prenumererar på genererings-
händelser, vilket är rätt standardval eftersom det fungerar även om webhooks roteras eller ersätts.
WebhookTarget_Ids begränsar leveransen till specifika webhooks, när en arbetsyta distribuerar till flera
konsumenter och ett visst jobb bara ska nå en av dem:
Varje ID måste redan prenumerera på genereringshändelser; att ange en webhook utan prenumeration avvisas i stället för att tyst ignoreras. Den levererade nyttolasten är identisk med vad GET-slutpunkten returnerar, så en hanterare som skrivits för den ena fungerar även för den andra. I webhook-guiden beskrivs hur du konfigurerar en webhook, verifierar signaturen och hanterar händelsen.
Riktlinjer för pollning
En genererings körtid beror på modellen, upplösningen och, för video, längden. Polla därför med ett intervall som motsvarar vad du har begärt i stället för i en fast loop:
- Bilder: polla högst en gång varannan sekund. De flesta blir klara inom några sekunder.
- Video: polla högst en gång var tionde sekund. Räkna med minuter, inte sekunder, och anpassa
intervallet efter
duration_secsochresolution.
Två regler gäller för båda. Backa när en generering tar lång tid – att fördubbla intervallet upp till ungefär en minut hindrar en långsam generering från att resultera i hundratals begäranden. Och sätt en övre gräns för loopen, så att en fastnad generering avslutas med en timeout i din egen kod i stället för en obegränsad loop.
Att polla snabbare ger dig inget: en genererings status ändras inte snabbare för att du frågar två gånger. Ihållande aggressiv pollning kan returnera 429-svar, som du bör hantera med exponentiell backoff.
Genereringens livscykel
En generering går igenom fyra statusar. De två slutgiltiga statusarna innehåller olika fält, så
kontrollera status innan du läser resten av svaret.
content_url är en signerad URL som upphör att gälla ungefär en timme efter att svaret har returnerats. Hämta
genereringen igen för en ny URL i stället för att lagra den signerade URL:en.
Hantera fel
En misslyckad generering rapporterar kategorin failure_reason tillsammans med ett läsbart error_message:
Misslyckade genereringar debiteras inte. Parameterproblem som kan upptäckas direkt – ett fält som inte stöds, ett värde utanför modellens tillåtna intervall eller en ogiltig kombination av referens- inmatningar – avvisas i stället av begäran om att skapa en generering, innan någon generering startar.
Priser
Genereringar debiteras i krediter. Kostnaden beror på modellen, parametrarna du väljer, till exempel upplösning och längd, samt inmatningarna du tillhandahåller. En generering kostar lika mycket via API:t som den gör i ElevenLabs-appen, där kostnaden visas innan du skickar in den. Se Image & Video i playground för hur kostnaden för en viss kombination av modell och inställningar visas.
Lista dina genereringar
Varje slutpunkt listar genereringarna som skapats genom den, med de senaste först. Resultaten är begränsade till din arbetsyta och detta API, så genereringar som skapats i ElevenLabs-appen visas inte.
page_size accepterar 1 till 100 och har standardvärdet 30. Skicka status för att bara returnera genereringar i ett
livscykeltillstånd och model_id för att bara returnera genereringar från en enskild modell. Behandla next_cursor som
ogenomskinlig: skicka tillbaka exakt värde och sluta när has_more är false.
Tillgängliga modeller
API:et exponerar en delmängd av modellerna som finns i ElevenLabs-appen. Varje modell accepterar bara de parametrar som anges för den – om du skickar ett fält som stöds av en annan modell får du ett valideringsfel.
ByteDance-modeller är inaktiverade som standard och kräver uttryckligt godkännande innan de kan användas. Tills åtkomst har
beviljats avvisas en begäran som anger någon av dem med felet model_access_denied. Enterprise-
kunder kan kontakta supporten för att begära åtkomst.
Bildmodeller
GPT Image 2.5-modellerna accepterar quality-värdena low, medium, high, xhigh och max, och
använder high som standard. GPT Image 2 går bara till high och använder medium som standard.
Videomodeller
Information om modellfunktioner, tillgänglighet och priser finns i översikten över Bild och video.