config.realtime names one speech-to-speech model that hears and speaks audio directly, replacing the stt → llm → tts cascade. It gives the shortest time to first sound. In exchange, fixed lines are paraphrasable, there is no failover, and several settings are refused. Voice and video only.
Use the cascade unless latency is the product. A realtime model suits a demo, a companion or a practice partner, where approximate wording and no failover are acceptable.
realtime set clears stt, llm and tts to null; whatever you sent in them is dropped. To return to the cascade, send realtime: null with the three slots.
There is no
fallback, reasoning_effort, priority, builtin_tools or expressive.
Fixed lines are instructions
With no text-to-speech stage, a fixed line is delivered to the model as “say this, word for word”. The model usually complies but may reword it. This applies to thegreeting, the say operation and a handoff message. {{…}} substitution still happens first.
Consequences:
- A quoted price, reference number or legal sentence is not guaranteed. Use the cascade.
recording.noticeis refused:a recording notice needs a cascade pipeline (STT + LLM + TTS)….greeting_interruptible: falseis refused: the provider detects interruptions itself.
Turn detection moves to the provider
The provider’s server-side voice detection commits each turn.
See turn handling.
No failover
When the provider fails mid-call, the error is recorded on the call as asession.error event. A recoverable error does not end the call; an unrecoverable one ends it with close reason error. If that is unacceptable, use the cascade with an llm.fallback.
Post-call analysis
Analysis normally runs on the agent’s ownllm. A realtime agent has none, so it runs on the first catalog language model from the same provider, on the same key. Set analysis.model to choose another. See call analysis.
Per-model differences
Read these from the catalog entry rather than assuming:supports_instruction_update: false: the model refuses new instructions once connected, so an agent on it cannot havehandoffs(refused on save).vision: false: the model cannot read images. Publishing warns. The xAI Grok Voice models accept an image and answer as if they saw it, so treat the flag as binding.languagesempty: the model has no language setting; steer it from the prompt. See language.pricing: realtime rates are split into text in, cached text in, audio in, cached audio in, text out, audio out, andper_session_minute. A model priced per session minute has zero token rates.openai/gpt-live-1is full duplex: it takes no silence window and no interruption settings, and it runs its reasoning and tool calls on a second OpenAI language model billed at that model’s token rates, as a separate LLM line on the call.
Where it is refused
Everything else works: tools, MCP servers, handoffs between realtime agents,
vars, userdata, conversation memory, background audio, noise cancellation, recording, analysis, webhooks, batch calling, phone numbers and video avatars.
Next
Models
The catalog and the cascade’s model slots.
Voices
Browsing a realtime model’s voice roster.