API Documentation

The ItanniX Realtime API is a drop-in replacement for OpenAI's Realtime API. Use the same protocol, with automatic configuration injection and multi-tenant support.

OpenAI Realtime API Compatible

Our relay endpoint is a drop-in replacement for OpenAI's Realtime API. If you're already using OpenAI Realtime, you can switch by changing just the base URL and adding a client ID header.

OpenAI: https://api.openai.com/v1/realtime/sessions
ItanniX: https://api.itannix.com/v1/realtime/sessions

What is the Realtime API?

The Realtime API is a WebRTC-based voice interaction endpoint that provides real-time bidirectional audio communication with AI assistants. It handles speech-to-text, natural language processing, and text-to-speech in a single WebRTC connection.

Why Use ItanniX vs Direct OpenAI?

Managed Configuration

Model, voice, instructions, and tools are automatically configured from your assistant settings. No need to manage API keys or config in your client code.

Multi-Tenant Support

Each device/client gets its own isolated configuration. Perfect for managing multiple products or deployments from a single dashboard.

Analytics & Logging

Track interactions, usage, and performance across all your devices. Monitor conversations and debug issues from the dashboard.

Secure & Reliable

Your API keys stay on the server. Clients only need a device ID to connect. Built-in TURN servers handle NAT traversal automatically.

How Authentication Works

ItanniX uses a TOFU (Trust On First Use) model for device authentication. Devices authenticate with a Client ID and Secret - no complex setup required.

Device
ID + Secret
ItanniX
Verifies & connects
Voice AI
Real-time audio
Client ID - Identifies the device. Created in dashboard or use a UUID.
Client Secret - Authenticates the device. Generate on-device (32+ chars).

See the Quickstart Guide for detailed setup instructions.

Quick Example

Here's a minimal example of creating a session and connecting via WebRTC:

Basic Connection
// Device credentials (generate secret once and store securely)
const CLIENT_ID = 'YOUR_CLIENT_ID';
const CLIENT_SECRET = 'YOUR_GENERATED_SECRET'; // 32+ char random string

// 1. Create a session
const response = await fetch('https://api.itannix.com/v1/realtime/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-Client-Id': CLIENT_ID,
    'X-Client-Secret': CLIENT_SECRET
  },
  body: JSON.stringify({
    modalities: ['text', 'audio']
  })
});

const session = await response.json();

// 2. Create WebRTC peer connection
const pc = new RTCPeerConnection({
  iceServers: session.iceServers || []
});

// 3. Create offer and send SDP
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);

const sdpResponse = await fetch('https://api.itannix.com/v1/realtime', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/sdp',
    'X-Client-Id': CLIENT_ID,
    'X-Client-Secret': CLIENT_SECRET
  },
  body: offer.sdp
});

const answer = await sdpResponse.text();
await pc.setRemoteDescription({ type: 'answer', sdp: answer });

Next Steps

Open Source

Our SDKs and quickstart examples are open source. Star us on GitHub!