Webhooks för Image & Video
Ta emot resultatet av en generering i stället för att polla efter det.
Guide · Förutsätter att du har slutfört snabbstarten för Image & Video .
Översikt
Videogenereringar kan ta flera minuter, vilket gör det kostsamt att hålla polling öppen. Välj
webhook-leverans för en generering så skickar ElevenLabs en flows_generation-händelse till din slutpunkt
när genereringen får statusen completed eller failed.
Händelsens payload är det slutliga svaret från motsvarande GET-slutpunkt, så en hanterare som redan förstår polling-svaret behöver ingen separat sökväg för tolkning.
Innan du börjar
Webhook-leverans använder de webhooks som din arbetsyta prenumererar med på genereringshändelser. Att konfigurera en sker i två steg: skapa webhooken och prenumerera sedan på händelsen.
Skapa en webhook
Gå till Utvecklare > Webhooks och skapa en webhook med en publikt tillgänglig HTTPS-återanrops-URL. Spara signeringshemligheten du får tillbaka – du behöver den för att verifiera inkommande händelser.
Prenumerera på genereringshändelser
Under Select events to listen to markerar du **Image & Video API generation or template run completed **. Samma händelse levererar slutförda mallkörningar. En webhook som finns men inte prenumererar på den här händelsen anropas aldrig.
Du kan göra samma sak via API:t genom att skicka händelsen flows till
Update workspace webhook:
Att skapa och prenumerera på webhooks kräver behörigheten Webhooks Manage eller att du är arbetsyteadministratör. En
enskild händelse kan ha upp till 10 webhooks; därefter misslyckas begäran med too_many_webhooks.
En generering som begär webhook-leverans när ingen webhook prenumererar på genereringshändelser avvisas, så ett resultat genereras aldrig utan någonstans att leverera det.
Begär webhook-leverans
Lägg till ett webhook-objekt i begäran för att skapa. Använd {"type": "all"} för att leverera till varje webhook
som prenumererar på genereringshändelser, så förblir begäran stabil när webhooks läggs till eller ersätts.
Om du i stället vill rikta in dig på specifika webhooks anger du fältet webhook som en lista med ID:n. Varje ID måste tillhöra
någon av arbetsytans webhooks som prenumererar på genereringshändelser.
Begäran för att skapa validerar målet innan genereringen startar och returnerar ett fel när leverans inte skulle vara möjlig:
Webhook-leverans fungerar bra med kedjade
genereringar:
ange webhook för den sista genereringen så körs hela kedjan på serversidan med en enda händelse i
slutet. Detta gäller även om kedjan misslyckas halvvägs – felet fortplantas till den
sista genereringen, som levererar det som en failed-händelse med orsaken dependency_failed.
Webhook-payload
En slutförd generering levererar utdata-URL:en och MIME-typen:
En misslyckad generering levererar i stället felkategorin och meddelandet:
Förgrena på data.status för att avgöra vilka fält som finns. De två slutliga statusarna är de enda
som en webhook kan innehålla, eftersom leverans endast sker när en generering är klar.
content_url är en signerad URL som upphör ungefär en timme efter att händelsen har skickats. Ladda ned
mediet direkt, eller hämta genereringen igen för att få en ny URL.
Hantera händelsen
En hanterare verifierar signaturen, kontrollerar händelsetypen och förgrenar sedan på data.status. Det här
exemplet laddar ned utdata från en slutförd generering och loggar orsaken för en misslyckad.
Båda exemplen laddar ned under begäran för enkelhetens skull. En stor video kan ta så lång tid att detta överskrider leveranstimeouten, så i produktion bör du lämna genererings-ID:t till en kö och returnera 2xx omedelbart. Den signerade URL:en är giltig i ungefär en timme, vilket ger gott om tid för en bakgrundsarbetare.
Om du vill ta emot händelser på en lokal server under utveckling kan du exponera den med en tunnel, exempelvis ngrok, och använda HTTPS-URL:en du får som webhookens återanrops-URL.
Verifiera signaturen
Hanteraren ovan anropar construct_event / constructEvent, vilket verifierar
huvudet ElevenLabs-Signature, validerar tidsstämpeln och tolkar payloaden i ett steg. Verifiera alltid
innan du litar på en händelse.
Det är viktigt att mottagaren validerar alla inkommande webhooks. Webhooks har för närvarande stöd för autentisering via HMAC-signaturer. Konfigurera HMAC-autentisering genom att:
- Lagra den delade hemligheten som genereras när webhooken skapas på ett säkert sätt
- Verifiera headern ElevenLabs-Signature i din endpoint med hjälp av SDK:n
JavaScript-SDK:n exponerar constructEvent; Python-SDK:n exponerar construct_event med rawBody, sig_header och secret (dessa heter inte payload / signature i Python). Båda verifierar signaturen, validerar tidsstämpeln och tolkar JSON-payloaden.
Python
JavaScript
Exempel på webhook-hanterare med FastAPI:
Leveransbeteende
Varje generering levererar exakt en slutlig händelse per riktad webhook. Leveransen är oberoende av själva genereringen: en webhook som misslyckas eller inte kan nås påverkar inte resultatet, som fortsätter att vara tillgängligt från GET-slutpunkten och i listsvar.
Returnera snabbt status 2xx från din hanterare. Upprepade fel inaktiverar automatiskt en webhook, och en
inaktiverad webhook gör att efterföljande genereringar som riktas till den avvisas när de skapas. Utforma
hanteraren så att den är idempotent och använd genereringens id för att ta bort dubbletter.
För workflows där ett missat resultat inte är acceptabelt bör du behandla webhooks som den snabba vägen och stämma av
regelbundet med flows.image.list eller flows.video.list, filtrerat på status.