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"
}
通过 WebSocket 使用实时语音、翻译和多模态模型。普通
GET 请求返回接口信息;WebSocket 升级请求会开启实时会话。
支持范围
该接口是 OpenAI Realtime 的 WebSocket 子集,支持实时模型的 WebSocket 事件,不提供其 REST 辅助接口,例如client_secrets、Calls API 或 legacy beta session API。
不要把长期 API 密钥写进浏览器或移动端应用。该接口目前不签发短期 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"
消息
事件格式以所选模型为准。model 放在连接 URL 的查询字符串中,不需要写进每条事件。
计费与关闭
会话按实际用量计费,费用会计入所用 API 密钥。 会话结束后关闭连接。服务端结束会话时,客户端会收到关闭事件或状态码。响应示例
{
"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
实时会话 ID,可用于日志和问题排查。
授权
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