← Documentation

Errors

Stable error codes and deterministic recovery metadata.

{
  "version": "2026-08-v6",
  "errors": [
    {
      "code": "INVALID_CLAIM",
      "http_status": 400,
      "retryable": false,
      "description": "The supplied claim is missing or invalid."
    },
    {
      "code": "COMPOUND_CLAIM",
      "http_status": 422,
      "retryable": false,
      "description": "The request contains multiple material factual claims; submit each separately."
    },
    {
      "code": "VALIDATION_ERROR",
      "http_status": 400,
      "retryable": false,
      "description": "One or more request fields failed validation."
    },
    {
      "code": "INVALID_JSON",
      "http_status": 400,
      "retryable": false,
      "description": "The request body is not valid JSON."
    },
    {
      "code": "UNSUPPORTED_MEDIA_TYPE",
      "http_status": 415,
      "retryable": false,
      "description": "The request Content-Type is not supported."
    },
    {
      "code": "UNSUPPORTED_CURRENCY",
      "http_status": 400,
      "retryable": false,
      "description": "The requested app currency is not supported."
    },
    {
      "code": "REQUEST_TOO_LARGE",
      "http_status": 413,
      "retryable": false,
      "description": "The request exceeds the configured size limit."
    },
    {
      "code": "INVALID_QUESTION",
      "http_status": 400,
      "retryable": false,
      "description": "The bounded Help question is missing or invalid."
    },
    {
      "code": "INVALID_DATE_FILTER",
      "http_status": 400,
      "retryable": false,
      "description": "A transaction date filter is invalid."
    },
    {
      "code": "INVALID_SUPPORT_CATEGORY",
      "http_status": 400,
      "retryable": false,
      "description": "The support category is not recognized."
    },
    {
      "code": "INVALID_SUPPORT_MESSAGE",
      "http_status": 400,
      "retryable": false,
      "description": "The support message is missing or invalid."
    },
    {
      "code": "INVALID_JOB_ID",
      "http_status": 400,
      "retryable": false,
      "description": "The supplied job identifier is malformed."
    },
    {
      "code": "INVALID_EMAIL",
      "http_status": 400,
      "retryable": false,
      "description": "The supplied delivery email address is invalid."
    },
    {
      "code": "SOURCE_UNSAFE",
      "http_status": 400,
      "retryable": false,
      "description": "The supplied source failed source-safety validation."
    },
    {
      "code": "SOURCE_UNAVAILABLE",
      "http_status": 422,
      "retryable": true,
      "description": "The source could not currently be retrieved."
    },
    {
      "code": "PAYMENT_REQUIRED",
      "http_status": 402,
      "retryable": true,
      "description": "A valid payment or entitlement is required."
    },
    {
      "code": "ENTITLEMENT_INVALID",
      "http_status": 403,
      "retryable": true,
      "description": "The supplied commercial entitlement is invalid or inactive."
    },
    {
      "code": "UNAUTHORIZED",
      "http_status": 401,
      "retryable": false,
      "description": "A valid Bearer API credential is required."
    },
    {
      "code": "INSUFFICIENT_SCOPE",
      "http_status": 403,
      "retryable": false,
      "description": "The authenticated credential lacks the required least-privilege scope."
    },
    {
      "code": "ACCOUNT_VERIFICATION_REQUIRED",
      "http_status": 403,
      "retryable": false,
      "description": "The account must complete identity verification before creating jobs."
    },
    {
      "code": "ACCOUNT_RESTRICTED",
      "http_status": 403,
      "retryable": false,
      "description": "The account can authenticate and read historical records but cannot create new jobs."
    },
    {
      "code": "ACCOUNT_SUSPENDED",
      "http_status": 403,
      "retryable": false,
      "description": "The account cannot create new jobs; safe historical reads and support remain available."
    },
    {
      "code": "INVALID_VERIFICATION_TOKEN",
      "http_status": 400,
      "retryable": false,
      "description": "The email verification request is invalid, expired, or already used."
    },
    {
      "code": "CREDENTIAL_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The credential does not exist for this authenticated account."
    },
    {
      "code": "RECIPIENT_NOT_VERIFIED",
      "http_status": 403,
      "retryable": false,
      "description": "Receipt email delivery is limited to a verified account address."
    },
    {
      "code": "JOB_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The requested record does not exist for this authenticated agent."
    },
    {
      "code": "TRANSACTION_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The transaction does not exist for this authenticated agent."
    },
    {
      "code": "REFUND_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The refund does not exist for this authenticated agent."
    },
    {
      "code": "RECEIPT_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The receipt does not exist for this authenticated agent."
    },
    {
      "code": "SUPPORT_TICKET_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The support ticket does not exist for this authenticated agent."
    },
    {
      "code": "HELP_TOPIC_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The requested Help topic does not exist."
    },
    {
      "code": "POLICY_NOT_FOUND",
      "http_status": 404,
      "retryable": false,
      "description": "The requested policy does not exist."
    },
    {
      "code": "RATE_LIMITED",
      "http_status": 429,
      "retryable": true,
      "description": "The request rate limit was reached; wait for Retry-After before retrying."
    },
    {
      "code": "RATE_LIMIT_EXCEEDED",
      "http_status": 429,
      "retryable": true,
      "description": "The agent request rate limit was reached."
    },
    {
      "code": "GLOBAL_CONCURRENCY_EXCEEDED",
      "http_status": 429,
      "retryable": true,
      "description": "Service processing capacity is temporarily full."
    },
    {
      "code": "DAILY_SPEND_LIMIT_EXCEEDED",
      "http_status": 429,
      "retryable": true,
      "description": "The configured daily provider-spend limit was reached."
    },
    {
      "code": "HOURLY_SPEND_LIMIT_EXCEEDED",
      "http_status": 429,
      "retryable": true,
      "description": "The configured hourly provider-spend limit was reached."
    },
    {
      "code": "ACCOUNT_RATE_LIMIT_EXCEEDED",
      "http_status": 429,
      "retryable": true,
      "description": "The account hourly job limit was reached."
    },
    {
      "code": "ACCOUNT_DAILY_LIMIT_EXCEEDED",
      "http_status": 429,
      "retryable": true,
      "description": "The account daily job limit was reached."
    },
    {
      "code": "ACCOUNT_CONCURRENCY_EXCEEDED",
      "http_status": 429,
      "retryable": true,
      "description": "The account concurrent-job limit was reached."
    },
    {
      "code": "COST_LIMIT_EXCEEDED",
      "http_status": 422,
      "retryable": false,
      "description": "The verification would exceed its configured cost ceiling."
    },
    {
      "code": "IDEMPOTENCY_CONFLICT",
      "http_status": 409,
      "retryable": false,
      "description": "The idempotency key was previously used with different content."
    },
    {
      "code": "RESULT_NOT_READY",
      "http_status": 409,
      "retryable": true,
      "description": "The verification result is not ready."
    },
    {
      "code": "RECEIPT_NOT_READY",
      "http_status": 409,
      "retryable": true,
      "description": "The verification receipt is not ready."
    },
    {
      "code": "RECEIPT_SIGNING_NOT_CONFIGURED",
      "http_status": 503,
      "retryable": true,
      "description": "Receipt signing keys are not provisioned."
    },
    {
      "code": "PAID_JOBS_DISABLED",
      "http_status": 503,
      "retryable": true,
      "description": "The paid-job kill switch is active."
    },
    {
      "code": "JOB_UNAVAILABLE",
      "http_status": 500,
      "retryable": true,
      "description": "The accepted job could not be loaded."
    },
    {
      "code": "INTERNAL_ERROR",
      "http_status": 500,
      "retryable": true,
      "description": "The request could not be completed."
    },
    {
      "code": "INTERNAL_FAILURE",
      "http_status": 500,
      "retryable": true,
      "description": "An internal service failure prevented completion."
    },
    {
      "code": "SERVICE_UNAVAILABLE",
      "http_status": 503,
      "retryable": true,
      "description": "The requested service capability is temporarily unavailable."
    }
  ]
}

Machine-readable response