Skip to content

MoQT draft-12 Error Codes

MoQT draft-12 assigns 71 code points across 8 registries — Termination, SUBSCRIBE_ERROR, SUBSCRIBE_DONE, PUBLISH_ERROR, FETCH_ERROR, ANNOUNCE_ERROR, SUBSCRIBE_ANNOUNCES_ERROR and Closing Subgroup Streams — plus 4 Object Status values, which are a separate family and are never counted with the rest. Of the 71, 71 are assignments and 0 are reserved.

Every row below was read out of draft-ietf-moq-transport-12 by the same extraction the moqtap Rust codec's conformance tests run against. Nothing here is transcribed by hand. The provenance section gives the hash of the document it came from.

Added

  • 0x16 MALFORMED_AUTH_TOKEN (Termination)
  • 0x17 UNKNOWN_AUTH_TOKEN_ALIAS (Termination)
  • 0x18 EXPIRED_AUTH_TOKEN (Termination)
  • 0x7 MALFORMED_TRACK (SUBSCRIBE_DONE)
  • 0x0 INTERNAL_ERROR (PUBLISH_ERROR)
  • 0x1 UNAUTHORIZED (PUBLISH_ERROR)
  • 0x2 TIMEOUT (PUBLISH_ERROR)
  • 0x3 NOT_SUPPORTED (PUBLISH_ERROR)
  • 0x4 UNINTERESTED (PUBLISH_ERROR)
  • 0x8 UNKNOWN_STATUS_IN_RANGE (FETCH_ERROR)
  • 0x9 MALFORMED_TRACK (FETCH_ERROR)

Renamed

  • 0x7 INVALID_JOINING_REQUEST_ID — was INVALID_JOINING_SUBSCRIBE_ID in draft-11 (FETCH_ERROR)

Removed

  • 0x6 RETRY_TRACK_ALIAS (SUBSCRIBE_ERROR)
  • 0x11 UNKNOWN_AUTH_TOKEN_ALIAS (SUBSCRIBE_ERROR)
  • 0x11 UNKNOWN_AUTH_TOKEN_ALIAS (FETCH_ERROR)
  • 0x11 UNKNOWN_AUTH_TOKEN_ALIAS (ANNOUNCE_ERROR)
  • 0x11 UNKNOWN_AUTH_TOKEN_ALIAS (SUBSCRIBE_ANNOUNCES_ERROR)

draft-12 adds the PUBLISH_ERROR registry.

When terminating the Session, the application MAY use any error message and SHOULD use a relevant code, as defined below:

Code Reason Normalized name Defined in
0x0 No Error NO_ERROR §3.4
0x1 Internal Error INTERNAL_ERROR §3.4
0x2 Unauthorized UNAUTHORIZED §3.4
0x3 Protocol Violation PROTOCOL_VIOLATION §3.4
0x4 Invalid Request ID INVALID_REQUEST_ID §3.4
0x5 Duplicate Track Alias DUPLICATE_TRACK_ALIAS §3.4
0x6 Key-Value Formatting Error KEY_VALUE_FORMATTING_ERROR §3.4
0x7 Too Many Requests TOO_MANY_REQUESTS §3.4
0x8 Invalid Path INVALID_PATH §3.4
0x9 Malformed Path MALFORMED_PATH §3.4
0x10 GOAWAY Timeout GOAWAY_TIMEOUT §3.4
0x11 Control Message Timeout CONTROL_MESSAGE_TIMEOUT §3.4
0x12 Data Stream Timeout DATA_STREAM_TIMEOUT §3.4
0x13 Auth Token Cache Overflow AUTH_TOKEN_CACHE_OVERFLOW §3.4
0x14 Duplicate Auth Token Alias DUPLICATE_AUTH_TOKEN_ALIAS §3.4
0x15 Version Negotiation Failed VERSION_NEGOTIATION_FAILED §3.4
0x16 Malformed Auth Token MALFORMED_AUTH_TOKEN §3.4
0x17 Unknown Auth Token Alias UNKNOWN_AUTH_TOKEN_ALIAS §3.4
0x18 Expired Auth Token EXPIRED_AUTH_TOKEN §3.4

19 code points from table-1 of draft-12 (§3.4. Termination).

The application SHOULD use a relevant error code in SUBSCRIBE_ERROR, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §8.9
0x1 Unauthorized UNAUTHORIZED §8.9
0x2 Timeout TIMEOUT §8.9
0x3 Not Supported NOT_SUPPORTED §8.9
0x4 Track Does Not Exist TRACK_DOES_NOT_EXIST §8.9
0x5 Invalid Range INVALID_RANGE §8.9
0x10 Malformed Auth Token MALFORMED_AUTH_TOKEN §8.9
0x12 Expired Auth Token EXPIRED_AUTH_TOKEN §8.9

8 code points from table-4 of draft-12 (§8.9. SUBSCRIBE_ERROR).

