The error format
Every error has the same shape. The HTTP status code is repeated in the body.Error codes
Examples
400 UNKNOWN_PARAMETER: a misspelled or unsupported parameter
400 UNKNOWN_PARAMETER: a misspelled or unsupported parameter
There is no The fix:
date parameter on /football/matches, so this request fails:?team_id=tm_9145&date_from=2026-10-10&date_to=2026-10-10.400 SEASON_COMPETITION_MISMATCH: a season from another competition
400 SEASON_COMPETITION_MISMATCH: a season from another competition
403 KEY_REVOKED: no active plan
403 KEY_REVOKED: no active plan
404 NOT_FOUND: the ID doesn't exist
404 NOT_FOUND: the ID doesn't exist
/football/matchez, returns the same code with the message Route not found.409 CONFLICT: live endpoint for a match that isn't live
409 CONFLICT: live endpoint for a match that isn't live
Calling
/football/matches/{match_id}/live-stats for a finished match:429 RATE_LIMITED: too many requests this minute
429 RATE_LIMITED: too many requests this minute
The response includes a
Retry-After header with the seconds to wait.Handle errors in code
Checkcode, not just the HTTP status. Two errors can share a status but need different handling, such as RATE_LIMITED and USAGE_LIMIT_EXCEEDED.
429 responses, wait and retry as shown in Rate limits.