TrenchyToolsAPI

Errors & limits

What each error means and how to fix it.

Every error is JSON: { "error": "what went wrong", "code": "short_code" }.

StatusMeaningWhat to do
400Something 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.
401Missing or unknown API keyAdd ?api-key=…. Create a key on Get an API key.
404We could not find that coin on this launchpadCheck the address and the chain prefix. For graduated Solana coins use pool: "auto".
409The coin moved venues, or your wallet holds none of itUse pool: "auto", or check your balance.
422The 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.
429Too many requestsWait retry-after seconds.
502A node or Jito refused itRetry after a moment.

Limits

  • 300 requests a minute per API key, 25 per second burst (429 with retry-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.
unauthorized
401 · missing or revoked key. Pass ?api-key= or x-api-key; create one with GET /api/create-api-key.
not_found
404 · unknown route, or no token / pool at that address on this chain. GET /api/chains lists 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-local with 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 / bundle relay pump.fun and PumpSwap trades as trade-local built them, fee transfer included. A trade with the fee removed is refused on our lanes (any other RPC still accepts it). Rebuild with trade-local and 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 (routes shows 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-after seconds; 300/min and 25/s per key, 5 keys per hour per IP.
send_failed
502 · every lane refused the transaction. Check tx/:signature before 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.