EIN0001 reference amount | invalid form | a float, an exponent, a sign, leading zeros, zero, or over 80 characters | send a decimal base-unit string | Get quote (POST /quote) |
EIN0001 reference sourceAsset/destAsset, params [reference chain, request chain] | invalid form | an asset reference whose chain differs from the request’s | match the reference’s chain to the request | Get quote |
EIN0001 reference sourceAsset | invalid form | a bare 0x… address | send an assetKey, or <chainDomain>:<address> | Conventions — value formats; Get quote |
EIN0001 reference recipient / sourceAccount | invalid form | a non-EVM address that doesn’t decode (EVM addresses are not format-checked at this point) | send a family-correct address; the SDK’s quote calls refuse one that cannot be on its chain before any call, EVM included (Quotes and checks) | Get quote |
EIN0001 reference maxAmountIn | invalid form | a cap sent on an exact-input request | omit it, or send swapType: "exact-output" | Get quote |
EIN0001 reference swapType | invalid form | misspelled or miscased, or exact-output from a token-in source | send exact-input/exact-output, case-sensitive | Get quote |
EIN0001 reference slippageBps | invalid form | outside 1–1000 | — | Get quote (slippageBps) |
EIN0002 | unsupported corridor | an undeclared source on a chain with no swap router; no ERC-20 at a token-in reference; an unknown asset key; or an eip155 chain the deployment doesn’t serve (reference chain <id> has no corridor assets) | pick from GET /catalog; check the address and the chain | Get quote |
EIN0007 (on POST /quote) | rejected | the hub’s own fail-closed checks refused the round | re-quote; quote the request_id if it repeats | Get quote |
EIN0008 reference providerRefused | no viable route | the amount is below a provider’s economic floor, or maxAmountIn is under the price | try another amount, or raise the cap — this is terminal | Get quote |
EIN0008 reference notFillable, params [destination chain] | no viable route | nobody delivers to that destination | try another destination | Get quote |
EIN0050 params [responseRejected] / [solverUnavailable] / [providerMissed] | upstream unavailable | availability, not a fact about the request as sent | retry later | Get quote |
EIN0050 params [upstreamAuth] (any route that calls an upstream, except POST /quote/preview, which answers a bare EIN0050) | upstream unavailable | an upstream refused the hub’s own credential | an operator must renew it; do not loop | Get quote; Errors — the blocks |
EIN0050 bare, on POST /quote | upstream unavailable | the deployment has paused exposure. An unconfigured chain domain answers otherwise: EIN0002 for an eip155 one, EIN0050 [responseRejected] for any other | — | Get quote |
EIN0080 | rate limited | your organization’s quote bucket at the hub is exhausted | see walk-through 4 | Get quote; Limits |
EIN0081 | busy | the in-flight quote cap (64 per process) is full | back off and retry | Get quote; Limits |
Preview: EIN0050 bare, the same on every retry | upstream unavailable | most likely no offer, not an outage: preview reports any provider error this way, a refusal of the request as sent included — an amount below the provider’s minimum, an exact-output request over maxAmountIn, a Solana source without sourceAccount (known issue) | check the amount and sourceAccount; POST /quote answers the same request with EIN0008 (reference providerRefused for an amount or a cap); don’t retry in a loop | Preview quotes |
Preview: offers: [], success: true | — | no provider call failed and none produced an offer for this request as sent — or no provider was asked, because every provider’s circuit breaker is open | change the request, or retry later | Preview quotes |
Prepare: EIN0001 reference preparationId | invalid form | the id was reused with different inputs or provider | use a new id | Prepare quote |
Prepare: EIN0001 reference preparationId/provider | invalid form | the id isn’t ^[A-Za-z0-9_-]{16,128}$, or provider is malformed | — | Prepare quote |
Prepare: EIN0005 | quote expired | the stored preparation expired, or its configuration moved on | create a new id and prepare again | Prepare quote |
Prepare: EIN0008, empty reference | no viable route | the one named provider has no winner | pick another preview offer | Prepare quote |
| A Sui or Aptos source | refused | Sui and Aptos are destination-only chains: source chains are EVM and Solana, and a quote whose source is a Sui or Aptos chain is refused. The catalog’s family tells you which rail a chain is on | source from an EVM or Solana chain; keep Sui or Aptos as the destination | Get quote; Supported chains and assets |
A winner discloses no signIntent | (success) | the hub could not build the order-intent text for it | re-quote; a signed POST /order is impossible for this quote | Get quote (QuoteResponse.signIntent) |
EVM↔EVM quote sent with no sourceAccount | (success) | the quote is fine, but a signed POST /order is impossible (signer must equal sourceAccount); and a signer other than the recipient pays for an order whose user, and refund beneficiary, is the recipient. (On an OIF-only deployment POST /order refuses every quote with EIN0007 first: known issue) | send sourceAccount, the paying wallet | Get quote; Create order |
Non-EVM (Solana) source sent with no sourceAccount | EIN0050 bare on POST /quote/preview (known issue); EIN0008 with no reference on POST /quote, which quotes the recipient as the payer | the aggregator adapter needs the funding account to build the request | send sourceAccount | Get quote (sourceAccount) |
A winner discloses neither signPayload nor executionTx | (success) | a same-chain solver-swap winner, or a transfer winner | quotable, but not completable through the hub | Get quote |