Every error is application/problem+json with a stable code and a request_id to quote to support. Back to the API reference.
| HTTP | code | When |
|---|---|---|
400 | bad_json | Request body is not valid JSON |
400 | bad_cursor | cursor param is not from a previous response |
400 | unsupported_media_type | Body sent without Content-Type: application/json |
401 | missing_key | No API key in Authorization / X-FeatShare-Key |
401 | invalid_key | Key malformed, unknown, or secret mismatch |
401 | key_revoked | Key was revoked in the app |
401 | key_expired | Key passed its expiry date |
401 | key_suspended | Key temporarily suspended by an admin (reversible) |
403 | api_disabled | API not enabled for this business (module flag / pilot allowlist) |
403 | insufficient_scope | Key lacks the scope this endpoint requires |
403 | ip_not_allowed | Caller IP outside the key's IP allowlist |
403 | module_off | The business module behind this endpoint is off (e.g. bookkeeping) |
404 | not_found | Resource does not exist in this business |
405 | method_not_allowed | Path exists under other HTTP methods (see Allow header) |
409 | conflict | Request conflicts with current state |
409 | already_registered | Member already booked into this class |
409 | meeting_full | Class is full (join the waitlist instead) |
409 | idempotency_key_reused | Idempotency-Key reused with a different body |
403 | wrong_endpoint | Called on a retired base URL — use https://web.featshare.com/api |
422 | validation_failed | Field-level validation failed (see errors[]) |
422 | business_rule | A business rule blocks the operation (see errors[].code) |
429 | rate_limited | Per-key burst limit exceeded — honor Retry-After |
429 | daily_quota_exceeded | Business daily request quota exhausted |
429 | monthly_quota_exceeded | Business monthly plan quota exhausted |
429 | message_quota_exceeded | Business daily message quota exhausted |
500 | internal | Unexpected server error — quote request_id to support |
503 | api_unavailable | API disabled globally or temporarily unavailable |