Webhooks post-appel
Recevez des notifications via des webhooks lorsque les appels se terminent et que l’analyse est terminée.
Vue d’ensemble
Les webhooks post-appel vous permettent de recevoir des informations détaillées sur un appel une fois l’analyse terminée. Lorsqu’ils sont activés, ElevenLabs envoie une requête POST à votre point de terminaison spécifié avec des données complètes sur l’appel.
ElevenLabs prend en charge trois types de webhooks post-appel :
- Webhooks de transcription (
post_call_transcription) : contiennent les données complètes de la conversation, y compris les transcriptions, les résultats d’analyse et les métadonnées - Webhooks audio (
post_call_audio) : contiennent un minimum de données, avec l’audio de l’intégralité de la conversation encodé en base64 - Webhooks d’échec d’initiation d’appel (
call_initiation_failure) : contiennent des informations sur les tentatives d’initiation d’appel échouées, y compris les raisons de l’échec et les métadonnées
Activer les webhooks post-appel
Les webhooks post-appel peuvent être activés pour tous les agents de votre Workspace depuis la page des paramètres d’ElevenAgents.

Les webhooks post-appel doivent renvoyer un code d’état 200 pour être considérés comme réussis. Les webhooks qui échouent de manière répétée sont automatiquement désactivés lorsqu’ils comptent au moins 10 échecs consécutifs et que la dernière livraison réussie remonte à plus de 7 jours, ou qu’aucune livraison n’a jamais réussi.
Les webhooks post-appel peuvent faire l’objet de nouvelles tentatives automatiques en cas d’échec. Consultez nouvelles tentatives de webhook .
Authentification
Il est important que le récepteur valide tous les webhooks entrants. Les webhooks prennent actuellement en charge l’authentification par signatures HMAC. Configurez l’authentification HMAC en :
- Stockant de manière sécurisée le secret partagé généré lors de la création du webhook
- Vérifiant l’en-tête ElevenLabs-Signature dans votre endpoint à l’aide du SDK
Le SDK JavaScript expose constructEvent ; le SDK Python expose construct_event avec rawBody, sig_header et secret (ils ne s’appellent pas payload / signature en Python). Les deux vérifient la signature, valident l’horodatage et analysent la charge utile JSON.
Python
JavaScript
Exemple de gestionnaire de webhook utilisant FastAPI :
Liste d’autorisation d’adresses IP
Pour renforcer la sécurité, vous pouvez ajouter les adresses IP de sortie statiques d’ElevenLabs à votre liste d’autorisation. Consultez Liste d’autorisation d’adresses IP pour obtenir la liste complète des adresses IP.
L’utilisation d’une liste d’autorisation d’adresses IP combinée à la validation de signature HMAC offre plusieurs couches de sécurité.
Structure des réponses webhook
ElevenLabs envoie trois types distincts de webhooks post-appel, chacun avec une structure de données différente :
Webhooks de transcription (post_call_transcription)
Contiennent des données complètes sur la conversation, notamment les transcriptions intégrales, les résultats d’analyse et les métadonnées.
Champs de premier niveau
Structure de l’objet de données
L’objet data contient :
Webhooks audio (post_call_audio)
Contiennent des données minimales avec l’audio complet de la conversation au format MP3 encodé en base64.
Champs de premier niveau
Structure de l’objet de données
L’objet data contient uniquement :
Les webhooks audio contiennent uniquement les trois champs indiqués ci-dessus. Ils n’incluent PAS les données de transcription, les métadonnées, les résultats d’analyse ni aucun autre détail de la conversation.
Webhooks d’échec d’initiation d’appel (call_initiation_failure)
Contiennent des informations sur les tentatives d’initiation d’appels téléphoniques, notamment les raisons de l’échec et les métadonnées du fournisseur de téléphonie.
Les événements webhook d’échec d’initiation d’appel sont envoyés lorsqu’un appel ne peut pas être initié en raison d’erreurs de connexion, du refus de l’appel par l’utilisateur ou de l’absence de réponse de l’utilisateur. Si un appel est transféré vers une messagerie vocale ou est pris en charge par un service automatisé, aucun webhook d’échec d’initiation d’appel n’est envoyé, car l’appel a été initié avec succès.
Champs de premier niveau
Structure de l’objet de données
L’objet data contient :
Pour les appels sortants effectués via Twilio, failure_reason est dérivé du CallStatus Twilio : busy et no-answer sont transmis tels quels, tandis que failed est signalé comme unknown. Les autres statuts d’appel Twilio n’envoient pas de webhook d’échec d’initiation d’appel.
Structure de l’objet de métadonnées
La structure de l’objet metadata varie selon que l’appel sortant a été effectué via Twilio ou via la jonction SIP. L’objet comprend un champ type qui distingue les deux cas, ainsi qu’un champ body contenant les détails propres au fournisseur.
Métadonnées SIP (type: "sip") :
L’objet body des métadonnées SIP contient :
Métadonnées Twilio (type: "twilio") :
Exemples de charges utiles webhook
Exemple de webhook de transcription
Exemple de webhook audio
Exemples de webhooks d’échec d’initiation d’appel
Exemple de métadonnées Twilio
Exemple de métadonnées SIP
Livraison des webhooks audio
Les webhooks audio sont envoyés séparément des webhooks de transcription et contiennent uniquement les champs essentiels pour identifier la conversation, ainsi que les données audio encodées en base64.
Les webhooks audio peuvent être activés ou désactivés à l’aide du bouton « Send audio data » dans vos paramètres de webhook. Ce paramètre peut être configuré au niveau du Workspace (dans les paramètres d’ElevenAgents) et au niveau de l’agent (dans les remplacements de webhook de chaque agent).
Livraison en streaming
Les webhooks audio sont envoyés sous forme de requêtes HTTP en streaming avec l’en-tête transfer-encoding: chunked, afin de gérer efficacement les fichiers audio volumineux. Chaque requête expire après 5 minutes.
Nouvelles tentatives
Lorsque les nouvelles tentatives sont activées sur le webhook, les livraisons audio ayant échoué sont réessayées selon le même calendrier que les webhooks de transcription. Une nouvelle tentative renvoie la charge utile audio complète ; dédupliquez donc selon conversation_id. Consultez les nouvelles tentatives de webhook pour connaître le calendrier, les erreurs pouvant faire l’objet d’une nouvelle tentative et les limites de taille des fichiers audio.
Traitement des webhooks audio
Les webhooks audio étant envoyés via un encodage de transfert par blocs, vous devez gérer correctement les données en streaming :
Les webhooks audio peuvent contenir des fichiers volumineux. Assurez-vous donc que votre endpoint webhook peut gérer les requêtes en streaming et dispose de suffisamment de mémoire et de capacité de stockage. L’audio est envoyé au format MP3.
Cas d’utilisation
Suivis d’appel automatisés
Les webhooks post-appel vous permettent de concevoir des workflows automatisés qui se déclenchent dès la fin d’un appel. Voici quelques applications concrètes :
Intégration CRM
Mettez à jour votre système de gestion de la relation client avec les données de conversation dès qu’un appel se termine :
Conversations avec état
Conservez le contexte de conversation entre plusieurs interactions en enregistrant et en récupérant l’état :
- Lorsqu’un appel commence, transmettez votre ID utilisateur comme variable dynamique.
- Lorsqu’un appel se termine, configurez votre endpoint webhook pour enregistrer les données de conversation dans votre base de données, à partir de l’ID utilisateur extrait de
dynamic_variables. - Lorsque l’utilisateur appelle à nouveau, vous pouvez récupérer ce contexte et le transmettre à la nouvelle conversation dans une variable dynamique
{{previous_topics}}. - Cela crée une expérience fluide dans laquelle l’agent « se souvient » des interactions précédentes.