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"
}
Audio & realtime
Realtime WebSocket
Hubungkan sesi suara dan multimodal realtime melalui 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"
}
Ikhtisar
Gunakan endpoint ini untuk sesi real-time seperti pengenalan ucapan streaming, sintesis ucapan, terjemahan ucapan, atau model multimodal real-time. PermintaanGET biasa mengembalikan metadata endpoint, sedangkan permintaan upgrade WebSocket membuka sesi real-time untuk model yang dipilih.
Permukaan yang didukung
TokenLab menyediakan endpoint WebSocket realtime diGET /v1/realtime untuk pengecekan metadata dan upgrade WebSocket. Anggap endpoint ini sebagai WebSocket subset: endpoint meneruskan event model realtime yang didukung dan tidak mendukung permukaan helper REST OpenAI Realtime seperti pembuatan sesi, client_secrets, API kontrol panggilan Calls, atau legacy beta session APIs.
Untuk aplikasi browser atau mobile, simpan API key jangka panjang di server Anda. Endpoint ini tidak menerbitkan Realtime client secret berumur pendek.
Pilih model realtime terkini dari
/v1/models, periksa /v1/models/{model}, lalu tetapkan TOKENLAB_REALTIME_MODEL. Event dan konfigurasi sesi bergantung pada model. Contoh JSON di bawah adalah respons HTTP GET biasa, bukan event sesi WebSocket.Koneksi
string
wajib
ID model realtime. Gunakan model yang detail modelnya mencantumkan dukungan realtime.
string
wajib
API key Bearer. Client WebSocket harus mengirim
Authorization: Bearer sk-your-api-key saat upgrade request.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"
Pesan
TokenLab meneruskan pesan WebSocket antara klien Anda dan model real-time yang dipilih. Gunakan format event yang didokumentasikan untuk model tersebut, dan sertakanmodel di query string alih-alih di setiap event.
Penagihan dan penutupan
Sesi ditagih dari saldo kunci API Anda: TokenLab mencadangkan estimasi di awal, lalu menyelesaikan penggunaan sebenarnya di akhir dan mengembalikan selisihnya. Tutup socket klien saat sesi selesai. Jika layanan menutup sesi terlebih dahulu, TokenLab mengirimkan event/kode penutupan yang aman ke klien Anda jika memungkinkan.Contoh respons
{
"object": "realtime.endpoint",
"websocket_url": "/v1/realtime?model={model}",
"protocol": "tokenlab_realtime_proxy"
}
Field penting
string
Jenis objek dalam respons HTTP GET biasa. Nilainya selalu
realtime.endpoint.string
Jalur relatif koneksi WebSocket yang dikembalikan oleh HTTP GET biasa:
/v1/realtime?model={model}. Ganti {model} dengan ID model yang dipilih.string
Pengenal protokol yang dikembalikan oleh HTTP GET biasa. Nilainya selalu
tokenlab_realtime_proxy.string
Tipe event atau message yang dikembalikan API.
string
Identifier opak yang diterima melalui koneksi realtime. Sertakan di log dukungan untuk debugging; ini bukan REST session URL.
Otorisasi
API Key authentication. Create or manage API keys in Dashboard > API > API Keys.
Parameter Query
Realtime model ID to route the WebSocket session. Required for WebSocket upgrade requests; optional for plain HTTP metadata checks.
Respons
WebSocket connection established