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));
curl "https://api.tokenlab.sh/v1/realtime" \
-H "Authorization: Bearer sk-your-api-key"
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Audio & Echtzeit
Realtime WebSocket
Echtzeit-Sprach- und multimodale Sitzungen per WebSocket verbinden
GET
/
v1
/
realtime
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));
curl "https://api.tokenlab.sh/v1/realtime" \
-H "Authorization: Bearer sk-your-api-key"
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Überblick
Verwenden Sie diesen Endpunkt für Echtzeitsitzungen wie Streaming-Spracherkennung, Sprachsynthese, Sprachübersetzung oder multimodale Echtzeitmodelle. Eine normaleGET-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 unterGET /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
string
erforderlich
Realtime-Modell-ID. Wählen Sie ein Modell, dessen unterstützte Operationen realtime unterstützt.
string
erforderlich
Bearer-API-Key. WebSocket-Clients senden beim Upgrade
Authorization: Bearer sk-your-api-key.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));
curl "https://api.tokenlab.sh/v1/realtime" \
-H "Authorization: Bearer sk-your-api-key"
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 Siemodel 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
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Wichtige Felder
string
Objekttyp der normalen HTTP-GET-Antwort. Der Wert ist immer
realtime.endpoint.string
Relativer WebSocket-Verbindungspfad aus der normalen HTTP-GET-Antwort:
/v1/realtime?model={model}. Ersetzen Sie {model} durch die ID des ausgewählten Modells.string
Protokollkennung der normalen HTTP-GET-Antwort. Der Wert ist immer
tokenlab_realtime_proxy.string
Von der API zurückgegebener Event- oder Nachrichtentyp.
string
Undurchsichtige Kennung aus der Realtime-Verbindung. Verwenden Sie sie in Support-Logs zur Fehleranalyse; sie ist keine REST session URL.
Autorisierungen
API Key authentication. Create or manage API keys in Dashboard > API > API Keys.
Abfrageparameter
Realtime model ID to route the WebSocket session. Required for WebSocket upgrade requests; optional for plain HTTP metadata checks.
Antwort
WebSocket connection established