{ error: { code, message, details? }, meta }. Branch on the stable code,
because the human-readable message may change.
| Code | HTTP | Meaning |
|---|---|---|
INVALID_REQUEST | 400 | The body or params failed validation. The details field lists the fields. |
UNSUPPORTED_TOKEN | 400 | The token is not resolvable on that chain. |
UNSUPPORTED_CHAIN | 400 | The chain ID isn’t one RAVN supports. |
NO_LIQUIDITY | 404 | No venue could quote this pair or amount. |
NOT_FOUND | 404 | The resource doesn’t exist for this caller, for example PATCH /v1/keys feeBps on a non-self-serve key. |
QUOTE_EXPIRED | 410 | The quoteToken is past expiry. Request a new quote. |
QUOTE_INVALID | 400 | The quoteToken is malformed or tampered. |
QUOTE_NOT_EXECUTABLE | 400 | The quoteToken decodes fine but is a preview only (executable: false on the quote). Request a fresh quote with the missing destination or refund address. |
RATE_LIMITED | 429 | Your tier’s rate limit was exceeded (see Authentication). |
UNAUTHORIZED | 401 | A presented x-api-key doesn’t match any known key. No key at all is fine, that’s the anonymous tier. |
INTERNAL | 500 | An unexpected or venue-side error occurred. |
{
"error": {
"code": "NO_LIQUIDITY",
"message": "No liquidity available for this pair/amount",
"details": {
"routeType": "EVM_CROSS_CHAIN",
"eligibleVenues": ["across", "relay", "mayan"],
"excludedVenues": []
}
},
"meta": { "requestId": "6b50...19e", "version": "2024-01" }
}
Debugging
NO_LIQUIDITY: read details before assuming it’s a real liquidity gap.
eligibleVenues is every venue that could serve this chain pair, computed before your own
excludeVenues is applied; excludedVenues echoes back what you passed. If eligibleVenues is
non-empty but you also passed excludeVenues, you may have excluded every venue that could have
served the route yourself. A route through Bitcoin-source THORChain specifically drops out of
eligibleVenues whenever THORChain’s HALTMEMOLESS flag is set, see
Supported Chains & Venues, while Chainflip, Relay, and NEAR Intents stay
unaffected for the same pair.Always log the
requestId from meta, which is also in the x-request-id header. Include it
when you contact support and we can trace the exact request.
