The shortest useful path: synthesize a line, transcribe it back, hold a live conversation over a WebSocket, then read the session’s record. Budget about ten minutes.

Prerequisites

  • An EESI account and an API key (Settings → API keys). Keys look like sk-eesi-… and go in the Authorization: Bearer header.
  • Everything below points at https://api.eesi.ai/v1.
The speech endpoints speak the OpenAI wire protocol, so the OpenAI SDKs work against them unchanged. Install whichever you prefer:

1. Find out what your environment serves

Speech tiers are opt-in per environment: a backend with no configured URL is hidden entirely, so an id that works in one deployment 404s in another. Read the catalog rather than hardcoding.

2. Synthesize a line

voice is a built-in name or a cloned ev_… id — never a stock OpenAI voice name, because every voice here is a stored reference clip.

3. Transcribe it back

Swap the model for nur-stt-v1-pro and you also get who spoke, when, and how audible each turn was. See Audio intelligence.

4. Hold a live conversation

Realtime is audio in, audio out, one model — not transcribe, then think, then speak. The socket speaks the OpenAI Realtime protocol.
Two things bite people here and both are silent: do not set audio.input.format (the default is the 16 kHz the wire wants), and stop playback on speech_started rather than draining your buffer. Both are explained on the Realtime page. Browsers cannot set headers on a WebSocket. Mint a single-use ticket with POST /v1/realtime/ticket server-side and pass it as ?token=.

5. Put it on a phone

A phone call is the same session with a carrier on the near side, so there is nothing new to build — only a carrier account to connect.
1

Connect Telnyx

A Call Control Application, an API key, and the Ed25519 webhook public key, posted to /v1/organizations/telephony-configs.
2

Add a number with inbound enabled

EESI binds it to your Call Control Application, so calls to it arrive on the platform’s one inbound webhook. inbound_instructions on the number is the persona that answers.
3

Call it

The carrier’s media socket is relayed into a realtime session with your instructions already applied.
Outbound calls are placed by Care, which owns scheduling, personas and post-call analysis. Full setup in Telephony.

6. Look at what happened

Every realtime conversation — browser, phone or native client — leaves the same record:
Turns with timing, reply latency, per-direction recordings where the deployment keeps audio, and a real delete when you want it gone. See Sessions.

Where to go next

Realtime

The full event protocol, resumption, and barge-in.

Voices

Clone a voice, and use it everywhere.

Telephony

Why the phone leg is a relay, and how to set one up.

Speech API

The gateway, the model catalog, and where the compute runs.