400 | invalid-request, invalid-parameter, missing-parameter, slippage-out-of-bounds | Fix the field named in errors: nesting (funder belongs in source), a missing type or dappId, address format, units, a quoteId sent with its quote: prefix, or limit above 50. Do not retry unchanged. |
401 | invalid-api-key, api-key-expired, invalid-signature, authorization-expired | invalid-api-key without detail: the supplied key is unknown, revoked, or not enabled for v1; returned on every endpoint, including ones that work without a key. With detail “could not be attributed” on a submit endpoint: the key is valid but not yet mapped to a partner; contact Eco. Signature codes need a fresh signature. Do not retry unchanged. |
403 | Gateway {"Message": …} (no code), permission-denied, funder-mismatch | On a required endpoint without a key: add the key. Otherwise the key lacks permission, or the signer does not match the funder. |
404 | endpoint-not-found, token-not-found | Check the path. Note that status lookups never return 404; an unknown ID reports status: "unknown" with 200. Unknown paths under /v1 may return the gateway 403 instead. |
409 | signature-already-bound, nonce-used | The signature or nonce was already used. Look up the original job before signing again. |
410 | quote-expired | Request a fresh quote. Quotes are short-lived; read expiresAt. |
422 | chain-not-supported, no-route-found, chain-pair-unsupported, amount-too-low, amount-too-high, insufficient-liquidity, simulation-failed | Every solver rejected the request for a stated reason. Change the request. An unsupported chain returns chain-not-supported; other unfillable routes still surface as 502 solver-error (see below). |
429 | rate-limit-exceeded | Back off. Honor Retry-After when present. |
500, 502, 503 | internal-error, solver-error, solver-timeout, service-unavailable | For reads and quotes: bounded retry with backoff. For submits: resend the identical signed payload to the same endpoint; the API returns the existing job with 200 rather than creating a second one. |