Skip to main content
Errors use standard HTTP status codes and a consistent JSON envelope:
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_SCOPE",
    "message": "API key does not have the required scope",
    "details": { "required_scope": "tickets:write" }
  }
}
Always branch on the machine-readable error.code, not the human message.

Common codes

StatusCodeMeaning
401MISSING_AUTHORIZATIONNo credentials supplied
401INVALID_API_KEYKey is invalid, revoked, or expired
403INSUFFICIENT_SCOPEKey lacks the scope this endpoint needs
403ENDPOINT_NOT_PUBLICEndpoint isn’t available to API keys (dashboard only)
403IP_NOT_ALLOWEDKey used from a non-allow-listed IP
404NOT_FOUNDResource doesn’t exist in your organization
422VALIDATION_ERRORRequest body failed validation
429RATE_LIMIT_EXCEEDEDToo many requests — see Rate Limits
500INTERNAL_ERRORSomething went wrong on our side