detail field with a human-readable explanation of what went wrong — checking this field is the fastest way to diagnose a problem.
Error response format
detail string is always present on error responses and is safe to log or surface to developers during debugging.
Error codes
Notes on specific codes
401 Unauthorized
Returned whenever the API cannot authenticate your request. This includes: noX-API-Key header present, a key that does not exist, a key that has been disabled by an administrator, or a key that has passed its expires_at date.
403 Forbidden
Returned when your key is valid but your account has not been granted the scope required by the endpoint you called. For example, callingGET /matches/{id}/live without live_scores or live_scores_statistics returns 403. See Scopes and Permissions for the full scope-to-endpoint mapping.
404 Not Found
Requesting a match whose sport is not in your enabled-sports allowlist returns
404, not 403. This is by design — the API treats out-of-allowlist resources as non-existent rather than forbidden, so your error-handling code does not need to distinguish between the two cases.404 can mean any of the following:
- The resource (match, live snapshot, result) genuinely does not exist.
- The match belongs to a sport outside your allowlist.
- No data is available yet — for example, calling
GET /matches/{id}/livebefore a match has gone live, orGET /matches/{id}/resultbefore any snapshots have been captured.
List endpoints (
GET /leagues, GET /matches) return an empty items array — not 404 — when a valid query matches zero records. A 404 from a list endpoint would be unexpected.422 Unprocessable Entity
Returned when a required query parameter is absent or its value cannot be parsed. For example, omitting the requiredsport parameter on GET /leagues, or passing a non-integer where an integer is expected.