Errors

Every error uses the same JSON shape and includes a request_id you can quote when reaching out for support.

Error shape

Error response
{
  "error": {
    "code": "invalid_request",
    "message": "lead_age_days must be greater than or equal to 0",
    "request_id": "req_xxx"
  }
}

Error messages are always sanitized — we never return stack traces or internal details.

HTTP status codes

FieldTypeDescription
400invalid_requestValidation failed or the JSON body was malformed.
401invalid_api_keyMissing, malformed, or unknown API key.
401revoked_api_keyThe API key has been revoked.
403forbiddenThe key is valid but not permitted to perform the action.
404not_foundThe requested resource does not exist.
409conflictThe request conflicts with current state (e.g. duplicate name).
413payload_too_largeThe request body exceeded the size limit.
429usage_limit_exceededA monthly quota was exceeded.
429rate_limit_exceededThe short-term burst limit was exceeded.
500internal_errorAn unexpected server error occurred.

Error codes

Handle errors by branching on error.code rather than the message string, since messages may be refined over time.