Skip to main content

Step 1: Get access

ORI-Realtime 1.5 is in research preview. Request access with a line about what you’re building — we enable preview access on your API key, usually within a day.

Step 2: Create an API key

1

Sign in to Waterr

2

Create a key

Keys look like wai_live_.... Copy it immediately — it’s shown once.
3

Confirm preview access

Once we’ve enabled ORI-Realtime for your key, you’re ready to connect. Keys without preview access receive a preview_access_required error on connect.

Step 3: Connect

The endpoint is a WebSocket:
Authenticate with Authorization: Bearer wai_<your_key> — or ?token=wai_<your_key> in the URL where you can’t set headers (browsers). The flow is three moves: send one session.update to configure voice and instructions, stream microphone (or file) audio as base64 Opus in input_audio_buffer.append events, and play the base64 Opus that arrives in response.audio.delta events. The model decides when to speak — there is no “send” button to press.
Uses sphn (Kyutai’s streaming Opus codec) — pip install websockets sphn numpy. Prepare a short 24 kHz mono WAV of you speaking: ffmpeg -i hello.wav -ar 24000 -ac 1 hello_24k.wav.
Coming from the OpenAI Realtime API? The event shapes will feel familiar — the two differences that matter: audio is Opus at 24 kHz (not PCM16), and there is no response.cancel — interruption is handled server-side when your user starts speaking. Details in the WebSocket reference.

Next steps

WebSocket reference

Every event, error code, and limit.

Audio format

Opus encode/decode in Python, Node, and the browser.

Voices

The 9 preset voices and how to pick one.

Model card

Architecture, capabilities, and limitations.