Live API
Client events
The events you send on the Live socket. Any event may carry an event_id; the server’s answer returns it as client_event_id.
Events
| Event | What it does |
|---|---|
session.start | Opens the session; must be the first event. session.model names the model. session.audio sets the input and output format, the output encoding (base64 or binary) and the voice. Answered by session.started. |
session.input_audio.append | Base64 24 kHz PCM16 in audio, 3,840 bytes per event. The same chunks are accepted as binary messages. |
session.input_audio.mute, session.input_audio.unmute | The model hears silence while muted. Answered by session.input_audio.muted and session.input_audio.unmuted. |
session.update | Changes the output encoding, session.audio.output.encoding, once. Every other field is refused. Answered by session.updated. |
session.close | Ends the session. Answered by session.closed. |
Start with session.start
{"type": "session.start",
"session": {"model": "nemotron-voicechat",
"audio": {"input": {"format": {"type": "audio/pcm", "rate": 24000}},
"output": {"format": {"type": "audio/pcm", "rate": 24000},
"encoding": "base64",
"voice": "aria"}}}}The voice must be one the model offers; GET /v1/models lists them in audio.voices. A field the model does not support, such as non-empty instructions, is refused with invalid_parameter, never ignored. turn_detection is accepted and returned as null: turn-taking is the model’s own.
Refused events
These are refused with an error event, never accepted and ignored:
session.commentary.append,session.thinking.append,session.instructions.appendunsupported_feature: they carry delegation results, and delegation is not supported.response.create,response.item.createunsupported_feature: tool calling and delegation are not supported.input_audio_buffer.clearunsupported_event: a Live session has no input buffer.