Webhooks post-appel
Recevez une notification lorsque les appels se terminent et que l’analyse est terminée, grâce aux webhooks.
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 vers le point de terminaison indiqué, 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 l’intégralité des données de conversation, y compris les transcriptions, les résultats d’analyse et les métadonnées - Webhooks audio (
post_call_audio) : contiennent des données minimales avec l’audio encodé en base64 de l’intégralité de la conversation - Webhooks d’échec d’initialisation d’appel (
call_initiation_failure) : contiennent des informations sur les tentatives d’initialisation 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 en cas d’au moins 10 échecs consécutifs et si la dernière livraison réussie remonte à plus de 7 jours, ou si aucune livraison n’a jamais abouti.
Les webhooks post-appel peuvent être relancés automatiquement en cas d’échec. Consultez les nouvelles tentatives de webhooks.
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 :
En-têtes de requête personnalisés
En plus de la validation des signatures HMAC, vous pouvez inclure des en-têtes personnalisés à chaque livraison de webhook. Cela permet de transmettre les clés API, les jetons bearer ou les autres en-têtes d’authentification requis par votre point de terminaison de réception.
Dashboard
CLI
SDK
Les en-têtes personnalisés ne sont actuellement pas configurables depuis le Dashboard d’ElevenAgents. Utilisez le SDK ou l’API pour définir des en-têtes personnalisés.
Les en-têtes personnalisés fonctionnent avec l’authentification HMAC. auth_type doit toujours être défini sur hmac,
et les en-têtes personnalisés sont envoyés en plus de l’en-tête ElevenLabs-Signature.
Les en-têtes personnalisés sont accessibles en écriture uniquement. Le point de terminaison de liste des webhooks
ne renvoie pas request_headers dans sa réponse. Vous ne pouvez donc pas relire les en-têtes
configurés pour un webhook.
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 la 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 associée à la validation des signatures HMAC offre plusieurs niveaux de sécurité.
Remplacements de webhook par agent
Par défaut, tous les agents de votre Workspace utilisent le webhook configuré dans les paramètres de votre Workspace. Vous pouvez le remplacer pour chaque agent afin d’envoyer les données post-appel de différents agents vers différents points de terminaison.
Dashboard
CLI
SDK
Ouvrir les paramètres de l’agent
Accédez à votre agent dans le Dashboard ElevenAgents, puis ouvrez Paramètres.
post_call_webhook_id doit référencer un webhook qui existe déjà dans votre Workspace. Vous pouvez également préciser les types d’événements à envoyer à l’aide du tableau events :
Structure des réponses de 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’intégralité de l’audio de la conversation en 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 tout autre détail de la conversation.
Webhooks d’échec d’initialisation d’appel (call_initiation_failure)
Contiennent des informations sur les tentatives d’initialisation d’appels téléphoniques, y compris les raisons de l’échec et les métadonnées du fournisseur de téléphonie.
Les événements de webhook d’échec d’initialisation d’appel sont envoyés lorsqu’un appel ne peut être initialisé 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 pris par un service automatisé, aucun webhook d’échec d’initialisation d’appel n’est envoyé, car l’appel a été initialisé 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 de Twilio : busy et no-answer sont transmis tels quels, et failed est signalé comme unknown. Les autres statuts d’appel Twilio n’envoient pas de webhook d’échec d’initialisation 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 une liaison SIP. L’objet inclut 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 de webhook
Exemple de webhook de transcription
Exemple de webhook audio
Exemples de webhooks d’échec d’initialisation d’appel
Exemple de métadonnées Twilio
Exemple de métadonnées SIP
Livraison des webhooks audio
Les webhooks audio sont livrés séparément des webhooks de transcription et contiennent uniquement les champs essentiels permettant d’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 les paramètres de votre 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 individuels.
Livraison en streaming
Les webhooks audio sont livré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 échouées sont relancées selon la même planification que les webhooks de transcription. Une nouvelle tentative renvoie l’intégralité de la charge utile audio. Dédupliquez donc à l’aide de conversation_id. Consultez les nouvelles tentatives de webhooks pour connaître la planification, les erreurs pouvant faire l’objet d’une nouvelle tentative et les limites de taille audio.
Traiter les webhooks audio
Les webhooks audio étant livré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 point de terminaison de webhook peut gérer les requêtes en streaming et dispose d’une capacité de mémoire et de stockage suffisante. L’audio est livré au format MP3.
Cas d’usage
Suivis d’appel automatisés
Les webhooks post-appel vous permettent de concevoir des workflows automatisés qui se déclenchent immédiatement après la fin d’un appel. Voici quelques applications pratiques :
Intégration CRM
Mettez à jour votre système de gestion de la relation client avec les données de conversation dès la fin d’un appel :
Conversations avec état
Conservez le contexte de la conversation entre plusieurs interactions en enregistrant et en récupérant son état :
- Lorsqu’un appel commence, transmettez votre ID utilisateur sous forme de variable dynamique.
- Lorsqu’un appel se termine, configurez votre point de terminaison de 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 de nouveau, vous pouvez récupérer ce contexte et le transmettre à la nouvelle conversation dans une variable dynamique
{{previous_topics}}. - L’agent peut ainsi « se souvenir » des interactions précédentes, pour une expérience fluide.