The application SHOULD use a relevant status code in SUBSCRIBE_DONE, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §8.12
0x1 Unauthorized UNAUTHORIZED §8.12
0x2 Track Ended TRACK_ENDED §8.12
0x3 Subscription Ended SUBSCRIPTION_ENDED §8.12
0x4 Going Away GOING_AWAY §8.12
0x5 Expired EXPIRED §8.12
0x6 Too Far Behind TOO_FAR_BEHIND §8.12
0x7 Malformed Track MALFORMED_TRACK §8.12

8 code points from table-5 of draft-12 (§8.12. SUBSCRIBE_DONE).

The application SHOULD use a relevant error code in PUBLISH_ERROR, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §8.15
0x1 Unauthorized UNAUTHORIZED §8.15
0x2 Timeout TIMEOUT §8.15
0x3 Not Supported NOT_SUPPORTED §8.15
0x4 Uninterested UNINTERESTED §8.15

5 code points from table-6 of draft-12 (§8.15. PUBLISH_ERROR).

The application SHOULD use a relevant error code in FETCH_ERROR, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §8.18
0x1 Unauthorized UNAUTHORIZED §8.18
0x2 Timeout TIMEOUT §8.18
0x3 Not Supported NOT_SUPPORTED §8.18
0x4 Track Does Not Exist TRACK_DOES_NOT_EXIST §8.18
0x5 Invalid Range INVALID_RANGE §8.18
0x6 No Objects NO_OBJECTS §8.18
0x7 Invalid Joining Request ID INVALID_JOINING_REQUEST_ID §8.18
0x8 Unknown Status in Range UNKNOWN_STATUS_IN_RANGE §8.18
0x9 Malformed Track MALFORMED_TRACK §8.18
0x10 Malformed Auth Token MALFORMED_AUTH_TOKEN §8.18
0x12 Expired Auth Token EXPIRED_AUTH_TOKEN §8.18

12 code points from table-7 of draft-12 (§8.18. FETCH_ERROR).

The application SHOULD use a relevant error code in ANNOUNCE_ERROR, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §8.24
0x1 Unauthorized UNAUTHORIZED §8.24
0x2 Timeout TIMEOUT §8.24
0x3 Not Supported NOT_SUPPORTED §8.24
0x4 Uninterested UNINTERESTED §8.24
0x10 Malformed Auth Token MALFORMED_AUTH_TOKEN §8.24
0x12 Expired Auth Token EXPIRED_AUTH_TOKEN §8.24

7 code points from table-8 of draft-12 (§8.24. ANNOUNCE_ERROR).

The application SHOULD use a relevant error code in SUBSCRIBE_ANNOUNCES_ERROR, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §8.29
0x1 Unauthorized UNAUTHORIZED §8.29
0x2 Timeout TIMEOUT §8.29
0x3 Not Supported NOT_SUPPORTED §8.29
0x4 Namespace Prefix Unknown NAMESPACE_PREFIX_UNKNOWN §8.29
0x5 Namespace Prefix Overlap NAMESPACE_PREFIX_OVERLAP §8.29
0x10 Malformed Auth Token MALFORMED_AUTH_TOKEN §8.29
0x12 Expired Auth Token EXPIRED_AUTH_TOKEN §8.29

8 code points from table-9 of draft-12 (§8.29. SUBSCRIBE_ANNOUNCES_ERROR).

The application SHOULD use a relevant error code in RESET_STREAM or RESET_STREAM_AT, as defined below:

Code Reason Normalized name Defined in
0x0 Internal Error INTERNAL_ERROR §9.4.3
0x1 Cancelled CANCELLED §9.4.3
0x2 Delivery Timeout DELIVERY_TIMEOUT §9.4.3
0x3 Session Closed SESSION_CLOSED §9.4.3

4 code points from table-14 of draft-12 (§9.4.3. Closing Subgroup Streams).

Object Status is a second family of code points and is counted on its own. It is the status a single Object carries, not the outcome of a request or a session, so its 4 values are never added to the 71 above. In draft-12 it has no IANA registry — the same code points are assigned as prose in the section that defines the field.

Code Name Description
0x0 NORMAL
0x1 OBJECT_DOES_NOT_EXIST
0x3 END_OF_GROUP
0x4 END_OF_TRACK

Payload rule: Any object with a status code other than zero MUST have an empty payload.

The code points, names and registry membership come from crates/moqtap-codec/tools/registries/draft-12.json, a committed extraction of draft-ietf-moq-transport-12 produced by crates/moqtap-codec/tools/extract-registries.py. The moqtap Rust codec's conformance tests read that same file and compare it against the crate's enums in both directions, so a code point this page shows and the codec refuses is a test failure, not a documentation drift.

That extraction records source_sha256, the SHA-256 of the rendered draft as bytes on disk: 744e8d79db320909388f92f18cf3cdacfc142d0a38d281055b7e406f59212410. The descriptions and section links on this page are read from spec-sources/draft-12.html in this site's repository, whose hash matches — the two inputs are provably the same document.

Read draft-12 section by section, or go to the draft-12 control message types.

moqtap covers drafts 07 through 20.

All MoQT error codes, draft by draft · Control message types