Skip to main content

Error shape

Most routes return:
Every response includes header x-request-id — include it when reporting problems to your station admin or vendor support. Playback ingest may return { "error": "string" } for encoder compatibility. For example, an invalid ingest request can return:
Examples are illustrative; message wording and validation paths can vary. Listener clients should branch on error.code, preserve the request ID for diagnosis, and display a suitable message. issues is optional. Each issue has a path and message, and may add a machine-readable code, a short suggestion you can show, and retryAfter in seconds when the problem is temporary. Playback clients must handle the legacy string instead of expecting error.code.

Recover from errors

Do not retry invalid input or invalid credentials in a tight loop. Use the operation’s response list to see which statuses apply; this table is the shared error vocabulary, not a guarantee that every route returns every code. Public media range requests can also return 416 when the requested range cannot be satisfied.

Contract version

Listener JSON projections include contractVersion: 1. Treat unknown fields as forward-compatible unless the version integer changes. Calendar text, media bytes, and playback ingest use their own documented response shapes. Preserve exact enum values and check optional/nullable fields independently. A successful response with an empty array or a nullable resource is not an error. See Field types and empty states.

Pagination and filters

Use documented cursors, sorts, and filters only. Content lists sort by publishedAt or updatedAt and filter on text and choice delivery fields. Do not assume you can sort or filter other fields.

GraphQL and the realtime feed

Public GraphQL and the realtime feed complement REST. GraphQL requires the same tenant token (listener:read) as JSON reads; the realtime feed is anonymous. REST entry points remain in OpenAPI; typed helpers live in the SDKs. Each operation page in the sidebar documents route-specific validation and response schemas.

Choose a recovery action

For an uncertain mutation outcome, check current state before repeating the operation. Retain the same idempotency identity where the operation supports it. Include the request ID, route, HTTP status, and approximate time in support reports, with tokens and confidential payload fields removed.