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
| HTTP | Code | What it means |
|---|---|---|
| 400 | invalid_request | Body failed schema validation. Check the message for the field. |
| 401 | unauthorized | Missing, malformed, or revoked API key. |
| 403 | forbidden | Key is valid but its scope doesn't allow this action. |
| 404 | not_found | Resource ID doesn't exist in your account. |
| 409 | conflict | Resource is in a state that can't accept this action (e.g. cancelling a paid order). |
| 422 | invalid_chain | Unsupported chain on a chain-scoped endpoint. |
| 422 | invalid_recipient | Handle doesn't resolve, or address is malformed. |
| 429 | rate_limited | Slow down. Honour Retry-After. |
| 500 | internal_error | Our fault. Retry with backoff; we're already paging on it. |
| 503 | upstream_unavailable | RPC 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.