Realtime API
Realtime API endpoints for WebSocket and WebRTC connections. All endpoints implement the OpenAI Realtime API protocol.
WebSocket Endpoint
Connect via WebSocket for realtime communication. Supports OpenAI Realtime API protocol.
WebSocket wss://api.rtav.io/v1/realtime
Query Parameters
session_id- Connect to existing sessionmodel- Auto-create session with model (OpenAI-compatible)
Authentication
Browser WebSocket can't set headers, so send auth as first message:
// Browser JavaScript
ws.onopen = () => {
ws.send(JSON.stringify({
type: 'auth',
api_key: 'rtav_ak_your_api_key_here'
}));
};Examples
// Browser JavaScript
// Auto-create session (OpenAI-compatible)
const ws1 = new WebSocket('wss://api.rtav.io/v1/realtime?model=gpt-5.2');
// Connect to existing session
const ws2 = new WebSocket('wss://api.rtav.io/v1/realtime?session_id=session_abc123');See WebSocket Guide for complete examples.
WebRTC Endpoint
Create a WebRTC call for low-latency audio/video streaming.
POST /v1/realtime/calls
Request
Multipart form data with SDP offer and session configuration:
sdp- SDP offer from clientsession- Session configuration (JSON string)
Authentication
Use ephemeral key (client secret) obtained from /v1/realtime/client_secrets:
Authorization: Bearer ek_68af296e8e408191a1120ab6383263c2Response
Returns SDP answer as plain text:
v=0
o=- 1234567890 1234567890 IN IP4 0.0.0.0
s=-
t=0 0
...See Create Call Reference and WebRTC Guide for complete examples.
Client Secrets (Ephemeral Keys)
Get ephemeral keys for WebRTC calls (OpenAI-compatible):
POST /v1/realtime/client_secrets
Request Body
// Browser JS / Node.js
const response = await fetch('https://api.rtav.io/v1/realtime/client_secrets', {
method: 'POST',
headers: {
'Authorization': 'Bearer rtav_ak_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
session: {
type: 'realtime'
}
})
});Response
{
"client_secret": "ek_68af296e8e408191a1120ab6383263c2",
"expires_in": 60
}Event Types
Both WebSocket and WebRTC (data channel) support the same event types following the OpenAI Realtime API protocol:
Client Events
auth- Authenticate with API keysession.update- Update session configurationconversation.item.create- Create conversation item (text message)input_audio_buffer.append- Append audio data (WebSocket only)input_audio_buffer.commit- Commit audio buffer (WebSocket only)response.create- Trigger response generation
Server Events
session.created- Session createdsession.updated- Session updatedresponse.created- Response generation startedresponse.output_audio.delta- Audio output chunk (WebSocket: base64, WebRTC: RTP)response.output_image.delta- Video frame (WebSocket: base64 JPEG, WebRTC: RTP)response.output_audio_transcript.delta- Output transcript chunkconversation.item.input_audio_transcription.completed- Input audio transcription completedresponse.done- Response generation completed