Skip to main content
Every failed request returns a standard HTTP status code and a JSON body with a single error field describing what went wrong:
{ "error": "message is handled, not awaiting_review" }
Branch on the HTTP status. Treat error as a human-readable message for logs and developers, not a stable machine code.

Status codes

StatusMeaningTypical cause
400 Bad RequestMalformed, or not valid for the resource’s current stateMissing/invalid field, an unknown enum value, or a wrong-state action (e.g. replying to a message that isn’t awaiting_review)
401 UnauthorizedNo valid credentialMissing, malformed, expired, or revoked token
402 Payment RequiredA plan or credit limit blocks the actionOut of credits; the plan’s email-inbox limit reached
403 ForbiddenAuthenticated but not allowedThe token lacks the required scope; not an admin; not a participant of the resource
404 Not FoundNo such resource for this callerUnknown id — or a resource in another workspace
409 ConflictCollides with existing statee.g. an email address already in use
429 Too Many RequestsRate limit exceededSee Rate limits
503 Service UnavailableA dependency isn’t configured or availablee.g. billing not configured
500 Internal Server ErrorUnexpected server errorRetry; if it persists, contact support
For resources outside your workspace HQ returns 404, not 403, so the API never reveals whether an id you can’t access exists.