Errors
Errors are RFC 9457 application/problem+json. The type URL is stable, detail is for people, and next_action is for programs.
| Status | type | next_action | When |
|---|---|---|---|
| 400 | invalid_request | fix_request | Bad FEN, depth out of range, unknown option or engine |
| 401 | unauthorized | sign_up | Missing, revoked or expired key |
| 402 | depth_exceeds_plan, quota_exceeded, budget_exceeded, past_due | upgrade, raise_budget, contact | Plan, quota, key budget or payment limits |
| 403 | forbidden, email_unverified | fix_request, verify_email, contact | Scope missing, key paused, suspended |
| 429 | rate_limited, keyless_limit, signup_limit | retry_after, sign_up | Burst or hourly limits; Retry-After is exact |
| 503 | unavailable, billing_unavailable | retry_after, contact | Global pause or billing not configured |
{
"type": "https://stockfishapi.com/errors/depth_exceeds_plan",
"title": "Depth exceeds plan",
"status": 402,
"detail": "Max depth on your plan is 14",
"next_action": "upgrade",
"plans": [...],
"checkout": { "method": "POST", "url": "https://stockfishapi.com/v1/billing/checkout", "body": { "plan": "hobby" } }
} Every response, including errors, carries X-Request-Id; quote it when you write to support.