Audio & realtime

Realtime WebSocket

Hubungkan sesi suara dan multimodal realtime melalui WebSocket

GET
/v1/realtime

Ikhtisar

Gunakan endpoint ini untuk sesi real-time seperti pengenalan ucapan streaming, sintesis ucapan, terjemahan ucapan, atau model multimodal real-time. Permintaan GET biasa mengembalikan metadata endpoint, sedangkan permintaan upgrade WebSocket membuka sesi real-time untuk model yang dipilih.

Permukaan yang didukung

TokenLab menyediakan endpoint WebSocket realtime di GET /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

modelstringquerywajib

ID model realtime. Gunakan model yang detail modelnya mencantumkan dukungan realtime.

Authorizationstringheaderwajib

API key Bearer. Client WebSocket harus mengirim Authorization: Bearer sk-your-api-key saat upgrade request.

Permintaan

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

Pesan

TokenLab meneruskan pesan WebSocket antara klien Anda dan model real-time yang dipilih. Gunakan format event yang didokumentasikan untuk model tersebut, dan sertakan model 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

Respons

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

Field penting

objectstring
Jenis objek dalam respons HTTP GET biasa. Nilainya selalu realtime.endpoint.
websocket_urlstring
Jalur relatif koneksi WebSocket yang dikembalikan oleh HTTP GET biasa: /v1/realtime?model={model}. Ganti {model} dengan ID model yang dipilih.
protocolstring
Pengenal protokol yang dikembalikan oleh HTTP GET biasa. Nilainya selalu tokenlab_realtime_proxy.
typestring
Tipe event atau message yang dikembalikan API.
session.idstring
Identifier opak yang diterima melalui koneksi realtime. Sertakan di log dukungan untuk debugging; ini bukan REST session URL.

Otorisasi

BearerAuth
AuthorizationBearer <token>

Autentikasi API Key. Buat atau kelola API key di Dashboard > API > API Keys.

Lokasi: header

Parameter query

model?string

ID model realtime untuk merutekan sesi WebSocket. Diperlukan untuk permintaan upgrade WebSocket; opsional untuk pemeriksaan metadata HTTP biasa.

Respons

application/json

application/json

application/json

application/json

application/json

application/json