Skip to content

Error codes

A stable, machine-readable error catalog. Codes are never removed or reused, and HTTP status always follows semantics.

Catalog

Common public error codes, their HTTP status, and whether a client should retry them automatically.

CodeHTTPRetryableMeaning
INSUFFICIENT_CREDIT402
No
Wallet balance is below the call's cost. Top up or enable auto-recharge.
WALLET_CAP_EXCEEDED402
No
Wallet has reached its balance cap. Spend down, or upgrade your plan.
PRO_REQUIRED402
No
This feature or module requires the Pro plan.
KYC_REQUIRED402
No
Monthly top-up has crossed the threshold that requires identity verification.
TOPUP_2FA_REQUIRED402
No
A large top-up triggered email 2FA; retry with the challenge token and code.
BYOK_TRIAL_EXPIRED402
No
The 30-day BYOK trial has ended; upgrade to Pro to keep using your own keys.
UNAUTHORIZED401
No
Missing or invalid project key.
SCOPE_INSUFFICIENT403
No
The project key's scope does not include this capability.
KEY_REVOKED403
No
The project key has been revoked; use a new key.
MODULE_NOT_AVAILABLE_IN_REGION403
No
This module is not available in the current region SKU.
IDEMPOTENCY_KEY_REQUIRED400
No
Resource-creation calls must include an idempotency_key.
IDEMPOTENCY_CONFLICT409
No
The same idempotency_key was reused with different parameters.
RATE_LIMIT_USER429
Auto-retry
Per-user rate limit reached; wait for Retry-After or upgrade for higher quota.
RATE_LIMIT_IP429
Auto-retry
Per-IP rate limit reached; wait for Retry-After.
VENDOR_QUOTA_EXCEEDED429
Auto-retry
Upstream vendor quota is exhausted; the gateway fails over to another vendor automatically.
VENDOR_DOWN503
Auto-retry
Upstream vendor is down and failover did not succeed.
VENDOR_TIMEOUT503
Auto-retry
Upstream vendor exceeded the timeout; the call is retried.
MAINTENANCE503
Auto-retry
Planned maintenance window; wait for Retry-After.
UNKNOWN_ERROR500
No
An unrecognized error code (forward compatibility); surfaced as-is to your code.

Handling errors

By default a failed call returns a result with an error instead of throwing, so your business flow is never interrupted.

Rate-limit and upstream errors are retried automatically with backoff, honoring the Retry-After header.

Published error codes are permanent: their meaning never silently changes, and deprecated codes keep returning for at least 12 months.