Latency Report

Provides a detailed STT, LLM, and TTS latency breakdown for each turn.
Voice Agent

The LatencyReport message is the richest latency signal the Agent API emits. The server sends it after each turn with a breakdown of latency across the full STT → LLM → TTS pipeline.

Purpose

LatencyReport lets you attribute latency to the right stage — for example, separating LLM time-to-first-token from TTS time, and isolating tool-call and thinking overhead. It is fully supported and sent automatically; no configuration flag is required to receive it.

Fields

All fields are floats in seconds, and each is optional (omitted when not applicable to that turn), so log defensively rather than assuming every field is present on every report.

FieldTypeWhat It Measures
typestringMust be "LatencyReport".
stt_latencynumberSpeech-to-text: audio received to transcript produced.
ttt_token_latencynumberTime to first token of any type (text, tool call, or thinking).
ttt_text_latencynumberTime to first text token from the LLM.
ttt_tool_latencynumberTime to first tool-call token from the LLM.
ttt_thinking_latencynumberTime to first thinking token from the LLM.
tts_latencynumberText-to-speech: first text token to first audio byte.
total_latencynumberEnd-to-end: user utterance end to first audio byte.

Example Payload

JSON
1{
2 "type": "LatencyReport",
3 "stt_latency": 0.12,
4 "ttt_token_latency": 0.34,
5 "ttt_text_latency": 0.36,
6 "ttt_tool_latency": 0.41,
7 "ttt_thinking_latency": 0.29,
8 "tts_latency": 0.18,
9 "total_latency": 0.64
10}

Use Cases

Capture LatencyReport the same way as every other frame to chart and troubleshoot latency:

  • Attribute end-to-end latency to the STT, LLM, or TTS stage.
  • Separate LLM time-to-first-token from TTS time.
  • Isolate tool-call and thinking overhead from text generation.

For an end-to-end logging pattern that persists every WebSocket frame, see Session Observability.