Áudio e tempo real

Realtime WebSocket

Conecte sessões de voz e multimodais em tempo real via WebSocket

GET
/v1/realtime

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ção GET 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 em GET /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

modelstringqueryobrigatório

ID do modelo em tempo real. Use um modelo cujos detalhes indiquem suporte a realtime.

Authorizationstringheaderobrigatório

Chave API Bearer. Clientes WebSocket devem enviar Authorization: Bearer sk-your-api-key na requisição de upgrade.

Requisição

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

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

Resposta

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

Campos importantes

objectstring
Tipo de objeto de uma resposta HTTP GET comum. Seu valor é sempre realtime.endpoint.
websocket_urlstring
Caminho relativo de conexão WebSocket retornado por um HTTP GET comum: /v1/realtime?model={model}. Substitua {model} pelo ID do modelo escolhido.
protocolstring
Identificador do protocolo retornado por um HTTP GET comum. Seu valor é sempre tokenlab_realtime_proxy.
typestring
Tipo de evento ou mensagem retornado pela API.
session.idstring
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ção

BearerAuth
AuthorizationBearer <token>

Autenticação por Chave de API. Crie ou gerencie chaves de API em Dashboard > API > API Keys.

Local: header

Parâmetros de consulta

model?string

ID do modelo em tempo real para rotear a sessão WebSocket. Obrigatório para solicitações de upgrade de WebSocket; opcional para verificações de metadados HTTP simples.

Resposta

application/json

application/json

application/json

application/json

application/json

application/json