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"
}
Áudio e tempo real
Realtime WebSocket
Conecte sessões de voz e multimodais em tempo real via 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"
}
Visão geral
Use este endpoint para sessões em tempo real, como reconhecimento de fala em streaming, síntese de fala, tradução de fala ou modelos multimodais em tempo real. Uma requisiçãoGET comum retorna os metadados do endpoint, enquanto uma requisição de upgrade para WebSocket abre uma sessão em tempo real para o modelo selecionado.
Superfície compatível
TokenLab expõe um endpoint WebSocket em tempo real emGET /v1/realtime para verificações de metadados e upgrades WebSocket. Trate-o como um WebSocket subset: ele encaminha eventos de modelos realtime compatíveis e não oferece superfícies auxiliares REST do OpenAI Realtime, como criação de sessões, client_secrets, APIs de controle de chamadas Calls nem legacy beta session APIs.
Em apps web ou móveis, mantenha chaves API de longa duração no seu servidor. Este endpoint não emite Realtime client secrets de curta duração.
Escolha um modelo realtime atual em
/v1/models, verifique /v1/models/{model} e configure TOKENLAB_REALTIME_MODEL. Os eventos e a configuração da sessão dependem do modelo. O exemplo JSON abaixo é uma resposta HTTP GET comum, não um evento de sessão WebSocket.Conexão
string
obrigatório
ID do modelo em tempo real. Use um modelo cujos detalhes indiquem suporte a realtime.
string
obrigatório
Chave API Bearer. Clientes WebSocket devem enviar
Authorization: Bearer sk-your-api-key na requisição de 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"
Mensagens
O TokenLab encaminha mensagens WebSocket entre o seu cliente e o modelo em tempo real selecionado. Use o formato de eventos documentado para esse modelo e incluamodel na query string, em vez de em cada evento.
Cobrança e encerramento
As sessões são cobradas do saldo da sua chave de API: o TokenLab reserva uma estimativa no início, depois liquida o uso real ao final e reembolsa a diferença. Feche o socket do cliente quando a sessão for concluída. Se o serviço fechar a sessão primeiro, o TokenLab envia ao seu cliente um evento/código de fechamento seguro quando possível.Exemplo de resposta
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Campos importantes
string
Tipo de objeto de uma resposta HTTP GET comum. Seu valor é sempre
realtime.endpoint.string
Caminho relativo de conexão WebSocket retornado por um HTTP GET comum:
/v1/realtime?model={model}. Substitua {model} pelo ID do modelo escolhido.string
Identificador do protocolo retornado por um HTTP GET comum. Seu valor é sempre
tokenlab_realtime_proxy.string
Tipo de evento ou mensagem retornado pela API.
string
Identificador opaco recebido pela conexão realtime. Inclua-o em logs de suporte para depuração; ele não é uma URL de sessão REST.
Autorizações
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.
Resposta
WebSocket connection established