Errors
Errors are JSON with a stable error code and a plain-language message. Check the code in your script and show the message to a human.
{ "error": "insufficient_balance", "message": "wallet holds 0 tokens, tried to sell 1000" }
Your request
| Code | HTTP | Meaning |
|---|---|---|
invalid_request | 400 | A required field is missing or malformed. |
invalid_address | 400 | token, from or another address field is not a valid address. |
invalid_amount | 400 | amount is zero, negative, not a number, or a percentage on a buy. |
invalid_action | 400 | action is not "buy" or "sell". |
token_not_found | 404 | The address is not a Pons token on Robinhood Chain, v2 or v1. Check you copied the token, not a pool or a curve. |
Trading
| Code | HTTP | Meaning |
|---|---|---|
insufficient_funds | 400 | Not enough ETH in from for the trade plus gas. The message says what the wallet holds and what it needs. It has to be ETH on Robinhood Chain - ETH on Ethereum mainnet or another L2 must be bridged first, and holding USDG, NVDA or another asset does not pay for gas. |
insufficient_balance | 400 | Selling more tokens than the wallet holds. "100%" sells everything. |
slippage_exceeded | 400 | The price moved between the quote and now by more than slippage. Retry, or raise slippage on a fast-moving token. |
no_route | 400 | The token is priced in an asset your wallet doesn't hold enough of, and no Uniswap pool can buy that asset with ETH. Acquire it yourself, then retry. With toEth: no pool can turn the proceeds into ETH - sell without it and keep the asset. |
amount_too_small | 400 | So little that the swap would return nothing. Increase amount. |
graduating | 409 | The token is moving from its curve to its Uniswap pool right now. Retry in a minute; it then trades on Uniswap automatically. |
graduated | 400 | The curve closed while your trade was being built. Retry; the trade now routes to Uniswap. |
curve_closed | 409 | The curve has sold out and is about to graduate; sells reopen once the Uniswap pool exists. |
deadline_passed | 400 | A Uniswap transaction is only valid for 10 minutes after it is built. Request a fresh one. |
insufficient_allowance | 400 | An approval the trade needs is missing. Retry; the response will include it. |
Creating a token
| Code | HTTP | Meaning |
|---|---|---|
invalid_pair_token | 400 | pairToken is neither an address nor a ticker we know. The message lists the tickers. |
pair_token_not_approved | 400 | Pons doesn't accept that asset as a quote. Use ETH or one of the approved assets. |
too_many_exemptions | 400 | More than 32 snipeTaxExemptions (31 with an initialBuy). |
creator_tax_too_high | 400 | creatorTaxBps is above the maximum Pons allows (10%). |
invalid_salt | 400 | salt is not 32 bytes of hex. |
launch_config_disabled | 400 | The requested launchConfigId is not available. Leave it out. |
launcher_not_permitted | 403 | Pons currently only lets allow-listed wallets launch, and from isn't one. |
launch_disabled | 503 | Pons has paused launching. Try later. |
missing_file | 400 | The image upload had no file field. |
not_an_image | 400 | The uploaded file is not an image. |
file_too_large | 400 | The image is over 5 MB. |
invalid_upload | 400 | The upload could not be read. |
Creator fees
| Code | HTTP | Meaning |
|---|---|---|
nothing_to_claim | 400 | Nothing is waiting for this wallet. If the message names an amount, that much has been earned but is still being collected by Pons; check back later. |
sweep_requires_operator | 400 | This launch's fees are collected by Pons on its own schedule, not by you. Nothing to do - claim again once they arrive. |
Limits
| Code | HTTP | Meaning |
|---|---|---|
rate_limited | 429 | More than 5 requests per second from your IP to one endpoint. Wait a second and retry (Retry-After: 1). |
too_many_connections | 429 | A third launch-feed WebSocket from your IP. Two per IP; close one first. |
Everything else
| Code | HTTP | Meaning |
|---|---|---|
revert | 400 | The transaction would fail on-chain for a reason not listed above; message says what the contract reported. |
rpc_error | 502 | Robinhood Chain could not be reached. Retry. |
A transaction can still fail after you send it if the price moves past your slippage. minOut is your protection; a failed trade costs only gas.