API overview
Build on Manna. One API at https://mannas.fun/v1 for market data, quotes, trading, launching, your account, webhooks and Manna AI, with scoped keys, spending caps and clear rate limits.
Manna has one API, at https://mannas.fun/v1. It does what the app does: read every coin and token, get quotes, trade, launch coins on Manna, manage orders and alerts, and receive webhooks. The same sk-manna-… keys also work for the Manna AI gateway.
- Interactive reference and key management: /developers
- OpenAPI 3.1 specification: /openapi.json (generated from the validation code, so it always matches what the API accepts)
Keys and scopes#
Create keys on /developers while signed in. A key is shown once: store it in a secret manager or environment variable, never in client-side code. Send it as Authorization: Bearer sk-manna-…. You can revoke a key at any time, and revoking a key with the trade scope also cancels the open orders it created.
| Scope | What it allows |
|---|---|
read | Your account: positions, portfolio, balances, orders, alerts, watchlist, webhooks |
trade | Trading from your Manna account (account mode), orders and DCA |
launch | Launching coins from your Manna account (account mode) |
ai | The Manna AI gateway (/v1/chat/completions, /v1/messages) |
Give each key only the scopes it needs. You can also restrict a key to a list of IP addresses; this is strongly recommended for keys with trade or launch.
Spending caps#
Every key with trade or launch carries two caps you set: a per-trade maximum and a rolling 24-hour maximum (defaults $100 and $500). The API never spends past them, even with many requests at once, and orders created with a key reserve their full possible spend against the daily cap. Nothing in the API can withdraw or transfer funds out of your account.
Rate limits#
| Bucket | With a key | Without a key (per IP) |
|---|---|---|
| read | 60 per minute | 30 per minute |
| quote | 60 per minute | 10 per minute |
| build | 30 per minute | key required |
| trade | 30 per minute | key required |
| launch | 10 per hour | key required |
Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over a limit, the API answers 429 with a Retry-After header: wait that long, then retry with backoff.
Daily credits#
On top of the per-minute limits, every call costs credits from a daily quota. The quota belongs to your account: all of its keys share it, so more keys never mean more quota. Without a key, the quota is per IP address.
| Caller | Credits per day |
|---|---|
| No key (per IP) | 2,000 |
| Free account | 20,000, plus the fee-earned bonus |
| Credits | Calls |
|---|---|
| 1 | /chains, /prices, /stats, /live, /leaderboards, /posts, /battles, /profiles, /launch/options, /me, account actions, orders list, alerts, watchlist, webhooks |
| 2 | /coins and everything under it, /tokens/... and everything under it, /trending; creating, pausing or cancelling an order |
| 5 | GET /v1/quote; /account/positions, /account/portfolio, /account/balances (they read every chain you trade on) |
| 10 | trade/build, trade/submit, launch/build, launch/submit, trade/execute, launch/execute |
Fee-earned bonus. Trading and launching through the API raises your quota. Your daily quota goes up by 5,000 credits for every $1 of Manna fees your account's API trades and launches earned over the last 30 days, up to +1,000,000 credits a day:
daily quota = 20,000 + min(1,000,000, floor(fees in the last 30 days in dollars × 5,000))
The fees counted are Manna's 1% trading fee on the dollar value of each trade (the amount in for a buy, the amount out for a sell), and on launches the launch fee plus 1% of the first buy. They count for account-mode trades and launches (execute) and for build-mode ones submitted as signed_transactions (Manna checks and sends them itself; a build submitted as bare signatures doesn't count). For example, $3 of fees in the last 30 days gives 20,000 + 15,000 = 35,000 credits a day, and $200 or more gives the full +1,000,000. A new fee shows up in your quota within about 5 minutes.
Quotas reset at 00:00 UTC. Every response carries X-Quota-Limit (today's credits), X-Quota-Remaining, X-Quota-Reset (unix seconds of the next 00:00 UTC) and X-Quota-Cost (what that call cost). Over the quota, the API answers 429 with code daily_quota_exceeded and a Retry-After that runs to midnight UTC. A free account holds up to 3 API keys (keys with read, trade or launch; AI-only keys don't count). Your usage today, your bonus and the fees behind it are on /developers.
On an exceptionally busy day Manna may pause calls without a key, and then free-tier reads and quotes, with 429 and code capacity_exceeded (Retry-After: 300). Trades and launches, and their builds, keep working.
Shared cache. Public market reads are shared between callers for 10 to 15 seconds, and quotes for 4 seconds (the same chain, token, side and amount), so polling faster than that returns the same answer and only spends credits. A response that came from the cache says X-Cache: HIT; it still costs its credits. Your account's data, builds and trades are never cached.
Two ways to trade and launch#
| Mode | Endpoints | What happens | Who signs |
|---|---|---|---|
| Build | POST /v1/trade/build, POST /v1/launch/build | Manna returns unsigned transactions (Solana v0 as base64, or EVM transaction objects, approvals first) for a wallet you name | You, with your own wallet. Manna never sees your key |
| Account | POST /v1/trade/execute, POST /v1/launch/execute | Manna carries it out from your Manna account's wallets, like a one-tap trade in the app | Manna's one-tap signer, within your key's caps |
In build mode, send the signed transactions to POST /v1/trade/submit or POST /v1/launch/submit. Manna checks each one is exactly what it built and signed by that wallet, sends it, and credits your cashback and referrals. If you send it yourself, submit the signatures instead so the trade is still credited.
No SOL for fees? When a Solana trade/build names a wallet with less than 0.003 SOL and at least $2 of USDC, the first transaction in transactions is a gas swap paid in USDC ("fee_covered": true): it turns a little of the wallet's USDC into SOL (on a buy, also the SOL the buy spends), with Manna's keeper fronting the network fee and $0.02 of the wallet's USDC paying it back in the same transaction. The response's network_fee_covered says how much (usdc_in, sol, fee_usd). It already carries Manna's fee-payer signature: sign it unchanged like the others and submit everything with signed_transactions (a build with such a transaction can't be submitted as bare signatures). It is limited to 3 per wallet per day.
Account mode needs one-tap trading switched on and a key with the matching scope.
Idempotency#
Account-mode trades and launches require an Idempotency-Key header (any unique string per action). If a request is retried with the same key, the API replays the first answer, including a failure, instead of trading twice. Reusing a key with a different body is refused.
Endpoints at a glance#
Market data (no key needed): GET /v1/coins (list, search, sort, paginate), /v1/coins/{id} and its /trades, /candles, /holders; any token at /v1/tokens/{chain}/{address} with /candles, /traders, /trades; /v1/trending, /v1/leaderboards/{board}, /v1/posts (feed and calls), /v1/profiles/{wallet}, traders on FOMO at /v1/fomo/traders (the board: every ranked FOMO wallet, paged with page, sorted by pnl, consistency, winrate, volume, trades or recent, filtered with minTrades, minVolume, active=1 and full=1), /v1/fomo/traders/{id} (by handle or wallet) and /v1/fomo/search?q=, /v1/battles, /v1/stats, /v1/live, /v1/prices, /v1/chains, /v1/launch/options.
Quotes: GET /v1/quote on any supported chain returns the amount out, the minimum out at your slippage, price impact, the route, and Manna's fee broken out.
Your account (key with read): /v1/me, /v1/account/positions, /v1/account/portfolio, /v1/account/balances, /v1/account/actions; orders (create, list, cancel, pause and resume DCA), alerts and watchlist.
Webhooks: register an https endpoint at /v1/webhooks to receive trade, launch and order events. Each delivery is signed with HMAC-SHA256 so you can verify it came from Manna; failed deliveries are retried, and an endpoint that keeps failing is switched off.
The full list with every parameter, response and example is on /developers.
Examples#
TypeScript, a quote then an account-mode buy:
const H = { Authorization: `Bearer ${process.env.MANNA_KEY}`, "Content-Type": "application/json" };
const q = await fetch("https://mannas.fun/v1/quote?chain=sol&token=MINT&side=buy&amount_usd=10", { headers: H }).then((r) => r.json());
const r = await fetch("https://mannas.fun/v1/trade/execute", {
method: "POST",
headers: { ...H, "Idempotency-Key": crypto.randomUUID() },
body: JSON.stringify({ chain: "sol", token: "MINT", side: "buy", amount_usd: 10 }),
}).then((r) => r.json());Python, market data:
import requests
coins = requests.get("https://mannas.fun/v1/coins", params={"sort": "trending", "limit": 10}).json()Check the exact request and response shapes on /developers before going live.
Errors#
Errors come back as JSON with a stable code and a human message, and the right HTTP status: 400 invalid input, 401 missing or bad key, 403 missing scope or blocked IP, 404 not found, 409 idempotency conflict, 422 the action can't be done (for example over your cap, or no route), 429 rate limited (rate_limited per minute, daily_quota_exceeded for the day, capacity_exceeded on a very busy day), 5xx a temporary problem worth retrying.
Fees through the API#
The API charges exactly what the app charges: the 1% trading fee, each coin's creator fee, and launch fees. See Fees. Using the API costs nothing extra.
Manna AI#
With the ai scope, the same key calls Claude, GPT, Gemini and Grok models paid with your AI credits: POST /v1/chat/completions (OpenAI format, streaming supported), POST /v1/messages (Anthropic format), GET /v1/models, GET /v1/balance. Details: Manna AI.
Terms#
Using the API means you accept the API Terms of Use and the Terms of Service.
For AI agents#
- /llms.txt: an index of these docs for language models.
- /docs/llms-full.txt: every docs and legal page in one Markdown file.
/docs/raw/<page>: any single page as Markdown, for example /docs/raw/fees.- /openapi.json: the machine-readable API specification.
Related#
Something wrong or missing? Tell us at hi@mannas.fun. Nothing in these docs is financial advice; see the Risk Disclosure.