Fallback order and breaker state per chain
const url = 'https://api.getchord.xyz/v1/meta/providers';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.getchord.xyz/v1/meta/providersWhich aggregators stand behind Chord’s router on each chain, in the order they are tried, and whether each one’s circuit breaker is closed. first is always chord.
Responses
Section titled “ Responses ”Per chain.
object
object
Always chord.
object
closed, open (skipped for up to 60 s after 5 infrastructure failures in 2 minutes) or half-open (the next request probes it).
Example
{ "policy": "Chord's router answers first; a fallback is used only when Chord fails, never for a better price.", "chains": [ { "chain": 143, "key": "monad", "first": "chord", "fallbacks": [ { "provider": "kyberswap", "breaker": "closed" }, { "provider": "monorail", "breaker": "closed" }, { "provider": "relay", "breaker": "closed" } ] }, { "chain": 4663, "key": "robinhood", "first": "chord", "fallbacks": [ { "provider": "kyberswap", "breaker": "closed" }, { "provider": "lifi", "breaker": "closed" }, { "provider": "relay", "breaker": "closed" } ] }, { "chain": 5042, "key": "arc", "first": "chord", "fallbacks": [ { "provider": "kyberswap", "breaker": "closed" }, { "provider": "lifi", "breaker": "closed" }, { "provider": "relay", "breaker": "closed" } ] }, { "chain": 43114, "key": "avalanche", "first": "chord", "fallbacks": [ { "provider": "kyberswap", "breaker": "closed" }, { "provider": "lifi", "breaker": "closed" }, { "provider": "relay", "breaker": "closed" } ] }, { "chain": 8453, "key": "base", "first": "chord", "fallbacks": [ { "provider": "kyberswap", "breaker": "closed" }, { "provider": "lifi", "breaker": "closed" }, { "provider": "relay", "breaker": "closed" } ] }, { "chain": 56, "key": "bnb", "first": "chord", "fallbacks": [ { "provider": "kyberswap", "breaker": "closed" }, { "provider": "lifi", "breaker": "closed" }, { "provider": "relay", "breaker": "closed" } ] } ]}Over the per-minute limit (RATE_LIMIT_EXCEEDED). Read X-RateLimit-Reset and back off.
Every non-2xx body.
object
Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.
For humans.
HTTP status, when included.
Example
{ "error": "INVALID_PARAMS", "message": "amount must be an integer string in the token's smallest unit"}The lane behind this endpoint is not ready or not enabled here (NOT_READY, CHAIN_NOT_ENABLED, NOT_ENABLED, *_UNAVAILABLE). Retry later; do not treat it as an empty answer.
Every non-2xx body.
object
Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.
For humans.
HTTP status, when included.
Example
{ "error": "INVALID_PARAMS", "message": "amount must be an integer string in the token's smallest unit"}