Skip to content

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.

We may add new codes over time. Treat a code you don’t recognise as internal_error.

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.

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.

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.

405. The path exists, but not with this method. Use one of the methods in the Allow response header.

400. The request didn’t pass validation. details lists each invalid field with its path and message.

429. The credential has used its quota (see API rate limits). Wait the number of seconds in Retry-After, then retry with backoff.

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.

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).

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.

500. Something failed on our side. Retry with backoff, and if it keeps happening, contact support with the requestId.

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 Requests
Retry-After: 60

with 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.