Skip to main content
The API uses standard HTTP status codes. Every error response shares a single envelope — an error object describing the problem.

A note on 404

Requesting a record that belongs to a different organisation returns 404, not 403. This is deliberate: it prevents callers from probing which IDs exist outside their own org. From your key’s perspective, anything outside your organisation simply does not exist.

The error envelope

Every error — at any status — returns the same shape:
code is a stable machine-readable string, message is a human-readable description, status mirrors the HTTP status, and details carries any extra context (empty by default).

Error codes

Validation errors

A 422 validation_error carries the field-level failures in details.errors:

Rate limit errors

A 429 rate_limited sets details.retry_after_seconds, and the response still carries a Retry-After header with the same value. See rate limits for the headers on every response.
A 401 right after creating a key usually means the Authorization header is wrong. It must be exactly Token token=ei_live_... — not Bearer ....