Audio y tiempo real

Realtime WebSocket

Conecta sesiones de voz y multimodales en tiempo real por WebSocket

GET
/v1/realtime

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 solicitud GET 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 en GET /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

modelstringqueryobligatorio

ID del modelo en tiempo real. Usa un modelo cuyos detalles indiquen compatibilidad en tiempo real.

Authorizationstringheaderobligatorio

Clave API Bearer. Los clientes WebSocket deben enviar Authorization: Bearer sk-your-api-key durante el upgrade.

Solicitud

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));

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 incluye model 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

Respuesta

HTTP GET
{
  "object": "realtime.endpoint",
  "websocket_url": "/v1/realtime?model={model}",
  "protocol": "tokenlab_realtime_proxy"
}

Campos importantes

objectstring
Tipo de objeto de una respuesta HTTP GET normal. Su valor siempre es realtime.endpoint.
websocket_urlstring
Ruta relativa de conexión WebSocket devuelta por un HTTP GET normal: /v1/realtime?model={model}. Sustituye {model} por el ID del modelo elegido.
protocolstring
Identificador del protocolo devuelto por un HTTP GET normal. Su valor siempre es tokenlab_realtime_proxy.
typestring
Tipo de evento o mensaje devuelto por la API.
session.idstring
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.

Autorización

BearerAuth
AuthorizationBearer <token>

Autenticación con API Key. Cree o gestione API keys en Dashboard > API > API Keys.

Ubicación: header

Parámetros de consulta

model?string

ID del modelo en tiempo real para enrutar la sesión de WebSocket. Requerido para solicitudes de actualización de WebSocket; opcional para comprobaciones de metadatos HTTP simples.

Respuesta

application/json

application/json

application/json

application/json

application/json

application/json