GPT Realtime 2.1 vs GPT Realtime 2.1 Mini
O GPT Realtime 2.1 é oferecido por convite. Os valores abaixo são as tarifas em tempo real, mas as chamadas só funcionam depois que o seu espaço de trabalho recebe a permissão; peça acesso antes de desenvolver com base nesta comparação.
O GPT Realtime 2.1 Mini é oferecido por convite. Os valores abaixo são as tarifas em tempo real, mas as chamadas só funcionam depois que o seu espaço de trabalho recebe a permissão; peça acesso antes de desenvolver com base nesta comparação.
Qual usar e quando
O nível mini é mais barato em todas as linhas - $0.6 e $2.4 por milhão de tokens de texto contra $4 e $24, e $10 e $20 por milhão de áudio na entrada e saída contra $32 e $64 - ou seja, cerca de 3x menos no áudio e quase 7x na entrada de texto. Os dois trazem contexto de sessão de 128K com fala-para-fala, uso de ferramentas e cache de prompts; o modelo completo documenta ainda esforço de raciocínio configurável e tratamento de interrupções. Escolha o mini para volume, o modelo completo quando quiser ajustar o esforço de raciocínio por sessão.
Preços
| GPT Realtime 2.1 | GPT Realtime 2.1 Mini | Δ | |
|---|---|---|---|
| Entrada de áudio / 1M tokens | $32 | $10 | 3.2× |
| Saída de áudio / 1M tokens | $64 | $20 | 3.2× |
| Leitura de cache de áudio / 1M tokens | $0.4 | $0.3 | 1.3× |
| Entrada de texto / 1M tokens | $4 | $0.6 | 6.7× |
| Saída de texto / 1M tokens | $24 | $2.4 | 10× |
| Escrita de cache | sem cobrança separada | sem cobrança separada | - |
Tarifas do catálogo em tempo real, lidas no momento do build; a página de cada modelo traz a tabela de preços atual.
Onde cada um fica: preço por 1M tokens de áudio entre os 6 modelos de voz para voz em tempo real com esta unidade de cobrança (escala logarítmica)
Capacidades
| GPT Realtime 2.1 | GPT Realtime 2.1 Mini | |
|---|---|---|
| Cache de prompts | implícito (automático) | implícito (automático) |
| Tempo de vida do cache | 5-10m, up to 1h | 5-10m, up to 1h |
| Prefixo mínimo em cache | 1024 tokens | 1024 tokens |
Especificações
| GPT Realtime 2.1 | GPT Realtime 2.1 Mini | |
|---|---|---|
| Modalidades de entrada | texto áudio | texto áudio |
| Modalidades de saída | texto áudio | texto áudio |
| Lançamento | 2026-07-06 | 2026-07-06 |
| Corte de conhecimento | 2024-09 | 2024-09 |
| Capacidades da sessão |
|
|
| Janela de contexto | 128K | 128K |
As especificações são transcritas da documentação de cada provedor; quando um provedor não publica um dado, a linha é omitida, e não inferida. Fontes completas: GPT Realtime 2.1 · GPT Realtime 2.1 Mini
Troque de um para o outro mudando uma linha
Os dois ids estão em todas as abas abaixo; o par de linhas destacado é a única alteração. O endpoint, a chave e o formato da requisição são os mesmos.
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1"
# URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini" # descomente esta linha, comente a linha acima
# 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", {
// const ws = new WebSocket("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini", { // descomente esta linha, comente a linha acima
// 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' <<'EOF'
# 'wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini' <<'EOF' # descomente esta linha, comente a linha acima
{"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", h)
// c, _, err := websocket.DefaultDialer.Dial("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini", h) // descomente esta linha, comente a linha acima
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"), new WebSocket.Listener() {
// .buildAsync(URI.create("wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini"), new WebSocket.Listener() { // descomente esta linha, comente a linha acima
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);Perguntas frequentes
Qual é mais barato, GPT Realtime 2.1 ou GPT Realtime 2.1 Mini?
GPT Realtime 2.1 Mini sai mais barato na linha “Entrada de áudio / 1M tokens” ($10 contra $32, 3.2× de diferença). Outras linhas podem pender para o outro lado: a tabela acima mostra todos os preços, e o custo real depende do seu mix de uso.
Posso fazer um teste A/B de GPT Realtime 2.1 contra GPT Realtime 2.1 Mini sem duas integrações?
Sim. Os dois são servidos pelo mesmo endpoint compatível com OpenAI, com uma única chave de API. Para trocar, basta mudar uma linha, a string do modelo; assim você pode direcionar uma parte do tráfego para cada um e comparar as contas diretamente.
GPT Realtime 2.1 e GPT Realtime 2.1 Mini suportam cache de prompts?
Sim. Os dois cobram as leituras de cache abaixo da tarifa de entrada, então cargas de trabalho com prefixo já em cache custam menos do que os preços de tabela sugerem. Os valores exatos de leitura de cache estão na tabela de preços acima.