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 session
  • model - 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 client
  • session - Session configuration (JSON string)

Authentication

Use ephemeral key (client secret) obtained from /v1/realtime/client_secrets:

Authorization: Bearer ek_68af296e8e408191a1120ab6383263c2

Response

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 key
  • session.update - Update session configuration
  • conversation.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 created
  • session.updated - Session updated
  • response.created - Response generation started
  • response.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 chunk
  • conversation.item.input_audio_transcription.completed - Input audio transcription completed
  • response.done - Response generation completed