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"
}
Ses ve gerçek zamanlı
Realtime WebSocket
WebSocket ile gerçek zamanlı ses ve çok modlu oturumlara bağlanın
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"
}
Genel bakış
Bu uç noktayı; akışlı konuşma tanıma, konuşma sentezi, konuşma çevirisi veya gerçek zamanlı çok modlu modeller gibi gerçek zamanlı oturumlar için kullanın. Normal birGET isteği uç nokta meta verilerini döndürür, WebSocket yükseltme isteği ise seçilen model için gerçek zamanlı bir oturum açar.
Desteklenen yüzey
TokenLab, metadata kontrolleri ve WebSocket upgrade istekleri içinGET /v1/realtime üzerinde gerçek zamanlı bir WebSocket endpoint’i sunar. Bunu bir WebSocket subset olarak düşünün: desteklenen realtime model olaylarını iletir ve oturum oluşturma, client_secrets, Calls çağrı kontrol API’leri veya legacy beta session APIs gibi OpenAI Realtime REST yardımcı yüzeylerini desteklemez.
Tarayıcı veya mobil uygulamalarda uzun ömürlü API anahtarlarını sunucunuzda tutun. Bu endpoint kısa ömürlü Realtime client secret üretmez.
/v1/models listesinden güncel bir realtime modeli seçin, /v1/models/{model} ile doğrulayın ve TOKENLAB_REALTIME_MODEL değerini ayarlayın. Oturum olayları ve yapılandırması modele bağlıdır. Aşağıdaki JSON örneği normal bir HTTP GET yanıtıdır, WebSocket oturum olayı değildir.Bağlantı
string
gerekli
Gerçek zamanlı model ID’si. Genel sözleşmesinde realtime desteği bulunan bir model kullanın.
string
gerekli
Bearer API anahtarı. WebSocket istemcileri upgrade isteğinde
Authorization: Bearer sk-your-api-key göndermelidir.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"
Mesajlar
TokenLab, WebSocket mesajlarını istemciniz ile seçilen gerçek zamanlı model arasında aktarır. O modelin belgelerinde tanımlanan olay biçimini kullanın vemodel değerini her olaya değil, sorgu dizesine ekleyin.
Ücretlendirme ve kapatma
Oturumlar API anahtarınızın bakiyesinden ücretlendirilir: TokenLab başlangıçta bir tahmini tutar ayırır, ardından bitişte gerçek kullanımı hesaplar ve farkı iade eder. Oturum tamamlandığında istemci soketini kapatın. Hizmet oturumu önce kapatırsa, TokenLab mümkün olduğunda istemcinize güvenli bir kapatma olayı/kodu gönderir.Yanıt örneği
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Önemli alanlar
string
Normal HTTP GET yanıtının nesne türüdür. Değeri her zaman
realtime.endpoint olur.string
Normal HTTP GET isteğinin döndürdüğü göreli WebSocket bağlantı yoludur:
/v1/realtime?model={model}. {model} yerine seçtiğiniz modelin ID’sini yazın.string
Normal HTTP GET isteğinin döndürdüğü protokol tanımlayıcısıdır. Değeri her zaman
tokenlab_realtime_proxy olur.string
API tarafından dönen event veya message type.
string
Realtime bağlantısı üzerinden alınan opak kimliktir. Hata ayıklama için destek loglarına ekleyin; REST session URL değildir.
Yetkilendirmeler
API Key authentication. Create or manage API keys in Dashboard > API > API Keys.
Sorgu Parametreleri
Realtime model ID to route the WebSocket session. Required for WebSocket upgrade requests; optional for plain HTTP metadata checks.
Yanıt
WebSocket connection established