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: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.
- Python
- Node.js
- Browser
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.

