# 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

```json
{"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.append`**: `unsupported_feature`: they carry delegation results, and delegation is not supported.
- **`response.create`, `response.item.create`**: `unsupported_feature`: tool calling and delegation are not supported.
- **`input_audio_buffer.clear`**: `unsupported_event`: a Live session has no input buffer.
