Errors & limits
What each error means and how to fix it.
Every error is JSON: { "error": "what went wrong", "code": "short_code" }.
| Status | Meaning | What to do |
|---|---|---|
| 400 | Something in your request is wrong (a missing field, a bad address, a Robinhood address sent to a Solana endpoint) | Read error; it says which field. |
| 401 | Missing or unknown API key | Add ?api-key=…. Create a key on Get an API key. |
| 404 | We could not find that coin on this launchpad | Check the address and the chain prefix. For graduated Solana coins use pool: "auto". |
| 409 | The coin moved venues, or your wallet holds none of it | Use pool: "auto", or check your balance. |
| 422 | The transaction would fail on chain (we simulated it), or the venue could not be quoted (quote_failed) | Usually slippage or not enough SOL/ETH. quote_failed: the pool refused the swap in simulation; a trade is never built with min-out 0 unless you pass slippage: 100. |
| 429 | Too many requests | Wait retry-after seconds. |
| 502 | A node or Jito refused it | Retry after a moment. |
Limits
- 300 requests a minute per API key, 25 per second burst (
429withretry-after). - Up to 4 websocket connections per IP, 500 subscriptions per connection.
- 5 new API keys per hour per IP.
Error codes
Stable code values. Each error also carries hint (what to change) and docs (a link to the row below).
- bad_request
- 400 · a field is missing or malformed; the message names it. Field names and types:
openapi.json. - not_found
- 404 · unknown route, or no token / pool at that address on this chain.
GET /api/chainslists what exists. - not_pons
- 404 · the Robinhood routes take pons tokens only; Solana mints go to
/api/sol/…. - no_curve
- 404 · not a pump.fun coin, or it graduated: use
pool: "auto". - curve_not_ready
- 409 · the coin is seconds old and its curve is not readable yet; retry in 1–2 s.
- graduated
- 409 · the coin moved to the AMM; use
pool: "auto"or"pump-amm". - no_balance
- 409 · the wallet holds none of this token.
- no_pool
- 409 · no PumpSwap pool yet; trade on the curve.
- launch_disabled
- 409 · the launchpad is not accepting launches right now.
- nothing_to_collect
- 409 · no creator fees are claimable for this wallet.
- lightning_off
- 409 · custodial mode is off on this server; use
trade-local. - no_wallet
- 409 · this key has no linked wallet; use
trade-localwith your own. - quote_failed
- 422 · the venue refused the swap in simulation; a trade is never built with min-out 0 unless
slippage: 100. - simulation_failed
- 422 · the transaction would fail on chain (slippage, balance, stale state). Quote again, raise slippage or lower the amount.
- tx_too_large
- 422 · over 1232 bytes; fewer buyers per transaction or a lookup table (
POST /api/sol/lut). - fee_missing
- 400 ·
send/bundlerelay pump.fun and PumpSwap trades astrade-localbuilt them, fee transfer included. A trade with the fee removed is refused on our lanes (any other RPC still accepts it). Rebuild withtrade-localand send that transaction. - vanity_too_long
- 400 · the pattern exceeds what our workers grind (4 characters). Grind locally with the SDK.
- vanity_busy
- 409 / 429 · one running vanity job per key, and a global cap on concurrent jobs. Poll the running one, retry in a minute, or grind locally.
- transfer_off
- 503 · exchange-routed transfers are not enabled on this server;
route: "direct"still works. - transfer_busy
- 429 · the shared exchange budget (~10 orders/min) is used up; retry in a minute.
- transfer_address
- 400 · the destination address was refused for that network.
- transfer_min_amount
- 400 · below the exchange minimum for the pair (
routesshows it). - transfer_route_off
- 409 / 503 · that mode or venue is switched off at the exchange right now.
- transfer_unsupported
- 400 · that chain is not a supported source (sol, rh) or destination.
- transfer_not_found
- 404 · no transfer with that id under this key.
- transfer_provider
- 502 · the exchange route failed upstream; nothing was sent.
- rate_limited
- 429 · wait
retry-afterseconds; 300/min and 25/s per key, 5 keys per hour per IP. - send_failed
- 502 · every lane refused the transaction. Check
tx/:signaturebefore retrying. - bundle_failed
- 502 · Jito rejected the bundle; check
bundle/:id, rebuild with a fresh blockhash and a higher tip. - reverted
- 502 · the EVM transaction reverted.
- ipfs_failed
- 502 · every pinning service refused; retry, images under 4 MB.
- internal
- 500 · our bug; the message is scrubbed. Retry once, then report it with the request shape.