Skip to content

Errors

Every error comes back as { "error": { "code", "message", "fix"?, "field"?, "detail"? } } with an HTTP status. Act on code: it never changes. The same list is live at GET /api/v1/errors.

Retry means the same request can succeed later, unchanged; wait a few seconds first.

HTTP 409

The wallet is already bound to a referrer, and a binding is for ever.

Fix: Nothing to do: the existing binding stands.

HTTP 409

This request was already signed, with another transaction.

Fix: Nothing to do: detail.tx is the transaction that was sent.

HTTP 422

The amount is too small to get anything after the site fee, or out of the pool.

Fix: Trade a larger amount.

HTTP 401

This endpoint needs your key.

Fix: Send one of your keys in the x-api-key header.

HTTP 401

That key was revoked.

Fix: Make a new one with GET /keys/challenge and POST /keys, or leave the header out.

HTTP 413

The request body is larger than the limit.

Fix: Send only the fields the endpoint takes. A logo goes to POST /media/image or as an image URL.

HTTP 400

The trade could not be encoded with these inputs.

Fix: The message says which input; change it and build again.

HTTP 503 · retry

The chain could not be read just now. Nothing was sent.

Fix: Retry in a few seconds.

HTTP 400

metadataURI and the details (image, description, …) were both sent.

Fix: Send your own metadataURI, or the details and let us store them. Not both.

HTTP 400

royaltyTo and a burnPct above 0 were both sent.

Fix: Pick one: royaltyTo sends the royalty to another wallet; burnPct splits or burns it.

HTTP 403

A signed-in request came without the x-mm-csrf header.

Fix: Send the header x-mm-csrf: 1 with every signed-in request.

HTTP 503 · retry

The live fee rates could not be read from the chain just now.

Fix: Retry in a few seconds.

HTTP 413

The image is larger than 5 MB.

Fix: Resize or compress it below 5 MB.

HTTP 422

The wallet cannot pay for this: the amount, or the gas, or both.

Fix: Fund the wallet with the pair currency and some BNB for gas, or trade less.

HTTP 503 · retry

The request could not be stored or read just now.

Fix: Retry in a few seconds.

HTTP 500 · retry

Something went wrong on our side. Nothing was sent.

Fix: Retry; if it persists, tell us the time and the request.

HTTP 400

A field that must be a 0x address is not one.

Fix: Send a 40-hex-digit address starting with 0x. The field says which.

HTTP 400

The amount is not a positive decimal number, or both/neither of amount and percent were sent.

Fix: Send a decimal string such as “0.05”, in whole units (not wei).

HTTP 401

The x-api-key header is not a live Market Mayhem key.

Fix: Send a key from POST /keys (they look like mm_live_…), or leave the header out.

HTTP 400

The body is not a JSON object.

Fix: Send Content-Type: application/json and a JSON object.

HTTP 400

burnPct is not 0, 1–99 (with at most two decimals) or 100.

Fix: Send 0 to keep the royalty, 1–99 to burn that share, or 100 to burn all of it.

HTTP 400

after must be a block number.

Fix: Send the next from the previous /launches answer, unchanged.

HTTP 400

exact must be in or out.

Fix: Leave it out (in: amount is what you spend), or send out (amount is what you receive).

HTTP 400

That is not a transaction hash.

Fix: Send the 0x-prefixed 64-hex-digit hash your wallet returned.

HTTP 400

That is not a key id.

Fix: Use an id from GET /keys.

HTTP 400

The image link could not be used.

Fix: Send an https:// link to a PNG, JPG, GIF or WebP image, reachable from the internet. The message says what went wrong.

HTTP 400

The body is not valid JSON.

Fix: Send Content-Type: application/json and valid JSON.

HTTP 400

An intent kind is buy, sell or launch.

Fix: Use prepare_buy, prepare_sell or prepare_launch.

HTTP 400

A launch field breaks one of the launch rules.

Fix: The message names the rule and field names the field: for example a name over 64 bytes, a split that does not add to 100, or the same wallet twice.

HTTP 400

The token details could not be stored as sent.

Fix: The message says which detail; correct it and try again.

HTTP 400

metadataURI is not an https:// or ipfs:// link.

Fix: Send an https:// or ipfs:// link, or leave it out and send the details instead.

HTTP 400

The referral link path is not a page of this site.

Fix: Send a path starting with ”/”, such as ”/”, “/t/0x…” or “/launch”.

HTTP 400

The supply shape is not one of the presets or a valid list of ranges.

Fix: Leave shape out (“flat”), or use “stepped”, “steep”, or 1–4 ranges { fromPct, toPct, bps }.

HTTP 400

side must be buy or sell.

Fix: Send side=buy or side=sell.

HTTP 401

The signature is missing, expired, or not from that wallet.

Fix: Get a fresh challenge (valid 5 minutes), sign its message exactly with that wallet (personal_sign / EIP-191), and send nonce and signature.

HTTP 400

The slippage is outside what is allowed.

