Audio & Echtzeit

Realtime WebSocket

Echtzeit-Sprach- und multimodale Sitzungen per WebSocket verbinden

GET
/v1/realtime

Überblick

Verwenden Sie diesen Endpunkt für Echtzeitsitzungen wie Streaming-Spracherkennung, Sprachsynthese, Sprachübersetzung oder multimodale Echtzeitmodelle. Eine normale GET-Anfrage gibt Endpunkt-Metadaten zurück, während eine WebSocket-Upgrade-Anfrage eine Echtzeitsitzung für das ausgewählte Modell öffnet.

Unterstützte Oberfläche

TokenLab stellt unter GET /v1/realtime einen Realtime-WebSocket-Endpunkt für Metadatenchecks und WebSocket-Upgrades bereit. Behandeln Sie ihn als WebSocket subset: Er leitet unterstützte Realtime-Modellereignisse weiter und unterstützt keine OpenAI-Realtime-REST-Hilfsflächen wie Sitzungserstellung, client_secrets, Calls-Call-Control-APIs oder legacy beta session APIs.

Für Browser- oder Mobile-Apps sollten langfristige API-Keys auf Ihrem Server bleiben. Dieser Endpunkt stellt keine kurzlebigen Realtime client secrets aus.

Wählen Sie ein aktuelles Echtzeitmodell aus /v1/models, prüfen Sie /v1/models/{model} und setzen Sie dann TOKENLAB_REALTIME_MODEL. Sitzungsereignisse und Konfiguration hängen vom Modell ab. Das JSON-Beispiel unten zeigt eine normale HTTP-GET-Antwort, kein WebSocket-Sitzungsereignis.

Verbindung

modelstringqueryerforderlich

Realtime-Modell-ID. Wählen Sie ein Modell, dessen unterstützte Operationen realtime unterstützt.

Authorizationstringheadererforderlich

Bearer-API-Key. WebSocket-Clients senden beim Upgrade Authorization: Bearer sk-your-api-key.

Anfrage

import WebSocket from 'ws';

const model = process.env.TOKENLAB_REALTIME_MODEL;
const apiKey = process.env.TOKENLAB_API_KEY;
if (!model || !apiKey) {
  throw new Error('Set TOKENLAB_REALTIME_MODEL and TOKENLAB_API_KEY');
}

const url = new URL('wss://api.tokenlab.sh/v1/realtime');
url.searchParams.set('model', model);
const socket = new WebSocket(url, {
  headers: { Authorization: `Bearer ${apiKey}` }
});

socket.on('open', () => {
  console.log('Realtime connection open');
});

socket.on('message', (data) => {
  console.log('realtime event', data.toString());
});

socket.on('error', (error) => console.error(error.message));
socket.on('close', (code) => console.log('Realtime connection closed', code));

Nachrichten

TokenLab leitet WebSocket-Nachrichten zwischen Ihrem Client und dem ausgewählten Echtzeitmodell weiter. Verwenden Sie das in der Dokumentation dieses Modells beschriebene Ereignisformat und geben Sie model im Query-String an, nicht in jedem einzelnen Ereignis.

Abrechnung und Schließen

Sitzungen werden über das Guthaben Ihres API-Schlüssels abgerechnet: TokenLab reserviert zu Beginn einen geschätzten Betrag, rechnet am Ende den tatsächlichen Verbrauch ab und erstattet die Differenz.

Schließen Sie den Client-Socket, wenn die Sitzung abgeschlossen ist. Wenn der Dienst die Sitzung zuerst schließt, sendet TokenLab nach Möglichkeit ein sicheres Schließereignis bzw. einen sicheren Schließcode an Ihren Client.

Antwortbeispiel

Antwort

HTTP GET
{
  "object": "realtime.endpoint",
  "websocket_url": "/v1/realtime?model={model}",
  "protocol": "tokenlab_realtime_proxy"
}

Wichtige Felder

objectstring
Objekttyp der normalen HTTP-GET-Antwort. Der Wert ist immer realtime.endpoint.
websocket_urlstring
Relativer WebSocket-Verbindungspfad aus der normalen HTTP-GET-Antwort: /v1/realtime?model={model}. Ersetzen Sie {model} durch die ID des ausgewählten Modells.
protocolstring
Protokollkennung der normalen HTTP-GET-Antwort. Der Wert ist immer tokenlab_realtime_proxy.
typestring
Von der API zurückgegebener Event- oder Nachrichtentyp.
session.idstring
Undurchsichtige Kennung aus der Realtime-Verbindung. Verwenden Sie sie in Support-Logs zur Fehleranalyse; sie ist keine REST session URL.

Autorisierung

BearerAuth
AuthorizationBearer <token>

API-Key-Authentifizierung. Erstellen oder verwalten Sie API-Keys unter Dashboard > API > API Keys.

Ort: header

Abfrageparameter

model?string

Realtime-Modell-ID für das Routing der WebSocket-Sitzung. Erforderlich für WebSocket-Upgrade-Anfragen; optional für einfache HTTP-Metadatenprüfungen.

Antwort

application/json

application/json

application/json

application/json

application/json

application/json