{"errors":[{"code":"INVALID_BODY","status":400,"meaning":"The body is not a JSON object.","fix":"Send Content-Type: application/json and a JSON object.","retry":false},{"code":"INVALID_JSON","status":400,"meaning":"The body is not valid JSON.","fix":"Send Content-Type: application/json and valid JSON.","retry":false},{"code":"BODY_TOO_LARGE","status":413,"meaning":"The body is larger than the limit (64 KB of JSON, 5 MB for an image).","fix":"Send only the fields the endpoint takes.","retry":false},{"code":"INVALID_ADDRESS","status":400,"meaning":"A field that must be a 0x address is not one; `field` says which.","fix":"Send a 40-hex-digit address starting with 0x.","retry":false},{"code":"INVALID_HASH","status":400,"meaning":"That is not a transaction hash.","fix":"Send the 0x-prefixed 64-hex-digit hash your wallet returned.","retry":false},{"code":"INVALID_QUERY","status":400,"meaning":"A query parameter is out of range or malformed; `field` says which.","fix":"Send it as the message says, or leave it out for the default.","retry":false},{"code":"NOT_FOUND","status":404,"meaning":"There is no such endpoint.","fix":"GET /api/v1 lists every endpoint.","retry":false},{"code":"RATE_LIMITED","status":429,"meaning":"Too many requests from this address in the last minute.","fix":"Wait (the retry-after header says how long) and slow the loop. Per minute: reads 300, quotes 120, swaps and launches 60, uploads 20.","retry":true},{"code":"INTERNAL","status":500,"meaning":"Something failed on our side; nothing was sent.","fix":"Retry; if it persists, tell us the time and the request.","retry":true},{"code":"UNKNOWN_COIN","status":404,"meaning":"The address has no market, launchpad or curve on Robinhood Chain.","fix":"Check the address: GET /coins lists every coin with a market.","retry":false},{"code":"UNKNOWN_GROUP","status":404,"meaning":"A holder group is bundled or snipers.","fix":"Ask /holders/bundled or /holders/snipers.","retry":false},{"code":"UNKNOWN_CREATOR","status":404,"meaning":"Nobody we know of launched this coin: it was not made on a launchpad we read.","fix":"GET /coins/{address} shows its launchpad.","retry":false},{"code":"DATA_UNREACHABLE","status":503,"meaning":"The data behind this answer could not be read just now.","fix":"Retry in a few seconds.","retry":true},{"code":"INVALID_SIDE","status":400,"meaning":"side is \"buy\" (ETH for the coin) or \"sell\" (the coin for ETH).","fix":"Send side=buy or side=sell.","retry":false},{"code":"INVALID_AMOUNT","status":400,"meaning":"The amount is not a positive decimal in whole units.","fix":"Send a decimal string such as \"0.05\" (ETH for a buy, the coin for a sale), not wei.","retry":false},{"code":"TOO_MANY_DECIMALS","status":400,"meaning":"The amount has more decimal places than the currency has.","fix":"Round it to the currency's decimals (18 for ETH and most coins).","retry":false},{"code":"INVALID_BPS","status":400,"meaning":"slippageBps or feeBps is out of range (basis points: 100 = 1%).","fix":"slippageBps: 1 to 5000. feeBps: 0 to 300, with feeRecipient.","retry":false},{"code":"WALLET_REQUIRED","status":400,"meaning":"A swap is built for the wallet that will send it.","fix":"Send `wallet`.","retry":false},{"code":"NOT_A_COIN","status":400,"meaning":"The token address is not an ERC-20 on Robinhood Chain.","fix":"Send the coin's contract address.","retry":false},{"code":"NO_ROUTE","status":422,"meaning":"No pool or curve can make this trade right now (none known, or every one failed in simulation; `detail` lists them).","fix":"Try a smaller amount; a coin minutes old may have no pool yet.","retry":true},{"code":"QUOTE_NEEDS_WALLET","status":422,"meaning":"This coin's sale can only be quoted from a wallet that holds it.","fix":"Send `wallet`: an address holding at least `amount` of the coin.","retry":false},{"code":"INSUFFICIENT_BALANCE","status":422,"meaning":"The wallet holds less of the coin than the sale.","fix":"Sell at most what the wallet holds.","retry":false},{"code":"INSUFFICIENT_FUNDS","status":422,"meaning":"The wallet holds less ETH than the buy.","fix":"Spend less, or add ETH (it also pays gas).","retry":false},{"code":"PRICE_IMPACT_TOO_HIGH","status":422,"meaning":"The trade would move the price more than maxPriceImpactPct (default 50%): the pool is too thin for it.","fix":"Trade less, or send maxPriceImpactPct (up to 100) to allow it.","retry":false},{"code":"SIMULATION_FAILED","status":422,"meaning":"The trade failed when simulated again with its minimum in place: the price moved.","fix":"Retry, or allow more slippage (slippageBps).","retry":true},{"code":"HONEYPOT","status":422,"meaning":"Selling this coin straight after buying it fails through every route, in simulation: it may not be sellable.","fix":"Do not buy it. GET /coins/{address} shows what is known.","retry":false},{"code":"CHAIN_UNREACHABLE","status":503,"meaning":"Robinhood Chain could not be read or simulated just now.","fix":"Retry in a few seconds.","retry":true},{"code":"MARKET_UNREACHABLE","status":503,"meaning":"The coin's pools could not be read just now.","fix":"Retry in a few seconds.","retry":true},{"code":"INVALID_LAUNCH","status":400,"meaning":"A launch field is missing or wrong; `field` says which.","fix":"Fix the field named and send it again (GET /launch lists each launchpad's options).","retry":false},{"code":"INVALID_DETAILS","status":400,"meaning":"A coin detail (name, ticker, description, picture or link) is not accepted; `field` says which.","fix":"Fix the field named. A picture must come from POST /media/image.","retry":false},{"code":"LAUNCH_WOULD_FAIL","status":422,"meaning":"The launch reverted when simulated.","fix":"Change the first buy or the options, then build again.","retry":false},{"code":"LAUNCH_OFF","status":503,"meaning":"Launching is switched off on this server for now.","fix":"Try again later.","retry":true},{"code":"UNSUPPORTED_IMAGE","status":415,"meaning":"The body is not a PNG, JPEG, GIF or WebP image.","fix":"Send the raw image bytes with Content-Type image/png, image/jpeg, image/gif or image/webp.","retry":false},{"code":"IMAGE_TOO_LARGE","status":413,"meaning":"The image is larger than 5 MB.","fix":"Send a smaller image.","retry":false},{"code":"UPLOADS_BUSY","status":429,"meaning":"Uploads are busy right now.","fix":"Try again in a few minutes.","retry":true}]}