Message Reference
Every message — both directions — uses the same envelope. This page is the catalog of every type and content_type value, with the content shape for each.
Envelope
{
"type": "<message_type>",
"content_type": "<content_type>",
"content": <payload>,
"metadata": { ... }
}
| Field | Required | Notes |
|---|---|---|
type | yes | One of the message types listed below. |
content_type | yes | Tells you how to parse content. |
content | yes | The payload. Type depends on content_type. |
metadata | no | Free-form key/value bag. The server adds sequence_number and timestamp to most messages. |
Content types
content_type | content shape | Used by |
|---|---|---|
text | string | Most text messages |
json | object | Control messages, structured payloads |
multimodal | { text, media[] } | User turns with images / files |
For voice, raw audio bytes flow as WebSocket binary frames — they're not wrapped in this envelope at all. The envelope is used for control (audio_stream_start, audio_stream_end).
Message types
The full set of valid type values, grouped by purpose.