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"
}
音訊與即時
即時 WebSocket
透過 WebSocket 連線即時語音與多模態會話
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"
}
概覽
此端點用於即時工作階段,例如串流語音辨識、語音合成、語音翻譯或即時多模態模型。一般GET 請求會回傳端點中繼資料,而 WebSocket 升級請求則會為所選模型開啟一個即時工作階段。
支援範圍
TokenLab 在GET /v1/realtime 提供即時 WebSocket 端點,可用於端點資訊檢查與 WebSocket 升級。請把它理解為 WebSocket 子集(WebSocket subset):它只轉發受支援即時模型的事件,不支援 OpenAI Realtime 的 REST 輔助面,例如建立工作階段、client_secrets、Calls 通話控制 API 或 legacy beta session API。
瀏覽器或行動端應把長期 API Key 保留在服務端。此端點不會簽發短期 Realtime client secret。
從
/v1/models 選擇目前即時模型,查詢 /v1/models/{model} 確認後設定 TOKENLAB_REALTIME_MODEL。工作階段事件與設定以模型為準。下方 JSON 範例是一般 HTTP GET 的回應,不是 WebSocket 工作階段事件。連線
string
必填
即時模型 ID。請選擇模型詳情中包含 realtime 支援的模型。
string
必填
Bearer API Key。WebSocket 用戶端應在升級請求中傳送
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"
訊息
TokenLab 會在你的用戶端與所選即時模型之間轉發 WebSocket 訊息。請使用該模型文件中說明的事件格式,並將model 放在查詢字串中,而非放進每個事件裡。
計費與關閉
工作階段會以 API 金鑰餘額計費:TokenLab 會在開始時預估並預留額度,結束後依實際用量結算並退還差額。 工作階段完成後請關閉用戶端連線。若服務端先關閉工作階段,TokenLab 會在可能的情況下向你的用戶端傳送一個安全的關閉事件/代碼。回應範例
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
重要欄位
string
一般 HTTP GET 回應的物件類型,固定為
realtime.endpoint。string
一般 HTTP GET 回傳的 WebSocket 相對連線路徑:
/v1/realtime?model={model}。將 {model} 替換為所選模型的 ID。string
一般 HTTP GET 回傳的協定識別碼,固定為
tokenlab_realtime_proxy。string
API 返回的事件或訊息類型。
string
透過 realtime 連線收到的不透明標識符。請放入支援日誌以便排障;它不是 REST session URL。
授權
API Key authentication. Create or manage API keys in Dashboard > API > API Keys.
查詢參數
Realtime model ID to route the WebSocket session. Required for WebSocket upgrade requests; optional for plain HTTP metadata checks.
回應
WebSocket connection established