Errors & API rate limits
Every response outside the 2xx range uses the same envelope:
{ "error": { "code": "invalid_request", "message": "Invalid request", "requestId": "9f0c1c2e-…", "docs": "https://reminix.com/docs/errors/#invalid_request", "details": [{ "path": "name", "message": "Required" }] }}| Field | What it is |
|---|---|
code |
One of a small, stable set of codes. Branch on this. |
message |
A sentence for people. It may change, so don’t parse it. |
requestId |
Matches the X-Request-Id response header. Include it when you contact support. |
details |
Only on validation errors: one entry per field, with its path and message. |
docs |
A link to the code’s entry on this page. |
Error codes
Section titled “Error codes”We may add new codes over time. Treat a code you don’t recognise as
internal_error.
unauthorized
Section titled “unauthorized”401. The credential is missing, malformed, invalid, revoked or
expired. Send Authorization: Bearer <key or token> with a working
credential, and create a new one if it was revoked or has expired.
forbidden
Section titled “forbidden”403. The credential is valid but isn’t allowed to do this. Either it
doesn’t have the endpoint’s scope, or
your role in the workspace doesn’t allow it, or a personal access token
can’t act in the workspace named by X-Workspace. Use a credential with
the access it needs; the message names the missing scope.
not_found
Section titled “not_found”404. The resource doesn’t exist, or isn’t yours to see. Check the path
and the id; the API reports an id from another workspace as not found.
method_not_allowed
Section titled “method_not_allowed”405. The path exists, but not with this method. Use one of the methods
in the Allow response header.
invalid_request
Section titled “invalid_request”400. The request didn’t pass validation. details lists each invalid
field with its path and message.
rate_limited
Section titled “rate_limited”429. The credential has used its quota (see
API rate limits). Wait the number of seconds in
Retry-After, then retry with backoff.
plan_limit_reached
Section titled “plan_limit_reached”402. The workspace has used its plan’s monthly allowance for what this
request needs. The message says which allowance and when it resets, and
the workspace’s owners got an email and a notification at 80% and 100%. Upgrade the plan under
Settings → Billing, or wait for the month to reset; retrying sooner
gets the same answer.
idempotency_key_reused
Section titled “idempotency_key_reused”409. This Idempotency-Key was already used for a different request.
Use a new key for a new operation, and reuse a key only to retry the
same request (see Idempotency).
idempotency_in_progress
Section titled “idempotency_in_progress”409. A request with the same Idempotency-Key is still running. Wait
the number of seconds in Retry-After, then retry with the same key.
internal_error
Section titled “internal_error”500. Something failed on our side. Retry with backoff, and if it keeps
happening, contact support with the requestId.
API rate limits
Section titled “API rate limits”Every authenticated request counts against a quota for its credential:
per API key on the workspace endpoints, per token on /v1/user/*. When
the quota runs out, the API answers:
HTTP/1.1 429 Too Many RequestsRetry-After: 60with code: "rate_limited". Wait for Retry-After, then retry with
backoff. Because limits are per credential, one busy integration doesn’t
slow down another key’s requests.