OpenAI Realtime
OpenAIRealtime is the engine wrapper for OpenAI’s Realtime API — a single WebSocket session that handles speech-in, reasoning, and speech-out, with sub-500 ms typical turn latency.
For the basic engine: new OpenAIRealtime(...) quickstart, see Engines. This page documents the full configuration surface: every supported model, the streaming transcription options, and the new reasoningEffort tier.
Models
Pass any of these tomodel: on new OpenAIRealtime(...). Pricing is auto-resolved per model from DEFAULT_PRICING — no manual override is required (see Metrics).
The same identifiers are exposed as a const object for editor autocomplete:
gpt-realtime-translate is intentionally not supported by Patter’s Realtime engine. It lives on a different OpenAI endpoint (/v1/realtime/translations), does not accept tool calls or response.create, and would invalidate the Agent contract Patter exposes. Real-time translation, if added, will land as a dedicated feature — not as a Realtime model variant.Reasoning effort
gpt-realtime-2 accepts a configurable reasoning tier. Patter exposes it as the reasoningEffort constructor option on the lower-level OpenAIRealtimeAdapter:
When set, Patter injects
session.reasoning = { effort: ... } into the session.update payload. When omitted, the field is not sent and OpenAI’s server default applies. The field is a no-op on models that ignore it (for example gpt-realtime-mini), so it’s safe to leave configured across model swaps.
Streaming transcription
The Realtime session can run an inline Whisper-family model on inbound audio so you get text deltas alongside the conversation. The model is set viainputAudioTranscriptionModel:
Same const-object form:
Worked example — gpt-realtime-2 with low reasoning + streaming whisper
Constructing the lower-level OpenAIRealtimeAdapter directly gives access to every field. This is what new OpenAIRealtime({ engine }) builds under the hood; reach for it when you need reasoningEffort or a non-default transcription model.
Backward compatibility
- Engine marker default:
model: "gpt-4o-mini-realtime-preview"(unchanged since first release). The underlyingOpenAIRealtimeAdapterfalls back togpt-realtime-minionly when constructed without a model — theOpenAIRealtimewrapper always passes a model through, so the wire default isgpt-4o-mini-realtime-preview. Passmodel: "gpt-realtime-mini"explicitly to upgrade. inputAudioTranscriptionModel: "whisper-1",reasoningEffort: undefined(server default).- All existing
new OpenAIRealtime(...)constructions keep working without code changes. - Pricing for new models is added under
DEFAULT_PRICING.openai_realtime.models[...]. The earliernew Patter({ pricing: { openai_realtime: DEFAULT_PRICING.openai_realtime_2 } })workaround is no longer needed — just construct withmodel: "gpt-realtime-2"(or use theOpenAIRealtime2engine for the GA wire shape).
What’s Next
Engines
All engine classes side by side.
Metrics
Per-call cost breakdown and the model-aware pricing table.
Agents
Configure system prompts, tools, and first messages.
Tools
Function calling inside a Realtime session.

