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 y tiempo real
Realtime WebSocket
Conecta sesiones de voz y multimodales en tiempo real por 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"
}
Resumen
Usa este endpoint para sesiones en tiempo real como reconocimiento de voz en streaming, síntesis de voz, traducción de voz o modelos multimodales en tiempo real. Una solicitudGET normal devuelve los metadatos del endpoint, mientras que una solicitud de actualización a WebSocket abre una sesión en tiempo real para el modelo seleccionado.
Superficie admitida
TokenLab expone un endpoint WebSocket en tiempo real enGET /v1/realtime para comprobaciones de metadatos y upgrades WebSocket. Trátalo como un WebSocket subset: reenvía eventos de modelos realtime compatibles y no admite superficies auxiliares REST de OpenAI Realtime como creación de sesiones, client_secrets, API de control de llamadas Calls ni legacy beta session APIs.
En apps web o móviles, mantén las claves API de larga duración en tu servidor. Este endpoint no emite Realtime client secrets de corta duración.
Elige un modelo realtime actual en
/v1/models, verifica /v1/models/{model} y configura TOKENLAB_REALTIME_MODEL. Los eventos y la configuración de sesión dependen del modelo. El ejemplo JSON siguiente corresponde a un HTTP GET normal, no a un evento de sesión WebSocket.Conexión
string
requerido
ID del modelo en tiempo real. Usa un modelo cuyos detalles indiquen compatibilidad en tiempo real.
string
requerido
Clave API Bearer. Los clientes WebSocket deben enviar
Authorization: Bearer sk-your-api-key durante el upgrade.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"
Mensajes
TokenLab transmite los mensajes WebSocket entre tu cliente y el modelo en tiempo real seleccionado. Usa el formato de eventos documentado para ese modelo e incluyemodel en la cadena de consulta en lugar de en cada evento.
Facturación y cierre
Las sesiones se cobran del saldo de tu clave API: TokenLab reserva una estimación al inicio, luego liquida el uso real al finalizar y reembolsa la diferencia. Cierra el socket del cliente cuando la sesión haya terminado. Si el servicio cierra la sesión primero, TokenLab envía a tu cliente un evento/código de cierre seguro cuando es posible.Ejemplo de respuesta
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Campos importantes
string
Tipo de objeto de una respuesta HTTP GET normal. Su valor siempre es
realtime.endpoint.string
Ruta relativa de conexión WebSocket devuelta por un HTTP GET normal:
/v1/realtime?model={model}. Sustituye {model} por el ID del modelo elegido.string
Identificador del protocolo devuelto por un HTTP GET normal. Su valor siempre es
tokenlab_realtime_proxy.string
Tipo de evento o mensaje devuelto por la API.
string
Identificador opaco recibido a través de la conexión realtime. Inclúyelo en logs de soporte para depuración; no es una URL de sesión REST.
Autorizaciones
API Key authentication. Create or manage API keys in Dashboard > API > API Keys.
Parámetros de consulta
Realtime model ID to route the WebSocket session. Required for WebSocket upgrade requests; optional for plain HTTP metadata checks.
Respuesta
WebSocket connection established