403 Forbidden. Understanding which scope you need before you build saves debugging time later.
Scopes reference
| Scope | Grants access to |
|---|---|
fixtures | GET /sports, GET /leagues, GET /leagues/active, GET /matches, GET /matches/active, GET /matches/{id} |
live_scores | GET /matches/{id}/live |
live_scores_statistics | Real-time WebSocket stream and GET /matches/{id}/live |
final_scores | GET /matches/{id}/result |
GET /matches/{id}/live accepts either live_scores or live_scores_statistics — you only need one of them to call that endpoint.The WebSocket stream requires
live_scores_statistics specifically. The live_scores scope alone is not sufficient to open a WebSocket connection.Sport allowlist
In addition to scopes, your account is configured with a set of enabled sports. Access is deny-by-default: you only ever see sports, leagues, and matches for your enabled sports. Requesting data outside your allowlist is not treated as an error by the API:GET /leagues?sport=<disabled sport>returns an emptyitemsarray.GET /matches/{id}for a match in a disabled sport returns404 Not Found.
What 403 Forbidden means
A403 Forbidden response means your API key exists and is valid, but lacks the required scope for the endpoint you called. The response body will identify the missing scope:
401 Unauthorized, which means the key itself was not recognized, is disabled, or has expired.