Trazas de OpenTelemetry
ElevenLabs Agents puede exportar conversaciones como trazas de OpenTelemetry codificadas como JSON de OTLP (resourceSpans). Reenvíalas a Datadog, Grafana Tempo, Honeycomb o cualquier backend que procese OTLP.
ElevenLabs no envía trazas directamente a tu recopilador de OTLP. Recibes JSON con formato OTLP desde un webhook, una API o un WebSocket de monitorización, y lo reenvías a tu backend.
Resumen
Exporta trazas desde tres vías. Las tres comparten el mismo ID de traza por conversación y la nomenclatura de atributos elevenlabs.*. La forma y la temporización de los spans difieren entre post-llamada/GET (basado en transcripciones) y monitorización (basado en eventos).
Vías de exportación
Elegir una vía
- Todas las llamadas completadas en tu almacén de datos: webhook post-llamada
- Exportación puntual o reparación: GET de conversación con
format=opentelemetry - Interfaz de supervisión o alertas en directo: WebSocket de monitorización
- Cronología completa y detallada a posteriori: webhook post-llamada o GET de conversación
- Eventos de herramientas, MCP o medidas de protección a medida que ocurren: WebSocket de monitorización
Usa traceId o elevenlabs.conversation_id para unir datos entre vías. Combina la monitorización para operaciones en directo, los webhooks para análisis duradero y GET para rellenar datos.
Necesitas un recopilador o proveedor de observabilidad compatible con OTLP para cada vía. Los webhooks post-llamada requieren una ruta de webhook del espacio de trabajo. La API GET y el WebSocket de monitorización tienen cada uno sus propios ámbitos de clave de API y configuración; consulta las secciones siguientes.
Webhook post-llamada
Cuando termina una conversación, ElevenLabs envía una solicitud POST si hay configurado un webhook post-llamada, events incluye transcript y transcript_format es opentelemetry.
El type del webhook es post_call_transcription_otel (no post_call_transcription, que devuelve transcripciones JSON).
Carga útil del webhook
Activar transcripciones de OpenTelemetry
Configurar desde el panel
Configurar mediante la CLI
Configurar mediante la API
Crear un webhook de espacio de trabajo
En el panel de ElevenAgents, crea un webhook de espacio de trabajo con tu URL HTTPS y autenticación.
Vincular el webhook post-llamada
Abre la configuración de Agents, asigna el webhook como webhook post-llamada, activa el evento Transcripción y habilita las Cargas útiles de transcripción de OpenTelemetry.

Los webhooks de transcripción de OpenTelemetry no incluyen audio. Usa post_call_audio si necesitas
grabaciones.
Devuelve 2xx para indicar éxito. Los códigos 4xx y 5xx cuentan como fallos.
Los reintentos se aplican a los webhooks de transcripción (incluido OpenTelemetry) y audio solo cuando Activar reintentos está habilitado para el webhook del espacio de trabajo. Los errores transitorios (** 5xx **, **429 **, **408 **) se reintentan hasta 5 veces; los 4xx no. Los fallos repetidos pueden desactivar automáticamente el webhook. Consulta Webhooks post-llamada para conocer los detalles y las excepciones HIPAA.
Entrega
Forma de la traza
Cada entrega es una traza completa: un span raíz y sus elementos secundarios.
Los spans de respuesta del agente incluyen elevenlabs.reasoning_content cuando la entrega contiene un resumen de razonamiento.
La temporización procede de time_in_call_secs de la transcripción y de los metadatos de la llamada. El span raíz establece elevenlabs.source = post_call_webhook y el estado ERROR cuando la llamada no terminó con una desconexión normal del cliente.
GET de conversación
Solicita el formato OpenTelemetry en Obtener conversación para recibir el mismo objeto otlp_traces que en el webhook post-llamada de OpenTelemetry, además del modelo completo de conversación.
Requiere una clave de API con CONVAI_READ. Con format=json (predeterminado), se omite otlp_traces.
Los nombres de span esperados incluyen elevenlabs.conversation, elevenlabs.recv.user_transcript y elevenlabs.recv.agent_response.
WebSocket de monitorización
La monitorización en tiempo real requiere un espacio de trabajo Enterprise o la marca de funcionalidad realtime-monitoring.
Consulta Monitorización en tiempo real para ver la configuración,
los comandos de control y los requisitos de acceso.
Transmite datos de trazas de OpenTelemetry como JSON de OTLP mientras hay una conversación en curso. Cada mensaje es un pequeño lote de resourceSpans, no una traza única al finalizar la llamada.
La autenticación requiere CONVAI_WRITE, xi-api-key (o Authorization) y acceso de EDITOR al espacio de trabajo del agente. Conéctate después de que empiece la conversación.
Activar la monitorización en el agente
Configura monitoring_enabled: true y monitoring_events antes de la llamada. Consulta Monitorización en tiempo real.
Protocolo de sesión
- Conéctate con encabezados de autenticación.
- Recibe
{"type": "connected"}. - Recibe un lote de spans raíz (
elevenlabs.conversation,elevenlabs.source=monitoring). - Recibe el historial almacenado en caché (aproximadamente los últimos 100 eventos) y, después,
{"type": "history_complete"}. - Recibe lotes de spans en directo a medida que se producen los eventos.
Con events_format=json (predeterminado), el WebSocket devuelve eventos de cliente sin procesar en lugar de resourceSpans. Los comandos de control coinciden con los de Monitorización en tiempo real.
Forma de la traza
Los eventos estructurados se asignan a atributos específicos (por ejemplo, elevenlabs.user.text, elevenlabs.agent.text). Los eventos desconocidos usan elevenlabs.event.data con JSON truncado.
No asumas que el orden de los eventos coincide con el orden de habla. Correlaciona los spans en directo con los datos post-llamada usando
el mismo traceId.
Ejemplo de conexión
Estructura JSON de OTLP
Las trazas de OpenTelemetry de todas las vías comparten el mismo diseño de lote JSON de OTLP:
Limitaciones
- No hay envío directo a tu ruta gRPC de OTLP.
- Las cargas útiles son JSON con formato de exportación de OTLP, no protobuf sin procesar en la transmisión.