Every chain and the route of each capability
const url = 'https://api.getchord.xyz/v1/chains';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/chainsThe directory an agent starts from. One entry per chain Chord serves, with its constants (native asset, wrapped native, dollar anchors with real decimals, explorer) and, for each capability, the route that serves it on that chain. A capability the chain does not have is null: the data routes grew chain by chain, so this is the one place that says where to read what. Solana is listed with id: null and base58, case-sensitive addresses; its quote and swap are /sol/trade/quote and /sol/trade/send while its trade lane is open to everyone. A chain that is not public yet appears only for a caller with an API key.
Responses
Section titled “ Responses ”object
object
Chain key, the value every chain parameter accepts.
EVM chain id; null for Solana.
Short label.
evm (0x, case-insensitive) or base58 (case-sensitive).
object
The token the native asset is stored under.
object
Read on chain. BNB Chain’s dollar stables have 18.
1 for a dollar stable; null for a rate anchor.
Measured average.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The route that serves this capability on this chain, or null when the chain does not have it.
object
GET or POST.
Path under the host, with {address} / {wallet} placeholders to fill.
Fixed query values; {address} / {wallet} / {q} inside a value are placeholders too.
object
The hosted MCP endpoint pinned to this chain.
Every capability name, in table order.
ISO time.
Example
{ "chains": [ { "key": "arc", "id": 5042, "name": "Arc", "short": "Arc", "addressFormat": "evm", "native": { "symbol": "USDC", "decimals": 18 }, "wrappedNative": "0x3600000000000000000000000000000000000000", "anchors": [ { "symbol": "USDC", "address": "0x3600000000000000000000000000000000000000", "decimals": 6, "stableUsd": 1 } ], "explorer": "https://explorer.arc.io", "blockTimeSec": 0.5, "capabilities": { "search": { "method": "GET", "path": "/v1/tokens/search", "query": { "chain": "5042", "q": "{q}" } }, "candles": { "method": "GET", "path": "/v1/candles", "query": { "chain": "5042", "token": "{address}" } }, "wallet": { "method": "GET", "path": "/v1/portfolio/{wallet}/pnl", "query": { "chain": "5042" } }, "walletTrades": { "method": "GET", "path": "/v1/portfolio/{wallet}/trades", "query": { "chain": "5042" } }, "lpPools": { "method": "GET", "path": "/v1/lp/pools", "query": { "chain": "5042" } }, "lpPositions": { "method": "GET", "path": "/v1/lp/positions", "query": { "chain": "5042", "owner": "{wallet}" } }, "overview": { "method": "GET", "path": "/v1/arc/overview" }, "tokens": { "method": "GET", "path": "/v1/arc/tokens" }, "token": { "method": "GET", "path": "/v1/arc/token/{address}" }, "trades": { "method": "GET", "path": "/v1/arc/token/{address}/trades" }, "smartMoney": { "method": "GET", "path": "/v1/smart-money/top", "query": { "chain": "5042", "source": "onchain" } }, "holders": { "method": "GET", "path": "/v1/arc/token/{address}/holders" }, "quote": { "method": "GET", "path": "/v1/meta/quote", "query": { "chain": "5042" } }, "swap": { "method": "POST", "path": "/v1/meta/swap" } }, "mcp": "https://api.getchord.xyz/v1/mcp?chain=arc" }, { "key": "base", "id": 8453, "name": "Base", "short": "Base", "addressFormat": "evm", "native": { "symbol": "ETH", "decimals": 18 }, "wrappedNative": "0x4200000000000000000000000000000000000006", "anchors": [ { "symbol": "WETH", "address": "0x4200000000000000000000000000000000000006", "decimals": 18, "stableUsd": null }, { "symbol": "USDC", "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "decimals": 6, "stableUsd": 1 } ], "explorer": "https://basescan.org", "blockTimeSec": 2, "capabilities": { "overview": { "method": "GET", "path": "/v1/chains/base/overview" }, "tokens": { "method": "GET", "path": "/v1/chains/base/tokens" }, "search": { "method": "GET", "path": "/v1/tokens/search", "query": { "chain": "8453", "q": "{q}" } }, "token": { "method": "GET", "path": "/v1/chains/base/token/{address}" }, "trades": { "method": "GET", "path": "/v1/chains/base/token/{address}/trades" }, "candles": { "method": "GET", "path": "/v1/candles", "query": { "chain": "8453", "token": "{address}" } }, "wallet": { "method": "GET", "path": "/v1/chains/base/wallet/{wallet}" }, "walletTrades": null, "smartMoney": null, "holders": null, "lpPools": null, "lpPositions": null, "quote": { "method": "GET", "path": "/v1/meta/quote", "query": { "chain": "8453" } }, "swap": { "method": "POST", "path": "/v1/meta/swap" } }, "mcp": "https://api.getchord.xyz/v1/mcp?chain=base" } ], "capabilities": [ "overview", "tokens", "search", "token", "trades", "candles", "wallet", "walletTrades", "smartMoney", "holders", "lpPools", "lpPositions", "quote", "swap" ], "updatedAt": "2026-10-11T17:33:08.447Z"}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"}