Errors
Consistent JSON error bodies. Production omits validation details.
HTTP status codes
401 unauthorized — missing/invalid API key 402 payment_required — subscription inactive 403 forbidden — missing scope 404 not_found — player or match 409 duplicate_external_ref — match already ingested 422 validation_error — bad input 429 rate_limit_exceeded — monthly quota 503 service_unavailable — temporary outage
Example
{
"error": "forbidden",
"message": "API key lacks required scopes.",
"required_scopes": ["write:matches"]
}