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"
}
オーディオとリアルタイム
Realtime WebSocket
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"
}
概要
このエンドポイントは、ストリーミング音声認識、音声合成、音声翻訳、リアルタイムのマルチモーダルモデルなどのリアルタイムセッションに使用します。通常の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 のセッションイベントではありません。接続
string
必須
リアルタイムモデル ID。対応状況で realtime をサポートするモデルを使用してください。
string
必須
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));
curl "https://api.tokenlab.sh/v1/realtime" \
-H "Authorization: Bearer sk-your-api-key"
メッセージ
TokenLab は、クライアントと選択したリアルタイムモデルの間で WebSocket メッセージを中継します。そのモデルのドキュメントに記載されたイベント形式を使用し、model は各イベントではなくクエリ文字列に含めてください。
課金と終了
セッションは API キーの残高で課金されます。TokenLab は開始時に見積もり額を確保し、終了時に実際の使用量で精算して差額を返金します。 セッションが完了したら、クライアントのソケットを閉じてください。サービス側が先にセッションを閉じた場合、TokenLab は可能な限り安全なクローズイベント/コードをクライアントに送信します。レスポンス例
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
重要フィールド
string
通常の HTTP GET 応答のオブジェクト種別です。値は
realtime.endpoint 固定です。string
通常の HTTP GET が返す WebSocket 接続の相対パスです:
/v1/realtime?model={model}。{model} を選択したモデルの ID に置き換えてください。string
通常の HTTP GET が返すプロトコル識別子です。値は
tokenlab_realtime_proxy 固定です。string
API が返す event または message type です。
string
リアルタイム接続を通じて受け取る不透明な識別子です。調査用のサポートログに含めてください。REST session URL ではありません。
承認
API Key authentication. Create or manage API keys in Dashboard > API > API Keys.
クエリパラメータ
Realtime model ID to route the WebSocket session. Required for WebSocket upgrade requests; optional for plain HTTP metadata checks.
レスポンス
WebSocket connection established