Skip to main content

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 to model: 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.
Higher reasoning tiers add measurable latency to every turn. Stick to "low" unless you’ve profiled the call and confirmed the model needs more.

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 via inputAudioTranscriptionModel: 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.
The reasoningEffort and inputAudioTranscriptionModel options live on OpenAIRealtimeAdapter. The shorthand new OpenAIRealtime({ model }) engine wrapper currently exposes only apiKey, voice, and model — use the adapter directly when you need the new fields.

Backward compatibility

  • Engine marker default: model: "gpt-4o-mini-realtime-preview" (unchanged since first release). The underlying OpenAIRealtimeAdapter falls back to gpt-realtime-mini only when constructed without a model — the OpenAIRealtime wrapper always passes a model through, so the wire default is gpt-4o-mini-realtime-preview. Pass model: "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 earlier new Patter({ pricing: { openai_realtime: DEFAULT_PRICING.openai_realtime_2 } }) workaround is no longer needed — just construct with model: "gpt-realtime-2" (or use the OpenAIRealtime2 engine 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.