Fix: Trades: slippageBps from 1 to 5000 (0.01% to 50%). A launch’s first buy: slippagePct from 0.5 to 50.

HTTP 400

The supply is outside 1 to 1,000,000,000,000 whole tokens.

Fix: Send a whole-token supply in that range, or leave it out for 1,000,000,000.

HTTP 400

A wallet can hold 10 active keys.

Fix: Revoke one with DELETE /keys/{id}.

HTTP 404

No such key on this wallet.

Fix: Use an id from GET /keys.

HTTP 503

API keys are switched off on this server.

Fix: Use the API without a key.

HTTP 503 · retry

Keys could not be read or written just now.

Fix: Retry in a few seconds, or use the API without a key meanwhile.

HTTP 503 · retry

Launches are paused on the factory right now.

Fix: Try again later; GET /settings shows launch.paused.

HTTP 400

A launch needs a logo: no token launches without one, from the site, the API, the SDK or an AI.

Fix: Send image: an https:// link to a PNG, JPG, GIF or WebP, up to 5 MB (or upload it with POST /media/image), or a metadataURI whose metadata has an image.

HTTP 400

A launch needs its opening market cap.

Fix: Send marketCapUsd (dollars, e.g. “5000”) or marketCapPair (in the pair currency).

HTTP 503

The pair currency has no live dollar price, so a dollar market cap cannot be converted.

Fix: Send marketCapPair (the opening market cap in the pair currency) instead of marketCapUsd.

HTTP 401

This browser is not signed in, or it signed out.

Fix: Sign in again: POST /api/auth/challenge, sign the message, POST /api/auth/session.

HTTP 503

That feature is not deployed on this network (yet).

Fix: Check GET /settings for the network; try the other network, or later.

HTTP 404

There is no such endpoint.

Fix: Check the method and path against GET /api/v1/openapi.json.

HTTP 409 · retry

The chain has not seen that transaction yet.

Fix: Retry in a few seconds.

HTTP 403

Sign-in was asked for from a page that is not Market Mayhem.

Fix: Sign in on https://marketmayhem.co.

HTTP 422

The pool cannot fill that size in one trade.

Fix: Trade a smaller amount, or split it into several trades.

HTTP 429 · retry

Too many requests from this address in the last minute.

Fix: Wait a few seconds and retry; slow the loop. Limits per minute: quotes 120, builds 60, image uploads 20.

HTTP 400

The referral request was refused.

Fix: The message says why.

HTTP 400

The referrer is neither a registered referrer nor a creator, so a trade cannot pay it.

Fix: Register it once (free): GET /referrals/challenge, sign, POST /referrals/register. Or leave referrer out.

HTTP 400

A wallet cannot be its own referrer.

Fix: Leave referrer out, or set it to the app or person that brought the trader.

HTTP 401

The sign-in on this browser is older than 30 days.

Fix: Sign in again: it is one signature.

HTTP 401

The browser is signed in as another wallet than the one the request names (the wallet switched accounts).

Fix: Sign in with the wallet now connected.

HTTP 503 · retry

Sign-in could not be read or written just now.

Fix: Retry in a few seconds.

HTTP 422 · retry

The shape no longer fits this launch: its price layout moved with the dollar price since the launch was built.

Fix: Build the launch again. If it repeats, leave shape out (“flat”).

HTTP 422 · retry

The transaction would revert on chain, so it was not returned. Nothing was sent.

Fix: Read detail.revert for the contract’s reason. Most often: the price moved (raise slippageBps a little and build again) or a balance changed.

HTTP 401

The wallet is a smart-contract wallet: its signatures cannot be checked here yet.

Fix: Sign in with a standard wallet, or with Google or email.

HTTP 503 · retry

The image could not be stored just now. Nothing was launched.

Fix: Retry in a few seconds.

HTTP 400

The amount has more decimal places than the currency has.

Fix: Round it to the currency’s decimals (18 for BNB and most tokens).

HTTP 422

This launch needs more gas than one BSC transaction may use.

Fix: Use a simpler shape (fewer ranges) or fewer first-buy recipients.

HTTP 404

There is no such prepared request.

Fix: Prepare it again (prepare_buy, prepare_sell, prepare_launch).

HTTP 400 · retry

That address is not a token launched on Market Mayhem.

Fix: Check the address. List tokens with GET /launches; a token launched seconds ago appears once its block is confirmed.

HTTP 415

The image is not PNG, JPG, GIF or WebP, or the upload body is not the image itself.

Fix: Send one of those formats; to POST /media/image send the raw bytes with the matching Content-Type.

HTTP 400

The pair is not BNB, a listed symbol, or a readable BEP20 token.

Fix: Use “BNB”, a symbol from pairs in GET /settings, or a BEP20 contract address.

HTTP 429 · retry

Uploads are busy right now.

Fix: Retry in a few seconds.

HTTP 400

That transaction is not a Market Mayhem trade or launch.

Fix: Report the hash of the trade or launch itself.

HTTP 400

That transaction was not sent by that wallet.

Fix: Report the wallet that signed it.