OpenTelemetryトレース
OpenTelemetryトレースをOTLP JSONとして可観測性スタックにエクスポートします。
ElevenLabs Agentsでは、会話をOpenTelemetryトレースとして、OTLP JSON(resourceSpans)形式でエクスポートできます。Datadog、Grafana Tempo、Honeycomb、またはOTLPを取り込む任意のバックエンドに転送できます。
ElevenLabsがトレースをOTLPコレクターへ直接プッシュすることはありません。Webhook、API、またはモニタリングWebSocketからOTLP形式のJSONを受け取り、バックエンドへ転送します。
概要
トレースは3つの経路からエクスポートできます。いずれも会話ごとに同じトレースIDとelevenlabs.*属性名を共有します。スパンの形状とタイミングは、通話後/GET(文字起こしベース)とモニタリング(イベントベース)で異なります。
エクスポート経路
経路の選び方
- データウェアハウス内のすべての完了済み通話:通話後Webhook
- 単発のエクスポートまたは修復:
format=opentelemetryを指定した会話GET - ライブ監視UIまたはアラート:モニタリングWebSocket
- 事後に完全なタイムラインを取得:通話後Webhookまたは会話GET
- ツール、MCP、ガードレールのイベントをリアルタイムで取得:モニタリングWebSocket
traceIdまたはelevenlabs.conversation_idを使用して、経路をまたいでデータを結合できます。ライブ運用にはモニタリング、永続的な分析にはWebhook、バックフィルにはGETを組み合わせてください。
どの経路でも、OTLP対応のコレクターまたは可観測性ベンダーが必要です。通話後WebhookにはワークスペースのWebhookエンドポイントが必要です。GET APIとモニタリングWebSocketにはそれぞれ固有のAPIキースコープとセットアップが必要です。詳しくは以下のセクションを参照してください。
通話後Webhook
会話が終了すると、通話後Webhookが設定され、eventsにtranscriptが含まれ、transcript_formatがopentelemetryに設定されている場合、ElevenLabsはPOSTリクエストを送信します。
Webhookのtypeはpost_call_transcription_otelです(JSON文字起こしを返すpost_call_transcriptionではありません)。
Webhookペイロード
OpenTelemetry文字起こしを有効にする
ダッシュボードで設定
CLIで設定
APIで設定
通話後Webhookを紐付ける
Agents設定を開き、Webhookを通話後Webhookとして割り当て、Transcriptイベントを有効にして、OpenTelemetry transcript payloadsをオンにします。

OpenTelemetry文字起こしWebhookにはオーディオは含まれません。録音が必要な場合はpost_call_audioを使用してください。
成功時は2xxを返します。4xxと5xxは失敗として扱われます。
文字起こし(OpenTelemetryを含む)とオーディオWebhookの再試行は、ワークスペースWebhookでEnable retriesがオンの場合にのみ適用されます。一時的なエラー(5xx、429、408)は最大5回再試行されます。4xxは再試行されません。失敗が繰り返されるとWebhookが自動的に無効になる場合があります。詳細とHIPAAの例外については、通話後Webhookを参照してください。
配信
トレースの構造
各配信は、ルートスパンとその子スパンからなる完全な1つのトレースです。
配信に推論サマリーが含まれる場合、エージェント応答スパンにはelevenlabs.reasoning_contentが含まれます。
タイミングは文字起こしのtime_in_call_secsと通話メタデータから取得されます。通話が通常のクライアント切断で終了しなかった場合、ルートスパンはelevenlabs.source = post_call_webhookおよびステータスERRORを設定します。
会話GET
会話を取得でOpenTelemetry形式をリクエストすると、通話後OpenTelemetry Webhookと同じotlp_tracesオブジェクトに加え、完全な会話モデルを取得できます。
CONVAI_READを持つAPIキーが必要です。format=json(デフォルト)では、otlp_tracesは省略されます。
想定されるスパン名には、elevenlabs.conversation、elevenlabs.recv.user_transcript、elevenlabs.recv.agent_responseが含まれます。
モニタリングWebSocket
リアルタイムモニタリングには、エンタープライズワークスペースまたはrealtime-monitoring機能フラグが必要です。設定、制御コマンド、アクセス要件については、リアルタイムモニタリングを参照してください。
会話の進行中に、OpenTelemetryトレースデータをOTLP JSONとしてストリーミングします。各メッセージは小さなresourceSpansバッチであり、通話終了時の単一トレースではありません。
認証にはCONVAI_WRITE、xi-api-key(またはAuthorization)、およびエージェントワークスペースのEDITORアクセスが必要です。会話開始後に接続してください。
セッションプロトコル
- 認証ヘッダーを付けて接続します。
{"type": "connected"}を受信します。- ルートスパンバッチ(
elevenlabs.conversation、elevenlabs.source=monitoring)を受信します。 - キャッシュされた履歴(直近約100イベント)を受信後、
{"type": "history_complete"}を受信します。 - イベントの発生に応じてライブスパンバッチを受信します。
events_format=json(デフォルト)では、WebSocketはresourceSpansではなく生のクライアントイベントを返します。制御コマンドはリアルタイムモニタリングと同じです。
トレースの構造
構造化イベントは専用属性にマッピングされます(例:elevenlabs.user.text、elevenlabs.agent.text)。不明なイベントでは、切り詰められたJSONを含むelevenlabs.event.dataが使用されます。
イベント順序が発話順序と一致するとは限りません。同じtraceIdを使用して、ライブスパンと通話後データを関連付けてください。
接続例
OTLP JSON構造
すべての経路からのOpenTelemetryトレースは、同じOTLP JSONバッチレイアウトを共有します。
制限事項
- OTLP gRPCエンドポイントへの直接プッシュには対応していません。
- ペイロードはOTLPエクスポート形式のJSONであり、ワイヤ上の生protobufではありません。