Documentation menu

Developer API

Errors

Every failure is an HTTP error status with the same JSON body. Branch on the code and the status; the message is for people and may change.

Error shape

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "success": false,
  "error": "Validation failed.",
  "code": "BAD_REQUEST",
  "details": {
    "fieldErrors": {
      "name": ["Required"],
      "phone": ["String must contain at most 32 character(s)"]
    }
  }
}

details is present when there is something structured to say: field errors on validation, the required scope on a scope error, the allowed values on a bad filter, the conflicting record on a conflict.

Codes

CodeStatusWhat to do
BAD_REQUEST400Validation failed. details.fieldErrors maps each field to its messages. Unknown fields, bad filters, sorts and cursors also land here.
UNAUTHORIZED401No credential, or the token is unknown, revoked, expired or no longer matches its owner's workspace. Check the token on the API Tokens page.
INSUFFICIENT_SCOPE403The token does not hold the scope in details.required. Create a token with that access.
FORBIDDEN403The operation is not offered for this resource (for example creating a chatroom), or a token was used on an app-only route such as token management.
NOT_FOUND404Unknown resource name, unknown child, or a record that is not in your workspace. Records you do not own look exactly like records that do not exist.
CONFLICT409A rule about existing data was violated, such as a second first block in a flow or a duplicate connection. details names the existing record.
RATE_LIMITED429Too many requests for this token. Wait for the seconds in the Retry-After header.
INTERNAL500Something failed on our side. Retry once, then contact support with the request.

Retrying

  • 400, 403, 404, 409 — do not retry; fix the request, the token or the data.
  • 401 — do not retry; the token itself is the problem.
  • 429 — wait for Retry-After seconds, then retry.
  • 500 — retry once after a short pause; if it persists, contact support with the request and the time.