API

Error codes

Every API error has a consistent shape: an HTTP status, a stable machine-readable code, and a human-readable message that explains what specifically went wrong.

Response shape

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json

{
  "error": {
    "code": "invalid_chain",
    "message": "Chain 'eth' is not supported. Use one of: base, bsc, tempo.",
    "request_id": "req_3pX..."
  }
}

Always include the request_id when you reach out to support — it lets us pull every log for the call in one query.

Common codes

HTTPCodeWhat it means
400invalid_requestBody failed schema validation. Check the message for the field.
401unauthorizedMissing, malformed, or revoked API key.
403forbiddenKey is valid but its scope doesn't allow this action.
404not_foundResource ID doesn't exist in your account.
409conflictResource is in a state that can't accept this action (e.g. cancelling a paid order).
422invalid_chainUnsupported chain on a chain-scoped endpoint.
422invalid_recipientHandle doesn't resolve, or address is malformed.
429rate_limitedSlow down. Honour Retry-After.
500internal_errorOur fault. Retry with backoff; we're already paging on it.
503upstream_unavailableRPC or indexer is briefly down. Retry in a few seconds.

Idempotency

Send an Idempotency-Key header on any POST. Retrying with the same key and body returns the original response without creating a duplicate resource. Keys are scoped to the API key and remembered for 24 hours.