GPT Realtime 2.1 Mini is the cost-efficient member of OpenAI's realtime family: a distilled reasoning model for faster, lower-cost realtime voice interactions that brings reasoning and tool use to the mini tier.
- Input
- audio text $0.6/M
- Output
- audio text $2.4/M
- Audio input
- $10/M
- Audio output
- $20/M
- Cache read
- $0.06/M
- Knowledge cutoff
- 2024-09
Price in context
Where the price sits among 6 comparable models
The bar shows how this model’s price compares with every other model of the same kind on Synthorai. The cheapest and the most expensive are named at each end. These are base rates; batch, region and cache-write discounts are on the pricing page.
Specs & limits
Tokens
| Context window (vendor spec) | 128,000 |
|---|---|
| Max output (vendor spec) | 32,000 |
| Knowledge cutoff | 2024-09 |
Prompt caching
| How it caches | automatic |
|---|---|
| Min prefix | 1,024 |
| Lifetime | 5-10m, up to 1h |
Realtime
| Session | Speech-to-speech with reasoning & tool use · prompt caching · 128K context |
|---|
Model
| Modalities | audio + text → audio + text |
|---|
- Faster, lower-cost distilled realtime reasoning model bringing reasoning and tool use to the mini tier
- prompt caching supported
- 128k context
Use GPT Realtime 2.1 Mini in 30 seconds
OpenAI Realtime-compatible: connect over WebSocket and stream audio in, audio out. WS /v1/realtime
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini"
# Send ONLY the Authorization header - the beta protocol is retired.
HEADERS = {"Authorization": "Bearer sk-syn-..."}
async def main():
async with websockets.connect(URL, additional_headers=HEADERS) as ws:
# 1) configure the speech-to-speech session
await ws.send(json.dumps({
"type": "session.update",
"session": {
"type": "realtime",
"output_modalities": ["audio"],
"audio": {"output": {"voice": "alloy"}},
},
}))
# 2) send input audio (base64 PCM16), then request a spoken reply
await ws.send(json.dumps({"type": "input_audio_buffer.append", "audio": pcm16_b64}))
await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))
await ws.send(json.dumps({"type": "response.create"}))
# 3) stream the model's audio (and text) back
async for raw in ws:
ev = json.loads(raw)
if ev["type"] == "response.audio.delta":
play(base64.b64decode(ev["delta"])) # audio out
elif ev["type"] == "response.done":
break
asyncio.run(main())import WebSocket from "ws";
const ws = new WebSocket("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini", {
// Send ONLY the Authorization header — the beta protocol is retired.
headers: { Authorization: "Bearer sk-syn-..." },
});
ws.on("open", () => {
// configure the speech-to-speech session
ws.send(JSON.stringify({ type: "session.update", session: {
type: "realtime", output_modalities: ["audio"], audio: { output: { voice: "alloy" } },
} }));
// send input audio (base64 PCM16), then request a spoken reply
ws.send(JSON.stringify({ type: "input_audio_buffer.append", audio: pcm16Base64 }));
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
ws.send(JSON.stringify({ type: "response.create" }));
});
ws.on("message", (raw) => {
const ev = JSON.parse(raw.toString());
if (ev.type === "response.audio.delta") playAudio(Buffer.from(ev.delta, "base64")); // audio out
else if (ev.type === "response.done") ws.close();
});# Realtime is a WebSocket protocol - use a WS client such as websocat.
# Each line below is one OpenAI Realtime event (JSON) sent to the session.
websocat -H 'Authorization: Bearer sk-syn-...' \
'wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini' <<'EOF'
{"type":"session.update","session":{"type":"realtime","output_modalities":["audio"],"audio":{"output":{"voice":"alloy"}}}}
{"type":"input_audio_buffer.append","audio":"<base64-pcm16>"}
{"type":"input_audio_buffer.commit"}
{"type":"response.create"}
EOF
# Responses stream back as response.audio.delta (base64 audio out) … response.donepackage main
import (
"net/http"
"github.com/gorilla/websocket"
)
func main() {
h := http.Header{}
h.Set("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header — the beta protocol is retired.
c, _, err := websocket.DefaultDialer.Dial("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini", h)
if err != nil {
panic(err)
}
defer c.Close()
// configure the speech-to-speech session, send audio, request a spoken reply
c.WriteJSON(map[string]any{"type": "session.update", "session": map[string]any{
"type": "realtime", "output_modalities": []string{"audio"},
"audio": map[string]any{"output": map[string]any{"voice": "alloy"}}}})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.append", "audio": pcm16B64})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.commit"})
c.WriteJSON(map[string]any{"type": "response.create"})
for {
var ev struct {
Type string `json:"type"`
Delta string `json:"delta"`
}
if err := c.ReadJSON(&ev); err != nil {
return
}
if ev.Type == "response.audio.delta" {
playAudio(ev.Delta) // base64 audio out
} else if ev.Type == "response.done" {
return
}
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletionStage;
// JDK built-in WebSocket — no extra dependency needed.
WebSocket ws = HttpClient.newHttpClient().newWebSocketBuilder()
.header("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header — the beta protocol is retired.
.buildAsync(URI.create("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini"), new WebSocket.Listener() {
public CompletionStage<?> onText(WebSocket w, CharSequence data, boolean last) {
// handle response.audio.delta (base64 audio out) / response.done here
w.request(1);
return null;
}
}).join();
// configure the session, send input audio, then request a spoken reply
ws.sendText("{\"type\":\"session.update\",\"session\":{\"type\":\"realtime\",\"output_modalities\":[\"audio\"],\"audio\":{\"output\":{\"voice\":\"alloy\"}}}}", true);
ws.sendText("{\"type\":\"input_audio_buffer.append\",\"audio\":\"<base64-pcm16>\"}", true);
ws.sendText("{\"type\":\"input_audio_buffer.commit\"}", true);
ws.sendText("{\"type\":\"response.create\"}", true);About GPT Realtime 2.1 Mini
- It keeps the 2.1 generation's 128K-token context window and 32K max output tokens, supports function calling and prompt caching, and prices audio input at under a third of the flagship's rate.
- OpenAI's guidance for choosing between them is direct: take the full 2.1 when you want the strongest realtime reasoning, tool use, and instruction following, and this one when you want a faster, more cost-efficient option.
- It accepts audio and text input over WebRTC, WebSocket, or SIP, so the same transport choices and voice-agent patterns apply: silence-based or semantic turn detection, server-side truncation on interruption, session- or response-level tool declarations.
- OpenAI reported at least a 25% reduction in p95 latency across the realtime voice models in this release through improved caching.
- It is also the named migration target for the earlier mini realtime models, which are scheduled for shutdown in January 2027.
- That makes it the natural pick for always-on voice assistants and high-volume customer-facing voice agents.
- Synthorai exposes it via the same OpenAI-compatible /v1/realtime WebSocket endpoint as the rest of the realtime lineup.
FAQ
Is the GPT Realtime 2.1 Mini API free to try?
GPT Realtime 2.1 Mini is currently in invited beta: access is application-based rather than open signup. Apply from the Synthorai console; once approved, standard pay-as-you-go pricing applies with no subscription.
What is GPT Realtime 2.1 Mini best at?
Distilled reasoning for realtime voice; audio input under a third of the flagship's rate; keeps 128K context, tool use, and prompt caching. See the About section for the full picture from the vendor's own release notes.
How much does GPT Realtime 2.1 Mini cost?
GPT Realtime 2.1 Mini costs $0.6 per million input tokens and $2.4 per million output tokens on Synthorai. That is the provider's list price, with no platform markup. Cached input tokens bill at $0.06/M.
How do I connect to the GPT Realtime 2.1 Mini API?
GPT Realtime 2.1 Mini is a speech-to-speech model: connect over WebSocket to wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini with the OpenAI Realtime SDK (or a raw WebSocket) and stream audio in, audio out. It is not a POST /v1/audio/transcriptions file upload. Authenticate with your sk-syn key, sending only the Authorization header (the beta protocol is retired).
How do I get access to GPT Realtime 2.1 Mini?
GPT Realtime 2.1 Mini is in invited beta: request access from the Synthorai console. Once approved it works like every other model: point your OpenAI SDK at base_url="https://synthorai.io/v1" and set model="gpt-realtime-2.1-mini".
Related models
Compare
Every value on this page is transcribed from the vendor's own documentation, linked above, and carries the date it was checked. Prices are compared across the catalogue; specification values that vendors define differently are shown with the difference stated rather than charted. Nothing here is measured by us, and nothing is scored.