Webhooks post-llamada
Recibe notificaciones mediante webhooks cuando terminan las llamadas y se completa el análisis.
Resumen
Los webhooks post-llamada te permiten recibir información detallada sobre una llamada después de que se complete el análisis. Cuando están activados, ElevenLabs enviará una solicitud POST a la ruta que especifiques con datos completos de la llamada.
ElevenLabs admite tres tipos de webhooks post-llamada:
- Webhooks de transcripción (
post_call_transcription): contienen datos completos de la conversación, incluidas las transcripciones, los resultados del análisis y los metadatos - Webhooks de audio (
post_call_audio): contienen datos mínimos con el audio de toda la conversación codificado en base64 - Webhooks de fallo al iniciar llamadas (
call_initiation_failure): contienen información sobre intentos fallidos de iniciar llamadas, incluidos los motivos del fallo y los metadatos
Activar webhooks post-llamada
Los webhooks post-llamada se pueden activar para todos los agentes de tu espacio de trabajo desde la página de configuración de ElevenAgents.

Los webhooks post-llamada deben devolver un código de estado 200 para considerarse correctos. Los webhooks que fallan repetidamente se desactivan automáticamente si hay 10 o más fallos consecutivos y la última entrega correcta fue hace más de 7 días o nunca se han entregado correctamente.
Los webhooks post-llamada pueden reintentarse automáticamente si fallan. Consulta los reintentos de webhooks.
Autenticación
Es importante que el listener valide todos los webhooks entrantes. Actualmente, los webhooks admiten autenticación mediante firmas HMAC. Configura la autenticación HMAC de esta forma:
- Almacena de forma segura el secreto compartido generado al crear el webhook
- Verifica la cabecera ElevenLabs-Signature en tu ruta de API mediante el SDK
El SDK de JavaScript incluye constructEvent; el SDK de Python incluye construct_event con rawBody, sig_header y secret (en Python no se llaman payload / signature). Ambos verifican la firma, validan la marca de tiempo y analizan la carga útil JSON.
Python
JavaScript
Ejemplo de controlador de webhook con FastAPI:
Lista de permitidos de IP
Para mayor seguridad, puedes añadir las IP de salida estáticas de ElevenLabs a tu lista de permitidos. Consulta Lista de permitidos de IP para ver la lista completa de direcciones IP.
Usar una lista de permitidos de IP junto con la validación de firmas HMAC proporciona varias capas de seguridad.
Estructura de respuesta del webhook
ElevenLabs envía tres tipos distintos de webhooks posteriores a la llamada, cada uno con estructuras de datos diferentes:
Webhooks de transcripción (post_call_transcription)
Contiene datos completos de la conversación, incluidas las transcripciones completas, los resultados del análisis y los metadatos.
Campos de nivel superior
Estructura del objeto de datos
El objeto data contiene:
Webhooks de audio (post_call_audio)
Contiene datos mínimos junto con el audio completo de la conversación en formato MP3 codificado en base64.
Campos de nivel superior
Estructura del objeto de datos
El objeto data contiene únicamente:
Los webhooks de audio contienen únicamente los tres campos indicados arriba. NO incluyen datos de transcripción, metadatos, resultados de análisis ni ningún otro detalle de la conversación.
Webhooks de error de inicio de llamada (call_initiation_failure)
Contiene información sobre los intentos de iniciar llamadas telefónicas, incluidos los motivos del error y los metadatos del proveedor de telefonía.
Los eventos de webhook de error de inicio de llamada se envían cuando una llamada no se puede iniciar por errores de conexión, porque el usuario rechaza la llamada o porque no la contesta. Si una llamada va al buzón de voz o la responde un servicio automatizado, no se envía ningún webhook de error de inicio de llamada, ya que la llamada se inició correctamente.
Campos de nivel superior
Estructura del objeto de datos
El objeto data contiene:
Estructura del objeto de metadatos
La estructura del objeto metadata varía según si la llamada saliente se realizó mediante Twilio o mediante trunking SIP. El objeto incluye un campo type que distingue entre ambos y un campo body con detalles específicos del proveedor.
Metadatos de SIP (type: "sip"):
El objeto body de los metadatos de SIP contiene:
Metadatos de Twilio (type: "twilio"):
Ejemplos de cargas útiles de webhooks
Ejemplo de webhook de transcripción
Ejemplo de webhook de audio
Ejemplos de webhook de error de inicio de llamada
Ejemplo de metadatos de Twilio
Ejemplo de metadatos de SIP
Entrega de webhooks de audio
Los webhooks de audio se entregan por separado de los webhooks de transcripción y contienen únicamente los campos esenciales para identificar la conversación, junto con los datos de audio codificados en base64.
Los webhooks de audio se pueden activar o desactivar con el interruptor «Enviar datos de audio» de la configuración del webhook. Esta opción se puede configurar tanto a nivel de espacio de trabajo (en la configuración de ElevenAgents) como a nivel de agente (en las anulaciones de webhook de cada agente).
Entrega en streaming
Los webhooks de audio se entregan como solicitudes HTTP en streaming con la cabecera transfer-encoding: chunked para gestionar archivos de audio grandes de forma eficiente. Cada solicitud agota el tiempo de espera tras 5 minutos.
Reintentos
Cuando los reintentos están activados en el webhook, las entregas de audio fallidas se vuelven a intentar según el mismo calendario que los webhooks de transcripción. Un reintento reenvía la carga útil completa de audio, así que elimina duplicados por conversation_id. Consulta reintentos de webhooks para ver el calendario, los errores que se pueden reintentar y los límites de tamaño de audio.
Procesamiento de webhooks de audio
Dado que los webhooks de audio se entregan mediante codificación de transferencia por bloques, tendrás que gestionar correctamente los datos en streaming:
Los webhooks de audio pueden ser archivos grandes, así que asegúrate de que tu ruta de API de webhook pueda gestionar solicitudes en streaming y tenga suficiente capacidad de memoria y almacenamiento. El audio se entrega en formato MP3.
Casos de uso
Seguimientos de llamadas automatizados
Los webhooks posteriores a la llamada te permiten crear workflows automatizados que se activan inmediatamente después de que termine una llamada. Estas son algunas aplicaciones prácticas:
Integración con CRM
Actualiza tu sistema de gestión de relaciones con clientes con los datos de la conversación en cuanto finalice una llamada:
Conversaciones con estado
Mantén el contexto de la conversación en varias interacciones almacenando y recuperando el estado:
- Cuando empiece una llamada, transmite tu ID de usuario como variable dinámica.
- Cuando termine una llamada, configura tu ruta de API de webhook para almacenar los datos de la conversación en tu base de datos según el ID de usuario extraído de
dynamic_variables. - Cuando el usuario vuelva a llamar, podrás recuperar este contexto y transmitirlo a la nueva conversación en una variable dinámica {{previous_topics}}.
- Esto crea una experiencia fluida en la que el agente «recuerda» interacciones anteriores.