Troubleshooting
400 INVALID_PARAMS on /quote
Section titled “400 INVALID_PARAMS on /quote”The message names the parameter. The usual ones: amount sent as a float or with decimals (it must be an integer string in the smallest unit); inputMint equal to outputMint; a chain id the API does not serve.
400 SLIPPAGE_MISMATCH on /swap
Section titled “400 SLIPPAGE_MISMATCH on /swap”You sent a slippageBps that differs from the quote’s. The signed minimum is the quote’s otherAmountThreshold; the field on /swap is a consistency check. Omit it, or quote again at the slippage you want.
400 ROUTE_MISMATCH on /swap
Section titled “400 ROUTE_MISMATCH on /swap”The quote body was edited between /quote and /swap (re-serialised numbers, dropped fields). Pass the parsed object back untouched.
The transaction reverts with insufficient output
Section titled “The transaction reverts with insufficient output”The price moved past otherAmountThreshold between quote and execution. Quote again. Do not resubmit an old transaction — and if the route is a fresh launchpad curve, expect the number to move fast.
The transaction reverts before the wallet opens
Section titled “The transaction reverts before the wallet opens”Run POST /v1/swap/simulate. revert names it: Router is not approved… means approve first (an approve that is not mined yet also triggers this — proceed); ERC20InsufficientBalance means the wallet does not hold inputAmount; a paused venue is muted within seconds, quote again.
Broadcast times out on Arc
Section titled “Broadcast times out on Arc”The public gateway has been seen dropping one send in six. Broadcast through a dedicated RPC and, on a timeout, resend the same signed transaction (same nonce) rather than rebuilding.
404 UNKNOWN_TOKEN on charts, trades or stats
Section titled “404 UNKNOWN_TOKEN on charts, trades or stats”The address is neither on a curated list nor a side of an indexed pool. For Arc, check GET /v1/arc/tokens/search?q=0x… — if it returns a row with pools counts, the token is indexed and the chart will fill as trades arrive; if not, the token has no pool yet.
503 HOLDERS_PENDING
Section titled “503 HOLDERS_PENDING”The holder ledger just pinned the token. The backfill walks Transfer logs back to the creation block; retry in a few minutes and read complete.
503 CHAIN_NOT_ENABLED on /smart-money/top
Section titled “503 CHAIN_NOT_ENABLED on /smart-money/top”The board is not published for that chain on this deployment, or source=onchain was omitted on 5042 / 4663.
429 on a page that “only reads”
Section titled “429 on a page that “only reads””Logos, token reads and the default bucket are separate. A list page that paints hundreds of logos uses the logo bucket (3,000 a minute); table reads use the data bucket (300); /arc/* and /lp/* use the default (60). If you serve many users from one server IP, use a key so the limit is yours.
Numbers differ from another explorer
Section titled “Numbers differ from another explorer”Chord counts every swap with no dust floor, attributes wallets through routers and executors, flags wash volume instead of summing it, and prices a token on its dominant venue. Read Data freshness and honesty before comparing.
WebSocket disconnects after ~100 s behind a proxy
Section titled “WebSocket disconnects after ~100 s behind a proxy”The server pings every 25 s; make sure your proxy passes WebSocket frames and does not idle-close at a lower interval. Reconnect with jittered backoff and re-subscribe — the server keeps no state for a closed socket.
Still stuck
Section titled “Still stuck”GET /v1/health for the service, /v1/arc/status · /v1/rh/status · /v1/lp/status for the lanes. Then the Chord developer page has the contact.