Skip to content

Errors and Rate Limiting

Error response format

All error responses use a compact JSON format:

json
{
  "error": "Human-readable error message",
  "code": "MACHINE_READABLE_CODE",
  "suggestion": "A safe next action",
  "docs": "https://docs.omnilux.tv/errors/MACHINE_READABLE_CODE",
  "requestId": "<request-id>"
}
FieldTypeDescription
errorstringHuman-readable error description
codestringMachine-readable error code
detailsobjectOptional structured context
suggestionstringOptional safe next action
docsstringCanonical documentation for the code
requestIdstringOptional request identifier that also appears in X-Request-Id

HTTP status codes

StatusMeaning
400Bad request
401Missing or invalid authentication
403Authenticated but not permitted
404Resource not found
409Request conflicts with current state
429Request rate limited
500Internal server error

Common error codes

CodeTypical meaning
AUTH_MISSING_TOKENThe request did not include an Authorization: Bearer <token> header
AUTH_INVALID_CREDENTIALSWrong username or password
AUTH_SESSION_EXPIREDSession token has expired
AUTH_INSUFFICIENT_ROLEThe signed-in user lacks the required role
MEDIA_NOT_FOUNDRequested media was not found
RATE_LIMIT_EXCEEDEDToo many requests
STREAM_TRANSCODE_FAILEDThe server could not prepare the stream

Rate limiting

OmniLux rate-limits API requests to protect the server. Exact thresholds and behavior can vary by endpoint and server configuration, so clients should always handle 429 responses gracefully and retry later.