Reference

Errors

All error responses share the shape {"error":{"code","message"}}. Match on error.code, not on the message text — messages may change for clarity.

Error shape

Every non-2xx response from /api/v1 carries a stable machine-readable code under error.code. Build your retry and alerting logic against that field.

Error codes

missing_api_key401

No Authorization header and no X-Api-Key header was supplied.

invalid_api_key401

Credential is rejected (unknown, expired, or revoked).

validation_failed400

A query or path parameter failed validation (e.g. unknown sport, non-numeric eventId, limit out of range, duplicate bookmaker filter).

forbidden403

Authenticated but no product-verified bookmaker entitlement for the requested sport and transport.

live_not_enabled403

Caller requested transport=live but plan entitlement does not include the Live channel.

not_found404

Well-formed numeric eventId, but the event does not exist or is not visible to your organization.

rate_limit_exceeded429

Hourly rate limit or monthly REST quota exhausted. Use X-RateLimit-Reset and Retry-After before retrying.

service_unavailable503

Required auth, quota, or rate-limit backend is unavailable; the public API fails closed.