Realtime interaction
The centre of the platform. A live session is one socket carrying audio in both directions, with turn-taking handled by the server.
Live is audio in, audio out, one model. There is no transcribe-then-think-then-speak
round trip, and barge-in, end-of-turn detection and cancellation happen on the
server rather than in your client. Transcripts of both sides arrive on the same
socket as the audio. See Live.
Duet is not a separate endpoint. It is two live sessions with each one’s
output piped into the other’s input, which is how a persona gets tested against
a difficult counterpart before a customer meets one. It bills as two sessions
and holds two connections. See Duet.
Translation is its own session type rather than a prompt, because a
conversational session carries a persona that answers you instead of
interpreting you. See Live translation.
Speech
Synthesis takes up to 4,096 characters per request, at 0.25× to 4× speed, and
returns
mp3, wav or pcm. Transcription returns json, text or
verbose_json; only verbose_json carries speakers, timings, per-segment
confidence and the audibility read that says whether a turn was on mic, off
mic, or too faint to trust. srt and vtt are in the request schema and no
backend serves them — build the caption file from segments. See
Speech to text.
A voice is a resource, not a string. Cloned or built-in, it resolves to stored
reference audio, and the same voice_id works in synthesis, in a live session
and in interpretation. That id comes from GET /v1/voices and looks like
ev_1a2b3c4d for both kinds; the display name beside it is not an id, and
sending one — "voice": "nur" — answers 400 unknown_voice.
See Voices.
What a session leaves behind
Every live conversation — browser, native client, one half of a duet, an interpretation — is the same kind of record, so tooling written against one works against all of them.
Nur Live also has a private, per-account memory that is off until you turn it
on. Only facts you keep enter a conversation; suggestions never do.
See Memory.
The model catalog
Every backend is opt-in per environment, so a deployment advertises only what it
can actually serve. The two ways an id can fail are different answers: an id no
catalog entry has is
404 model_not_found, while a real id whose backend is not
wired up here is 503 model_unavailable — a deployment fact rather than
something you can fix in the request. Read the catalog rather than hardcoding an
id:
nur-tts for nur-tts-v1 — which
resolves but follows whatever version is current. Pin the one you tested
against. See Models.
What it costs
Audio is metered at $0.001 per minute, the same rate for synthesis, transcription and realtime. A voice clone costs 100 credits.nur-llm-v1 is
not metered today. One credit is one US cent, credits are
prepaid, and an exhausted balance answers 429 insufficient_quota on paid
models — including minutes into an established live session, because the
balance is re-checked while a call is up.
New accounts get a one-time grant worth 1,440 minutes of audio. It does not
renew. See Pricing and limits.
Where it stops today
The parts worth knowing before you design around them.Incremental synthesis uses PCM events
Incremental synthesis uses PCM events
POST /v1/audio/speech supports phrase-incremental synthesis with
nur-tts-v1, response_format: "pcm" and stream_format: "sse".
Audio deltas are signed PCM16 at 24 kHz, mono. MP3 and WAV still require
complete-file synthesis; SSE only changes their framing. Live sessions
stream model-generated phrases through the same speech engine.
See Latency.Diarization needs long-form audio, and one card
Diarization needs long-form audio, and one card
Speaker separation needs enough continuous speech per voice to be confident.
On a file of two-second fragments it will sometimes split one person in two.
The model handles roughly 90 minutes in a pass, but the serving GPU sets the
real ceiling — about 20 minutes per file on current production hardware.
Split longer recordings at silence boundaries.
Both directions of a live session are 16 kHz, and nothing checks
Both directions of a live session are 16 kHz, and nothing checks
The serving backend pins its pipeline rate and resamples whatever arrives as
if it were already 16 kHz. Sending 24 kHz audio raises no error — it plays
back fast and transcription accuracy collapses. It presents as a bad model.
See Live.
Synthetic-audio marking is metadata, not a watermark
Synthetic-audio marking is metadata, not a watermark
Every audio response the API returns is marked as machine-generated, in a
response header and in the container. It survives copying a file; it does not
survive a re-encode. Use it to know audio came from here. Do not use it to
prove audio found elsewhere is synthetic.
See Synthetic audio.
Next
Realtime interaction
Which live surface to pick, and what they share.
Quickstart
A key, a synthesized line, and a live conversation.