Content-Type: application/problem+json.
The canonical envelope is live for every error on
apix.spotzee.com/api/client/*, apix.spotzee.com/api/admin/*, and the Extended API. Edge rate-limit 429 responses also use this envelope. Build your client around the string code field — it’s the stable, machine-readable identifier.Error body shape
Content-Type: application/problem+json.
Per-field errors
Whencode is validation_failed, the errors array lists every offending field:
Status codes
Code catalogue
Thecode field is stable and documented. Add new codes to your switch statement only when you need to handle them differently. The catalogue is additive.
Retry guidance
- Idempotent reads (
GET): retry freely on5xxand429. - Mutations (
POST/PATCH): include anIdempotency-Keyheader so retries are safe. Retry on5xxand429; do not retry4xx(with the exception ofidempotency_in_progress, which is explicitly retryable).
Reporting bugs
Always include therequest_id (in the response body or the X-Request-Id header) when reporting an error. It lets us trace your specific request end-to-end.
Next steps
Idempotency
Make retries safe.
Rate limits
Avoid
429 with self-throttling.