Control Messages
Message categories
Section titled “Message categories”MoQT control messages are exchanged on a single bidirectional QUIC stream (stream #0). The exact message set and type IDs vary by draft version — the tables below show draft-17 (latest) with draft-14 equivalents noted where they differ.
Session lifecycle
Section titled “Session lifecycle”| Message | Type ID (draft-17) | Direction | Draft-14 equivalent |
|---|---|---|---|
| SETUP | 0x2F00 | Both | CLIENT_SETUP (0x20) + SERVER_SETUP (0x21) |
| GOAWAY | 0x10 | Both | Same |
In draft-17, the separate CLIENT_SETUP and SERVER_SETUP messages are replaced by a single unified SETUP message sent by both sides. Setup options use delta-encoded key-value pairs.
Draft-14 also includes MAX_REQUEST_ID (0x15) and REQUESTS_BLOCKED (0x1A) which are removed in draft-17.
Subscription
Section titled “Subscription”| Message | Type ID (draft-17) | Direction | Draft-14 equivalent |
|---|---|---|---|
| SUBSCRIBE | 0x03 | Client → Relay | Same |
| SUBSCRIBE_OK | 0x04 | Relay → Client | Same |
| REQUEST_UPDATE | 0x02 | Client → Relay | SUBSCRIBE_UPDATE (0x02) |
| REQUEST_OK | 0x07 | Relay → Client | (new — replaces per-message OK types) |
| REQUEST_ERROR | 0x05 | Relay → Client | SUBSCRIBE_ERROR (0x05) |
| PUBLISH_DONE | 0x0B | Relay → Client | Same |
In draft-17, UNSUBSCRIBE is removed. The consolidated REQUEST_OK / REQUEST_ERROR pattern replaces the separate per-message response types from draft-14.
Publish
Section titled “Publish”| Message | Type ID (draft-17) | Direction | Draft-14 equivalent |
|---|---|---|---|
| PUBLISH | 0x1D | Client → Relay | Same |
| PUBLISH_OK | 0x1E | Relay → Client | Same |
| PUBLISH_BLOCKED | 0x0F | Client → Relay | (new in draft-17) |
| Message | Type ID (draft-17) | Direction | Draft-14 equivalent |
|---|---|---|---|
| FETCH | 0x16 | Client → Relay | Same |
| FETCH_OK | 0x18 | Relay → Client | Same |
In draft-14, FETCH_ERROR (0x19) and FETCH_CANCEL (0x17) are separate messages. In draft-17, errors use the consolidated REQUEST_ERROR pattern.
Namespace discovery
Section titled “Namespace discovery”| Message | Type ID (draft-17) | Direction | Draft-14 equivalent |
|---|---|---|---|
| SUBSCRIBE_NAMESPACE | 0x11 | Client → Relay | Same |
| PUBLISH_NAMESPACE | 0x06 | Relay → Client | Same |
| NAMESPACE | 0x08 | Relay → Client | (new in draft-17) |
| NAMESPACE_DONE | 0x0E | Relay → Client | (new in draft-17) |
In draft-14, SUBSCRIBE_NAMESPACE_OK (0x12), SUBSCRIBE_NAMESPACE_ERROR (0x13), and UNSUBSCRIBE_NAMESPACE (0x14) are separate messages. Draft-17 consolidates these.
Track status
Section titled “Track status”| Message | Type ID (draft-17) | Direction | Draft-14 equivalent |
|---|---|---|---|
| TRACK_STATUS | 0x0D | Both | Same ID, different format |
Draft-07 differences
Section titled “Draft-07 differences”Draft-07 uses SUBSCRIBE_ANNOUNCES instead of SUBSCRIBE_NAMESPACE for namespace discovery, and has a different set of message type IDs overall.
See the full reference for complete field descriptions across all supported drafts.