Traces OpenTelemetry
Exportez des traces OpenTelemetry vers votre pile d’observabilité au format JSON OTLP.
Les agents ElevenLabs peuvent exporter les conversations sous forme de traces OpenTelemetry encodées en OTLP JSON (resourceSpans). Transférez-les vers Datadog, Grafana Tempo, Honeycomb ou tout backend qui ingère OTLP.
ElevenLabs n’envoie pas directement les traces vers votre collecteur OTLP. Vous recevez du JSON au format OTLP depuis un webhook, une API ou un WebSocket de monitoring, puis le transférez vers votre backend.
Vue d’ensemble
Exportez les traces depuis trois sources. Elles partagent toutes le même ID de trace par conversation et la même nomenclature d’attributs elevenlabs.*. La structure et le minutage des spans diffèrent entre le post-appel/GET (basé sur la transcription) et le monitoring (basé sur les événements).
Sources d’exportation
Choisir une source
- Chaque appel terminé dans votre entrepôt de données : webhook post-appel
- Export ou correction ponctuels : GET de la conversation avec
format=opentelemetry - Interface de supervision en direct ou alertes : WebSocket de monitoring
- Chronologie complète a posteriori : webhook post-appel ou GET de la conversation
- Événements d’outil, MCP ou de garde-fou au moment où ils surviennent : WebSocket de monitoring
Utilisez traceId ou elevenlabs.conversation_id pour relier les données entre les sources. Combinez le monitoring pour les opérations en direct, les webhooks pour les analyses durables et GET pour le remplissage de données.
Vous avez besoin d’un collecteur compatible OTLP ou d’un fournisseur d’observabilité pour chaque source. Les webhooks post-appel nécessitent un endpoint de webhook du Workspace. L’API GET et le WebSocket de monitoring disposent chacun de leurs propres périmètres de clé API et de leur propre configuration, consultez les sections ci-dessous.
Webhook post-appel
Une fois une conversation terminée, ElevenLabs envoie une requête POST lorsqu’un webhook post-appel est configuré, que events inclut transcript et que transcript_format est défini sur opentelemetry.
Le type du webhook est post_call_transcription_otel et non post_call_transcription, qui renvoie des transcriptions JSON.
Charge utile du webhook
Activer les transcriptions OpenTelemetry
Configurer via le Dashboard
Configurer via la CLI
Configurer via l'API
Créer un webhook de Workspace
Dans le Dashboard ElevenAgents, créez un webhook de Workspace avec votre URL HTTPS et votre authentification.
Associer le webhook post-appel
Ouvrez les paramètres des agents, attribuez le webhook comme webhook post-appel, activez l’événement Transcript, puis activez les charges utiles de transcription OpenTelemetry.

Les webhooks de transcription OpenTelemetry n’incluent pas l’audio. Utilisez post_call_audio si vous avez besoin
d’enregistrements.
Renvoyez 2xx en cas de réussite. Les réponses 4xx et 5xx sont considérées comme des échecs.
Les nouvelles tentatives s’appliquent aux webhooks de transcription, y compris OpenTelemetry, uniquement lorsque Activer les nouvelles tentatives est activé pour le webhook du Workspace. Les erreurs transitoires (5xx, 429, 408) font l’objet de jusqu’à 5 nouvelles tentatives ; les erreurs 4xx n’en font pas l’objet. Les webhooks audio ne font jamais l’objet de nouvelles tentatives. Des échecs répétés peuvent désactiver automatiquement le webhook. Consultez Webhooks post-appel pour les détails et les exceptions HIPAA.
Livraison
Structure de la trace
Chaque livraison correspond à une trace complète : un span racine et des spans enfants.
Les spans de réponse de l’agent incluent elevenlabs.reasoning_content lorsque la livraison contient un résumé du raisonnement.
Le minutage provient de time_in_call_secs de la transcription et des métadonnées de l’appel. Le span racine définit elevenlabs.source = post_call_webhook et le statut ERROR lorsque l’appel ne s’est pas terminé par une déconnexion normale du client.
GET de la conversation
Demandez le format OpenTelemetry avec Obtenir une conversation pour recevoir le même objet otlp_traces que le webhook OpenTelemetry post-appel, ainsi que le modèle complet de la conversation.
Nécessite une clé API avec CONVAI_READ. Avec format=json (par défaut), otlp_traces est omis.
Les noms de span attendus incluent elevenlabs.conversation, elevenlabs.recv.user_transcript et elevenlabs.recv.agent_response.
WebSocket de monitoring
Le monitoring en temps réel nécessite un Workspace Enterprise ou le feature flag realtime-monitoring.
Consultez Monitoring en temps réel pour la configuration,
les commandes de contrôle et les exigences d’accès.
Diffusez les données de trace OpenTelemetry en OTLP JSON pendant qu’une conversation est en cours. Chaque message est un petit lot resourceSpans, et non une trace unique de fin d’appel.
L’authentification nécessite CONVAI_WRITE, xi-api-key (ou Authorization) et un accès EDITOR au Workspace de l’agent. Connectez-vous après le début de la conversation.
Activer le monitoring sur l’agent
Définissez monitoring_enabled: true et configurez monitoring_events avant l’appel. Consultez Monitoring en temps réel.
Se connecter avec le format OpenTelemetry
Ajoutez events_format=opentelemetry à l’URL du WebSocket de monitoring.
Les événements VAD, de probabilité de tour et de ping ne sont pas disponibles lorsque des monitoring_events personnalisés sont
configurés. Le flux inclut uniquement le texte et les métadonnées, pas l’audio brut.
Protocole de session
- Connectez-vous avec des en-têtes d’authentification.
- Recevez
{"type": "connected"}. - Recevez un lot de span racine (
elevenlabs.conversation,elevenlabs.source=monitoring). - Recevez l’historique mis en cache, environ les 100 derniers événements, puis
{"type": "history_complete"}. - Recevez des lots de spans en direct à mesure que les événements surviennent.
Avec events_format=json (par défaut), le WebSocket renvoie les événements clients bruts au lieu de resourceSpans. Les commandes de contrôle correspondent à Monitoring en temps réel.
Structure de la trace
Les événements structurés sont associés à des attributs dédiés, par exemple elevenlabs.user.text, elevenlabs.agent.text. Les événements inconnus utilisent elevenlabs.event.data avec du JSON tronqué.
Ne supposez pas que l’ordre des événements correspond à l’ordre de prise de parole. Corrélez les spans en direct aux données post-appel à l’aide
du même traceId.
Exemple de connexion
Structure JSON OTLP
Les traces OpenTelemetry de toutes les sources partagent la même structure de lot JSON OTLP :
Limites
- Aucun envoi direct vers votre endpoint OTLP gRPC.
- Les charges utiles sont du JSON au format d’export OTLP, et non du protobuf brut transmis sur le réseau.