オーディオとリアルタイム

Realtime WebSocket

WebSocket でリアルタイム音声およびマルチモーダルセッションに接続します

GET
/v1/realtime

概要

このエンドポイントは、ストリーミング音声認識、音声合成、音声翻訳、リアルタイムのマルチモーダルモデルなどのリアルタイムセッションに使用します。通常の GET リクエストはエンドポイントのメタデータを返し、WebSocket のアップグレードリクエストは選択したモデルのリアルタイムセッションを開始します。

サポート範囲

TokenLab は GET /v1/realtime で、メタデータ確認と WebSocket アップグレードに使えるリアルタイム WebSocket エンドポイントを提供します。これは WebSocket サブセット(WebSocket subset)として扱ってください。対応するリアルタイムモデルのイベントだけを中継し、セッション作成、client_secrets、Calls 通話制御 API、legacy beta session API などの OpenAI Realtime REST 補助面はサポートしていません。

ブラウザやモバイルアプリでは、長期 API キーをサーバー側に保持してください。このエンドポイントは短期 Realtime client secret を発行しません。

/v1/models から現在のリアルタイムモデルを選び、/v1/models/{model} で確認してから TOKENLAB_REALTIME_MODEL を設定してください。セッションのイベントと設定はモデルごとに異なります。下の JSON は通常の HTTP GET の応答であり、WebSocket のセッションイベントではありません。

接続

modelstringquery必須

リアルタイムモデル ID。対応状況で realtime をサポートするモデルを使用してください。

Authorizationstringheader必須

Bearer API キー。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));

メッセージ

TokenLab は、クライアントと選択したリアルタイムモデルの間で WebSocket メッセージを中継します。そのモデルのドキュメントに記載されたイベント形式を使用し、model は各イベントではなくクエリ文字列に含めてください。

課金と終了

セッションは API キーの残高で課金されます。TokenLab は開始時に見積もり額を確保し、終了時に実際の使用量で精算して差額を返金します。

セッションが完了したら、クライアントのソケットを閉じてください。サービス側が先にセッションを閉じた場合、TokenLab は可能な限り安全なクローズイベント/コードをクライアントに送信します。

レスポンス例

レスポンス

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

重要フィールド

objectstring
通常の HTTP GET 応答のオブジェクト種別です。値は realtime.endpoint 固定です。
websocket_urlstring
通常の HTTP GET が返す WebSocket 接続の相対パスです:/v1/realtime?model={model}。{model} を選択したモデルの ID に置き換えてください。
protocolstring
通常の HTTP GET が返すプロトコル識別子です。値は tokenlab_realtime_proxy 固定です。
typestring
API が返す event または message type です。
session.idstring
リアルタイム接続を通じて受け取る不透明な識別子です。調査用のサポートログに含めてください。REST session URL ではありません。

認証

BearerAuth
AuthorizationBearer <token>

APIキー認証。Dashboard > API > API KeysでAPIキーを作成または管理します。

場所: header

クエリパラメータ

model?string

WebSocketセッションをルーティングするためのRealtimeモデルID。WebSocketアップグレードリクエストには必須ですが、通常のHTTPメタデータ確認には任意です。

レスポンス

application/json

application/json

application/json

application/json

application/json

application/json