Skip to content

MoQT draft-13 Error Codes

MoQT draft-13 assigns 71 code points across 8 registries — Termination, SUBSCRIBE_ERROR, SUBSCRIBE_DONE, PUBLISH_ERROR, FETCH_ERROR, ANNOUNCE_ERROR, SUBSCRIBE_NAMESPACE_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-13 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

  • 0x0 INTERNAL_ERROR (SUBSCRIBE_NAMESPACE_ERROR)
  • 0x1 UNAUTHORIZED (SUBSCRIBE_NAMESPACE_ERROR)
  • 0x2 TIMEOUT (SUBSCRIBE_NAMESPACE_ERROR)
  • 0x3 NOT_SUPPORTED (SUBSCRIBE_NAMESPACE_ERROR)
  • 0x4 NAMESPACE_PREFIX_UNKNOWN (SUBSCRIBE_NAMESPACE_ERROR)
  • 0x5 NAMESPACE_PREFIX_OVERLAP (SUBSCRIBE_NAMESPACE_ERROR)
  • 0x10 MALFORMED_AUTH_TOKEN (SUBSCRIBE_NAMESPACE_ERROR)
  • 0x12 EXPIRED_AUTH_TOKEN (SUBSCRIBE_NAMESPACE_ERROR)

Removed

  • 0x0 INTERNAL_ERROR (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x1 UNAUTHORIZED (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x2 TIMEOUT (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x3 NOT_SUPPORTED (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x4 NAMESPACE_PREFIX_UNKNOWN (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x5 NAMESPACE_PREFIX_OVERLAP (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x10 MALFORMED_AUTH_TOKEN (SUBSCRIBE_ANNOUNCES_ERROR)
  • 0x12 EXPIRED_AUTH_TOKEN (SUBSCRIBE_ANNOUNCES_ERROR)

draft-13 adds the SUBSCRIBE_NAMESPACE_ERROR registry. It drops the SUBSCRIBE_ANNOUNCES_ERROR registry that draft-12 had.

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-13 (§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-13 (§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-13 (§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-13 (§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-13 (§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.25
0x1 Unauthorized UNAUTHORIZED §8.25
0x2 Timeout TIMEOUT §8.25
0x3 Not Supported NOT_SUPPORTED §8.25
0x4 Uninterested UNINTERESTED §8.25
0x10 Malformed Auth Token MALFORMED_AUTH_TOKEN §8.25
0x12 Expired Auth Token EXPIRED_AUTH_TOKEN §8.25

7 code points from table-8 of draft-13 (§8.25. ANNOUNCE_ERROR).

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

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

8 code points from table-9 of draft-13 (§8.30. SUBSCRIBE_NAMESPACE_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-13 (§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-13 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-13.json, a committed extraction of draft-ietf-moq-transport-13 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: da0bd7c99d37c20eeaa78dc41157902e1f70cf73854d7d02447cb2c35d01e538. The descriptions and section links on this page are read from spec-sources/draft-13.html in this site's repository, whose hash matches — the two inputs are provably the same document.

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

moqtap covers drafts 07 through 20.

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