Skip to main content
The API uses standard HTTP status codes. Always check the status code before parsing the body.

Success

CodeMeaningWhen used
200 OKSuccessGET (single or list), PATCH, and other successful reads/updates
201 CreatedResource createdPOST when a new resource is created

Client Errors

CodeMeaningWhen used
400 Bad RequestInvalid requestMalformed body, invalid query params, or nonsensical combination of parameters
401 UnauthorizedNot authenticatedMissing or invalid API key (see Authentication)
403 ForbiddenNo permissionValid API key but no access to this resource (e.g. other org)
404 Not FoundResource missingResource does not exist or is not visible to your organization
422 Unprocessable EntityValidation failedBody/params valid in shape but fail validation (e.g. required field missing, format error)
429 Too Many RequestsRate limitedToo many requests; see Rate Limiting. Use Retry-After header to back off

Server Errors

CodeMeaningWhen used
500 Internal Server ErrorServer errorUnexpected server failure; retry with backoff and contact support if it persists
503 Service UnavailableTemporary outageService temporarily unavailable; retry later

Example Error Bodies

401 Unauthorized

{
  "error": "unauthorized",
  "message": "Invalid or missing API key"
}

404 Not Found

{
  "error": "not_found",
  "message": "Workspace not found or not accessible"
}

422 Validation Error

{
  "error": "validation_error",
  "message": "Invalid data format",
  "details": {
    "field": "name",
    "reason": "Name must be at least 1 character"
  }
}

429 Rate Limit

Body (JSON):
{
  "error": "rate_limit_exceeded",
  "message": "Too many requests"
}
Headers: Retry-After (seconds, e.g. "60"), X-RateLimit-Limit, X-RateLimit-Remaining ("0" when exceeded), X-RateLimit-Reset (Unix timestamp in seconds, as string). See Rate Limiting and Error Handling.