GPT Realtime 2.1 Mini
Prix catalogue du fournisseur : sans majoration de plateforme, paiement à l'usage. Ce sont les prix catalogue officiels. Les clients connectés peuvent voir les prix effectifs incluant les remises de l’espace de travail sur /console/pricing. Prix d'entrée effectif avec 70 % de hits de cache :$0.222/M. Mise en cache automatique par préfixe dès qu'un prompt dépasse la longueur minimale, sans changement de code ; les lectures de cache sont remisées (jusqu'à 90 % sur les modèles actuels) et il n'y a pas de frais d'écriture.
Utilisez GPT Realtime 2.1 Mini en 30 secondes
Compatible OpenAI Realtime : connectez-vous en WebSocket, audio entrant et sortant. WS /v1/realtime
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini"
HEADERS = {"Authorization": "Bearer sk-syn-...", "OpenAI-Beta": "realtime=v1"}
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": {"modalities": ["audio", "text"], "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", {
headers: { Authorization: "Bearer sk-syn-...", "OpenAI-Beta": "realtime=v1" },
});
ws.on("open", () => {
// configure the speech-to-speech session
ws.send(JSON.stringify({ type: "session.update", session: { modalities: ["audio", "text"], 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-...' -H 'OpenAI-Beta: realtime=v1' \
'wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini' <<'EOF'
{"type":"session.update","session":{"modalities":["audio","text"],"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-...")
h.Set("OpenAI-Beta", "realtime=v1")
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{"modalities": []string{"audio", "text"}, "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-...")
.header("OpenAI-Beta", "realtime=v1")
.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\":{\"modalities\":[\"audio\",\"text\"],\"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);À propos de GPT Realtime 2.1 Mini
GPT Realtime 2.1 Mini est le membre économique de la famille temps réel d'OpenAI : un modèle de raisonnement distillé plus rapide et moins coûteux pour les applications vocales temps réel, qui apporte raisonnement et usage d'outils au palier mini.
- Il conserve la fenêtre de contexte de 128K tokens et les 32K tokens de sortie maximum de la génération 2.1, prend en charge les appels de fonction et le cache de prompts, et facture l'entrée audio à moins d'un tiers du tarif du vaisseau amiral.
- C'est le choix naturel pour les assistants vocaux toujours actifs et les agents vocaux à fort volume face aux clients.
- Synthorai l'expose via le même endpoint WebSocket compatible OpenAI /v1/realtime que le reste de la gamme temps réel.
Spécifications et limites
| Sortie max (spéc. fournisseur) | 32,000 |
| Modalités | audio + text → audio + text |
| Fonctionnalités | realtime · speech-to-speech |
| À noter | Faster, lower-cost distilled realtime reasoning model bringing reasoning and tool use to the mini tier; prompt caching supported; 128k context. |
| Mise en cache des prompts | automatique · préfixe min. de 1,024 tokens · TTL 5–10m, up to 1h |
FAQ
Peut-on essayer l'API GPT Realtime 2.1 Mini gratuitement ?
GPT Realtime 2.1 Mini est actuellement en bêta sur invitation : l'accès se fait sur candidature plutôt que par inscription ouverte. Faites la demande depuis la console Synthorai ; une fois approuvée, la tarification standard au paiement à l'usage s'applique, sans abonnement.
Quels sont les points forts de GPT Realtime 2.1 Mini ?
Raisonnement distillé pour la voix temps réel, ainsi que entrée audio à moins d'un tiers du tarif amiral et conserve 128K de contexte, outils et cache de prompts. Voir la section À propos pour le tableau complet, tiré des notes de version officielles du fournisseur.
Combien coûte GPT Realtime 2.1 Mini ?
Sur Synthorai, GPT Realtime 2.1 Mini coûte $0.6 par million de tokens en entrée et $2.4 par million de tokens en sortie, soit le prix catalogue du fournisseur, sans majoration de plateforme. Les tokens d'entrée en cache sont facturés $0.06/M.
Comment appeler l'API GPT Realtime 2.1 Mini ?
GPT Realtime 2.1 Mini est un modèle speech-to-speech : connectez-vous en WebSocket à wss://synthorai.io/v1/realtime?model=gpt-realtime-2.1-mini avec le SDK OpenAI Realtime (ou un WebSocket brut) pour envoyer et recevoir de l'audio. Ce n'est pas un envoi de fichier POST /v1/audio/transcriptions. Authentifiez-vous avec votre clé sk-syn et reproduisez l'en-tête OpenAI-Beta.
Comment obtenir l'accès à GPT Realtime 2.1 Mini ?
GPT Realtime 2.1 Mini est en bêta sur invitation : demandez l'accès depuis la console Synthorai. Une fois la demande approuvée, il fonctionne comme tous les autres modèles : pointez votre SDK OpenAI vers base_url="https://synthorai.io/v1" et définissez model="gpt-realtime-2.1-mini".