# Troubleshooting

> The failures integrators hit, what they mean, and the fix.

Source: https://getchord.xyz/docs/resources/troubleshooting/

## `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`

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`

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

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

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

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

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`

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`

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"

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

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](/docs/concepts/data-freshness/) before comparing.

## 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

`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.
