OpenTelemetry-Traces
Exportieren Sie OpenTelemetry-Traces als OTLP-JSON in Ihren Observability-Stack.
ElevenLabs Agents können Gespräche als OpenTelemetry-Traces exportieren, die als OTLP-JSON (resourceSpans) kodiert sind. Leiten Sie sie an Datadog, Grafana Tempo, Honeycomb oder ein beliebiges Backend weiter, das OTLP aufnimmt.
ElevenLabs überträgt Traces nicht direkt an Ihren OTLP-Collector. Sie erhalten JSON im OTLP-Format über einen Webhook, eine API oder einen Monitoring-WebSocket und leiten es an Ihr Backend weiter.
Übersicht
Exportieren Sie Traces über drei Schnittstellen. Alle drei verwenden dieselbe Trace-ID pro Gespräch und die Attributbenennung elevenlabs.*. Die Struktur und das Timing der Spans unterscheiden sich zwischen Post-Call/GET (transkriptbasiert) und Monitoring (ereignisbasiert).
Exportschnittstellen
Auswahl einer Schnittstelle
- Jeder abgeschlossene Anruf in Ihrem Data Warehouse: Post-Call-Webhook
- Einmaliger Export oder Korrektur: GET Conversation mit
format=opentelemetry - Live-Supervisor-UI oder Warnmeldungen: Monitoring-WebSocket
- Vollständige Zeitachse im Nachhinein: Post-Call-Webhook oder GET Conversation
- Tool-, MCP- oder Guardrail-Ereignisse in Echtzeit: Monitoring-WebSocket
Verwenden Sie traceId oder elevenlabs.conversation_id, um Daten über Schnittstellen hinweg zu verknüpfen. Kombinieren Sie Monitoring für Live-Betrieb, Webhooks für dauerhafte Analysen und GET für Backfill.
Für jede Schnittstelle benötigen Sie einen OTLP-fähigen Collector oder Observability-Anbieter. Post-Call-Webhooks erfordern einen Workspace-Webhook-Endpunkt. Die GET API und der Monitoring-WebSocket haben jeweils eigene API-Key-Berechtigungen und Einstellungen. Weitere Informationen finden Sie in den folgenden Abschnitten.
Post-Call-Webhook
Nach Abschluss eines Gesprächs sendet ElevenLabs eine POST-Anfrage, wenn ein Post-Call-Webhook konfiguriert ist, events den Wert transcript enthält und transcript_format auf opentelemetry gesetzt ist.
Der Webhook-type lautet post_call_transcription_otel (nicht post_call_transcription, das JSON-Transkripte zurückgibt).
Webhook-Payload
OpenTelemetry-Transkripte aktivieren
Über das Dashboard konfigurieren
Über die CLI konfigurieren
Über die API konfigurieren
Workspace-Webhook erstellen
Erstellen Sie im ElevenAgents Dashboard einen Workspace-Webhook mit Ihrer HTTPS-URL und Authentifizierung.
Post-Call-Webhook zuweisen
Öffnen Sie die Agent-Einstellungen, weisen Sie den Webhook als Post-Call-Webhook zu, aktivieren Sie das Ereignis Transcript und schalten Sie OpenTelemetry-Transkript-Payloads ein.

OpenTelemetry-Transkript-Webhooks enthalten kein Audio. Verwenden Sie post_call_audio, wenn Sie
Aufzeichnungen benötigen.
Geben Sie für Erfolg 2xx zurück. 4xx und 5xx gelten als Fehler.
Wiederholungen gelten für Transkript-Webhooks (einschließlich OpenTelemetry) und Audio-Webhooks nur, wenn Wiederholungen aktivieren für den Workspace-Webhook eingeschaltet ist. Vorübergehende Fehler (** 5xx **, **429 **, **408 **) werden bis zu 5-mal wiederholt; 4xx nicht. Wiederholte Fehler können den Webhook automatisch deaktivieren. Details und HIPAA- Ausnahmen finden Sie unter Post-Call-Webhooks.
Zustellung
Trace-Struktur
Jede Zustellung ist ein vollständiger Trace: ein Root-Span plus untergeordnete Spans.
Agentenantwort-Spans enthalten elevenlabs.reasoning_content, wenn die Zustellung eine Reasoning-Zusammenfassung enthält.
Das Timing basiert auf time_in_call_secs des Transkripts und Anrufmetadaten. Der Root-Span setzt elevenlabs.source = post_call_webhook und den Status ERROR, wenn der Anruf nicht mit einer normalen Client-Trennung endete.
GET Conversation
Fordern Sie das OpenTelemetry-Format bei Get conversation an, um dasselbe otlp_traces-Objekt wie beim OpenTelemetry-Post-Call-Webhook sowie das vollständige Gesprächsmodell zu erhalten.
Erfordert einen API-Key mit CONVAI_READ. Mit format=json (Standard) wird otlp_traces ausgelassen.
Erwartete Span-Namen sind unter anderem elevenlabs.conversation, elevenlabs.recv.user_transcript und elevenlabs.recv.agent_response.
Monitoring-WebSocket
Echtzeit-Monitoring erfordert einen Enterprise-Workspace oder das Feature-Flag realtime-monitoring.
Konfiguration, Steuerbefehle und Zugriffsanforderungen finden Sie unter Echtzeit-Monitoring.
Streamen Sie OpenTelemetry-Trace-Daten als OTLP-JSON, während ein Gespräch läuft. Jede Nachricht ist ein kleiner resourceSpans-Batch und kein einzelner Trace am Ende des Anrufs.
Für die Authentifizierung sind CONVAI_WRITE, xi-api-key (oder Authorization) und EDITOR-Zugriff auf den Agenten-Workspace erforderlich. Stellen Sie die Verbindung her, nachdem das Gespräch gestartet ist.
Monitoring für den Agenten aktivieren
Setzen Sie vor dem Anruf monitoring_enabled: true und konfigurieren Sie monitoring_events. Siehe Echtzeit-Monitoring.
Sitzungsprotokoll
- Stellen Sie die Verbindung mit Authentifizierungs-Headern her.
- Empfangen Sie
{"type": "connected"}. - Empfangen Sie einen Root-Span-Batch (
elevenlabs.conversation,elevenlabs.source=monitoring). - Empfangen Sie den zwischengespeicherten Verlauf (etwa die letzten 100 Ereignisse), dann
{"type": "history_complete"}. - Empfangen Sie Live-Span-Batches, sobald Ereignisse auftreten.
Mit events_format=json (Standard) gibt der WebSocket rohe Client-Ereignisse statt resourceSpans zurück. Steuerbefehle entsprechen Echtzeit-Monitoring.
Trace-Struktur
Strukturierte Ereignisse werden speziellen Attributen zugeordnet (zum Beispiel elevenlabs.user.text, elevenlabs.agent.text). Unbekannte Ereignisse verwenden elevenlabs.event.data mit gekürztem JSON.
Gehen Sie nicht davon aus, dass die Ereignisreihenfolge der Sprechreihenfolge entspricht. Korrelieren Sie Live-Spans mit Post-Call-Daten über
dieselbe traceId.
Beispielverbindung
OTLP-JSON-Struktur
OpenTelemetry-Traces aller Schnittstellen verwenden dasselbe OTLP-JSON-Batch-Layout:
Einschränkungen
- Kein direkter Push an Ihren OTLP-gRPC-Endpunkt.
- Payloads sind JSON im OTLP-Exportformat, nicht rohe Protobuf-Daten bei der Übertragung.