Skip to main content
The Main API returns standard HTTP status codes and a structured error body for every non-2xx response. The body is the RFC 7807 Problem Details envelope with a few Spotzee-specific extensions, served with 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.
Numeric code values are deprecated. Earlier releases occasionally returned numeric values like 1007, 6000, or 9000 in the code field. Those came from legacy internal catalogues and were never part of the public contract. Never switch on them. The current API returns only the string codes from the catalogue below; if you ever see a numeric code, treat it as an unrecognised error and key off the HTTP status instead.

Error body shape

Once the rollout completes, error responses set Content-Type: application/problem+json.

Per-field errors

When code is validation_failed, the errors array lists every offending field:

Status codes

Code catalogue

The code 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 on 5xx and 429.
  • Mutations (POST / PATCH): include an Idempotency-Key header so retries are safe. Retry on 5xx and 429; do not retry 4xx (with the exception of idempotency_in_progress, which is explicitly retryable).

Reporting bugs

Always include the request_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.