{"openapi":"3.1.0","info":{"title":"Manna API","version":"1.0.0","description":"Manna's developer API: market data for every Manna coin and any token on the chains Manna trades, quotes, trading and launching (non-custodial or from your Manna account), and your account's positions, orders, alerts, watchlist and webhooks.\n\n**Base URL:** `https://mannas.fun/v1`. Keys are made at [mannas.fun/developers](https://mannas.fun/developers). /v1 is shared with Manna's OpenAI / Anthropic compatible AI gateway (/v1/chat/completions, /v1/messages, /v1/models, /v1/balance; tag AI), which uses the same keys with the `ai` scope.\n\n## Authentication\n\nSend your key as `Authorization: Bearer sk-manna-…` or `X-API-Key: sk-manna-…`. Keys are `sk-manna-` plus 32 characters and are shown once. Public market endpoints work without a key (a key raises their limits); a key that is sent must be valid, so a typo is a 401, never a silent downgrade. A key can carry an IP allowlist.\n\nScopes:\n\n- `read`: Market data with higher limits, and your account: positions, PnL, orders, alerts, watchlist\n- `trade`: Build trades for any wallet, trade your one-tap account (within this key's caps), create and cancel orders\n- `launch`: Build launches for any wallet, launch from your one-tap account\n- `ai`: Manna AI gateway (OpenAI and Anthropic compatible), paid from your AI credits\n\n## Two ways to trade and launch\n\n- **Build mode (non-custodial)**: POST /trade/build or /launch/build returns unsigned transactions for your own wallet. You sign them unchanged, then POST /trade/submit or /launch/submit with the signed transactions (Manna verifies and sends them) or the signatures of transactions you sent yourself, so the trade or launch is credited on Manna.\n- **Account mode**: POST /trade/execute or /launch/execute trades or launches from your Manna account's one-tap wallets on the server, within the key's per-trade cap and rolling 24-hour cap (set when the key is made: default $100 per trade and $500 a day, at most $100,000 and $1,000,000). One-tap trading must be switched on at mannas.fun. Slippage is capped at 2000 bps everywhere.\n\n## Idempotency\n\nPOST /trade/execute and /launch/execute require an `Idempotency-Key` header (1-100 of letters, digits, `- _ . :`; a UUID works). A retry with the same key and body within 24 hours returns the first answer, even an error, with `Idempotent-Replayed: true`, so money never moves twice. The same key with a different body is a 422 `idempotency_mismatch`; while the first is still running you get a 409 `idempotency_in_progress` (check GET /account/actions).\n\n## Responses and pagination\n\nSuccess is `{\"data\": …}`. Lists that page are `{\"data\": […], \"next_cursor\": \"…\"}`: pass `next_cursor` back as `cursor` until it is null. Cursors are opaque. Every response carries `X-Request-Id`.\n\n## Errors\n\n`{\"error\": {\"code\", \"message\", \"status\", \"request_id\", \"details?\"}}`. Branch on `code` (stable), not `message`. `validation_error` lists each bad field in `details` as `{path, message}`.\n\n## Rate limits\n\nFixed windows per bucket; every window of the bucket must have room. Anonymous calls are counted per IP, keyed calls per key. Responses carry `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (unix seconds); a 429 adds `Retry-After` (seconds).\n\n| Bucket | Endpoints | Anonymous (per IP) | With a key |\n|---|---|---|---|\n| `read` | Market data, account reads, alerts, watchlist, webhooks | 30 per minute, 5 per second | 60 per minute, 10 per second |\n| `quote` | GET /v1/quote | 10 per minute, 2 per second | 60 per minute, 5 per second |\n| `build` | POST /v1/trade/build, /v1/trade/submit, /v1/launch/submit | not available without a key | 30 per minute, 5 per second |\n| `trade` | POST /v1/trade/execute, order create / cancel / pause | not available without a key | 30 per minute, 3 per second |\n| `launch` | POST /v1/launch/build, /v1/launch/execute | not available without a key | 10 per hour, 3 per minute |\n\n## Daily credits\n\nEvery call also costs credits from a daily quota (reset at 00:00 UTC). With a key the quota is the account's, shared by all its keys; without one it is per IP: 2,000 a day without a key, 20,000 a day for a free account (up to 3 API keys). Fee-earned bonus: +5,000 credits a day per $1 of Manna fees the account's API trades and launches earned over the last 30 days, up to +1,000,000. Responses carry `X-Quota-Limit`, `X-Quota-Remaining`, `X-Quota-Reset` and `X-Quota-Cost`; over the quota, 429 `daily_quota_exceeded` with `Retry-After` to midnight UTC. Each operation states its cost (`x-manna-credits`).\n\n| Credits | Calls |\n|---|---|\n| 1 | Chains, prices, stats, live feed, leaderboards, posts, battles, profiles, launch options, /me, actions, orders list, alerts, watchlist, webhooks |\n| 2 | Coins, coin trades / candles / holders, any token and its candles / traders / trades, trending; order create / pause / cancel |\n| 5 | GET /v1/quote |\n| 5 | Positions, portfolio and balances (read every chain the account trades on) |\n| 10 | Trade and launch build / submit |\n| 10 | Trade and launch execute (account mode) |\n\n## CORS\n\nGET endpoints answer any origin (no cookies are ever read), so market data can be called from a browser. Write endpoints send no CORS headers: call them from a server, and never put a key in a web page.\n\n## Webhooks\n\nPOST /webhooks registers a public https endpoint (at most 5) for these events: `trade.completed`, `trade.failed`, `launch.completed`, `launch.failed`, `order.filled`, `order.failed`. Each delivery is a JSON POST of `{\"id\", \"event\", \"created_at\", \"data\"}` with headers `Manna-Event`, `Manna-Delivery` (the id: de-duplicate on it) and `Manna-Signature: t=<unix seconds>,v1=<hex>`, where v1 is HMAC-SHA256 of `${t}.${raw body}` keyed with the endpoint's `whsec_…` secret. Recompute it over the raw body, compare in constant time, and reject timestamps more than 5 minutes old. Answer 2xx within 8 seconds (a hard deadline); failures are retried after 30s, 2m, 10m, 30m, 2h, 6h, so a delivery is attempted at most 7 times. Order events are queued and sent by Manna's background delivery run rather than the moment the order fills. An endpoint that fails 50 deliveries in a row is switched off.\n\n```js\nimport { createHmac, timingSafeEqual } from \"node:crypto\";\nfunction verify(secret, rawBody, header) {\n  const { t, v1 } = Object.fromEntries(header.split(\",\").map((p) => p.split(\"=\", 2)));\n  if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;\n  const want = createHmac(\"sha256\", secret).update(`${t}.${rawBody}`).digest(\"hex\");\n  return want.length === v1.length && timingSafeEqual(Buffer.from(want), Buffer.from(v1));\n}\n```\n\n## Fees\n\nThe API never changes a fee: trades pay Manna's 1% exactly as on mannas.fun (inside the transaction, or as part of a Manna coin's pool fee, see each quote's `fee`), and launches pay the same launch fee as the site: $0.5 on Solana, $1 on Robinhood Chain, $1 on other EVM chains (see GET /chains).","termsOfService":"https://mannas.fun/terms","contact":{"name":"Manna","url":"https://mannas.fun/developers"}},"jsonSchemaDialect":"https://spec.openapis.org/oas/3.1/dialect/base","servers":[{"url":"https://mannas.fun/v1","description":"Production"}],"externalDocs":{"description":"Guides and keys","url":"https://mannas.fun/developers"},"tags":[{"name":"Market","description":"Manna coins, chains, prices, platform stats and the live tape"},{"name":"Tokens","description":"Any token on a chain Manna trades"},{"name":"Social","description":"The feed, profiles, leaderboards and battles"},{"name":"Quotes","description":"Price a trade without a wallet"},{"name":"Trading","description":"Build mode (you sign) and account mode (Manna trades your one-tap account)"},{"name":"Launch","description":"Launch coins: build mode or account mode"},{"name":"Account","description":"The key and its owner's positions, portfolio, cash and actions"},{"name":"Orders","description":"Limit, take-profit, stop-loss, trailing and DCA orders"},{"name":"Alerts","description":"Price and market-cap alerts"},{"name":"Watchlist","description":"The account's watchlist"},{"name":"Webhooks","description":"Endpoints for account events, and the events Manna sends them"},{"name":"AI","description":"Manna AI gateway: OpenAI and Anthropic compatible, paid from AI credits"}],"security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"paths":{"/coins":{"get":{"operationId":"listCoins","tags":["Market"],"summary":"List Manna coins","description":"Coins launched on Manna, on every chain: search, filter by chain or creator, and sort. `graduating` lists coins still on their curve with at least 60% progress, biggest first.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"chain","in":"query","description":"Only coins on this chain","schema":{"type":"string","enum":["sol","hood","base","bsc","ethereum","arbitrum","optimism","polygon","avalanche"]},"required":false},{"name":"sort","in":"query","description":"trending (trades in the last hour, then all trades), new, top (market cap in dollars), volume (24h), graduating, graduated","schema":{"type":"string","enum":["trending","new","top","volume","graduating","graduated"],"default":"trending"},"required":false},{"name":"q","in":"query","description":"Search name, symbol or address (case-insensitive)","schema":{"type":"string","maxLength":64},"example":"dog","required":false},{"name":"creator","in":"query","description":"Only coins made by this wallet","schema":{"type":"string","maxLength":64},"required":false},{"name":"limit","in":"query","description":"Items per page (1-100; values outside are clamped)","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false},{"name":"cursor","in":"query","description":"Opaque: the `next_cursor` of the previous page","schema":{"type":"string","maxLength":300},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Coin"}},"next_cursor":{"type":["string","null"],"description":"Pass as `cursor` for the next page; null on the last page"}},"required":["data","next_cursor"]},"example":{"data":[{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","chain":"sol","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","name":"Moon Dog","symbol":"MDOG","description":"The goodest boy on Solana","image_url":"https://mannas.fun/api/img/m_8Hq2","url":"https://mannas.fun/coin/sol%3A9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","creator":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","quote":{"address":"So11111111111111111111111111111111111111112","symbol":"SOL","usd":182.4},"price":4.12e-8,"price_usd":0.00000751,"market_cap":41.2,"market_cap_usd":7514.9,"ath_market_cap":63.9,"volume_total":212.5,"volume_24h":48.1,"volume_24h_usd":8773.4,"change_24h_pct":18.2,"progress_pct":34.7,"graduated":false,"holders":214,"trades":1893,"creator_fee_bps":100,"fee_route":{"creator":4000,"holders":2500,"comeback":1500,"flock":1000,"burn":1000,"jackpot":0,"spread":0},"shield_secs":10,"shield_mode":"flat","shield_flat_bps":9000,"curve":1,"dev_locked":false,"links":{"x":"https://x.com/moondog","telegram":null,"website":null},"created_at":"2026-10-18T14:02:11.000Z","last_trade_at":"2026-10-20T09:41:52.000Z"}],"next_cursor":"eyJvIjo1MH0"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/coins/{id}":{"get":{"operationId":"getCoin","tags":["Market"],"summary":"Get a Manna coin","description":"One coin with its pool, launch transaction and the live battle it is in, if any.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"id","in":"path","required":true,"description":"A Manna coin id: \"sol:<mint>\" (case kept) or \"<evm chain>:0x…\"","schema":{"type":"string","maxLength":200},"example":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CoinDetail"}},"required":["data"]},"example":{"data":{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","chain":"sol","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","name":"Moon Dog","symbol":"MDOG","description":"The goodest boy on Solana","image_url":"https://mannas.fun/api/img/m_8Hq2","url":"https://mannas.fun/coin/sol%3A9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","creator":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","quote":{"address":"So11111111111111111111111111111111111111112","symbol":"SOL","usd":182.4},"price":4.12e-8,"price_usd":0.00000751,"market_cap":41.2,"market_cap_usd":7514.9,"ath_market_cap":63.9,"volume_total":212.5,"volume_24h":48.1,"volume_24h_usd":8773.4,"change_24h_pct":18.2,"progress_pct":34.7,"graduated":false,"holders":214,"trades":1893,"creator_fee_bps":100,"fee_route":{"creator":4000,"holders":2500,"comeback":1500,"flock":1000,"burn":1000,"jackpot":0,"spread":0},"shield_secs":10,"shield_mode":"flat","shield_flat_bps":9000,"curve":1,"dev_locked":false,"links":{"x":"https://x.com/moondog","telegram":null,"website":null},"created_at":"2026-10-18T14:02:11.000Z","last_trade_at":"2026-10-20T09:41:52.000Z","pool":"HxLpQm3b2cY7gVt1uB9wK5rN8sE4dF6aJ2zT7xW1pBLP","launch_tx":"3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x","battle_id":null}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/coins/{id}/trades":{"get":{"operationId":"listCoinTrades","tags":["Market"],"summary":"List a coin's trades","description":"Every buy and sell of a Manna coin, newest first. Page back in time with the cursor. Nicknames are null for private profiles.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"id","in":"path","required":true,"description":"A Manna coin id: \"sol:<mint>\" (case kept) or \"<evm chain>:0x…\"","schema":{"type":"string","maxLength":200},"example":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"},{"name":"limit","in":"query","description":"Items per page (1-200; values outside are clamped)","schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false},{"name":"cursor","in":"query","description":"Opaque: the `next_cursor` of the previous page","schema":{"type":"string","maxLength":300},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CoinTrade"}},"next_cursor":{"type":["string","null"],"description":"Pass as `cursor` for the next page; null on the last page"}},"required":["data","next_cursor"]},"example":{"data":[{"tx":"3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x","side":"buy","trader":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":"degenfan","quote_amount":0.5,"token_amount":11942377.12,"price":4.19e-8,"usd":91.2,"snipe_tax":0,"ts":"2026-10-20T09:41:52.000Z"}],"next_cursor":"eyJvIjo1MH0"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/coins/{id}/candles":{"get":{"operationId":"getCoinCandles","tags":["Market"],"summary":"Get a coin's candles","description":"OHLCV from Manna's own trade log, in the pair token (see `quote_symbol`). Defaults to the last 500 candles. At most 2000 candles per request. Buckets with no trades are left out.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"id","in":"path","required":true,"description":"A Manna coin id: \"sol:<mint>\" (case kept) or \"<evm chain>:0x…\"","schema":{"type":"string","maxLength":200},"example":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"},{"name":"tf","in":"query","description":"Seconds per candle","schema":{"type":"integer","enum":[60,300,900,3600,14400,86400],"default":300},"required":false},{"name":"from","in":"query","description":"Start, unix seconds (default: 500 candles before `to`)","schema":{"type":"integer"},"required":false},{"name":"to","in":"query","description":"End, unix seconds (default: now)","schema":{"type":"integer"},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/CoinCandles"}},"required":["data"]},"example":{"data":{"tf":300,"quote_symbol":"SOL","candles":[{"t":1760952900,"o":3.9e-8,"h":4.25e-8,"l":3.8e-8,"c":4.12e-8,"v":3.8,"trades":41}]}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/coins/{id}/holders":{"get":{"operationId":"listCoinHolders","tags":["Market"],"summary":"List a coin's top holders","description":"The biggest holders Manna has indexed, with their share of the 1B supply. Team (shield / creator team) wallets are flagged.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"id","in":"path","required":true,"description":"A Manna coin id: \"sol:<mint>\" (case kept) or \"<evm chain>:0x…\"","schema":{"type":"string","maxLength":200},"example":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"},{"name":"limit","in":"query","description":"Items per page (1-100; values outside are clamped)","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Holder"}}},"required":["data"]},"example":{"data":[{"wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":null,"balance":48211000,"pct":4.8211,"is_team":false}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/tokens/{chain}/{address}":{"get":{"operationId":"getToken","tags":["Tokens"],"summary":"Get any token","description":"Price, market cap, liquidity, volume and pool for any token on a chain Manna trades (not only Manna coins). `manna_coin_id` is set when it is a Manna coin.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"chain","in":"path","required":true,"description":"Chain key","schema":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"example":"sol"},{"name":"address","in":"path","required":true,"description":"Token address on that chain (Solana mint or 0x contract)","schema":{"type":"string","maxLength":200},"example":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Token"}},"required":["data"]},"example":{"data":{"chain":"base","address":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","symbol":"PEPE2","name":"Pepe Two","icon":"https://dd.dexscreener.com/ds-data/tokens/base/pepe2.png","price_usd":0.0001368,"market_cap_usd":136800,"liquidity_usd":41200,"volume_24h_usd":88213,"change_pct":{"h1":2.1,"h24":-4.3},"txns_24h":{"buys":412,"sells":377},"pair":"0x7d2a1c9b8e6f4a3d2c1b0a9f8e7d6c5b4a3f2e1d","dex":"uniswap","quote_symbol":"WETH","pair_created_at":"2026-09-30T18:20:00.000Z","links":[],"manna_coin_id":null,"url":"https://mannas.fun/trade/base/0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/tokens/{chain}/{address}/candles":{"get":{"operationId":"getTokenCandles","tags":["Tokens"],"summary":"Get a token's candles","description":"USD OHLCV of the token's deepest pool (or the pool you pass). The candle size follows the range.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"chain","in":"path","required":true,"description":"Chain key","schema":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"example":"sol"},{"name":"address","in":"path","required":true,"description":"Token address on that chain (Solana mint or 0x contract)","schema":{"type":"string","maxLength":200},"example":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"},{"name":"range","in":"query","description":"How far back","schema":{"type":"string","enum":["1h","4h","1d","1w","all"],"default":"1d"},"required":false},{"name":"pool","in":"query","description":"A specific pool address (default: the deepest pool)","schema":{"type":"string","pattern":"^[A-Za-z0-9]{20,70}$"},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TokenCandles"}},"required":["data"]},"example":{"data":{"pool":"0x7d2a1c9b8e6f4a3d2c1b0a9f8e7d6c5b4a3f2e1d","range":"1d","currency":"usd","candles":[{"t":1760950800,"o":0.000131,"h":0.000139,"l":0.00013,"c":0.0001368,"v":4120.5}]}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/tokens/{chain}/{address}/traders":{"get":{"operationId":"listTokenTraders","tags":["Tokens"],"summary":"List Manna traders of a token","description":"Manna traders' positions in the token: value, PnL and entry (the token page's traders tab).\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"chain","in":"path","required":true,"description":"Chain key","schema":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"example":"sol"},{"name":"address","in":"path","required":true,"description":"Token address on that chain (Solana mint or 0x contract)","schema":{"type":"string","maxLength":200},"example":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TokenTrader"}}},"required":["data"]},"example":{"data":[{"wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":"degenfan","value_usd":412.5,"pnl_usd":120.3}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/tokens/{chain}/{address}/trades":{"get":{"operationId":"listTokenTrades","tags":["Tokens"],"summary":"List Manna trades of a token","description":"Buys and sells of the token made through Manna (the token page's trades tab).\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"chain","in":"path","required":true,"description":"Chain key","schema":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"example":"sol"},{"name":"address","in":"path","required":true,"description":"Token address on that chain (Solana mint or 0x contract)","schema":{"type":"string","maxLength":200},"example":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"},{"name":"since","in":"query","description":"Only trades after this time, unix seconds","schema":{"type":"integer","minimum":0,"default":0},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TokenTrade"}}},"required":["data"]},"example":{"data":[{"tx":"3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x","side":"buy","trader":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","usd":50,"ts":"2026-10-20T09:41:52.000Z"}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/trending":{"get":{"operationId":"getTrending","tags":["Market"],"summary":"Trending on Manna","description":"The tokens with the most volume traded through Manna (Manna coins and any other token), refreshed every minute.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":10,"parameters":[{"name":"period","in":"query","schema":{"type":"string","enum":["24h","7d"],"default":"24h"},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"period":{"type":"string","enum":["24h","7d"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/TrendingToken"}}},"required":["period","items"]}},"required":["data"]},"example":{"data":{"period":"24h","items":[{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","chain":"sol","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","name":"Moon Dog","manna":true,"icon":"https://mannas.fun/api/img/m_8Hq2","volume_usd":8773.4,"trades":311,"traders":120,"market_cap_usd":7514.9,"change_24h_pct":18.2}]}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/leaderboards/{board}":{"get":{"operationId":"getLeaderboard","tags":["Social"],"summary":"Get a leaderboard","description":"One of Manna's leaderboards for a period, exactly as mannas.fun/leaderboard shows it (private profiles stay hidden). An unknown board is a 404.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 15 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":15,"parameters":[{"name":"board","in":"path","required":true,"description":"Which board","schema":{"type":"string","enum":["gainers","losers","volume","followers","creators","callers","holders"]},"example":"gainers"},{"name":"period","in":"query","schema":{"type":"string","enum":["24h","7d","30d","all"],"default":"7d"},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"board":{"type":"string","enum":["gainers","losers","volume","followers","creators","callers","holders"]},"period":{"type":"string","enum":["24h","7d","30d","all"]},"rows":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardRow"}}},"required":["board","period","rows"]}},"required":["data"]},"example":{"data":{"board":"gainers","period":"7d","rows":[{"wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":"degenfan","value":1240.5}]}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/posts":{"get":{"operationId":"listPosts","tags":["Social"],"summary":"List feed posts","description":"The Manna feed, including thesis calls. `new` pages with the cursor (30 per page); `hot` is a single page.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":10,"parameters":[{"name":"tab","in":"query","schema":{"type":"string","enum":["new","hot"],"default":"new"},"required":false},{"name":"coin","in":"query","description":"Only posts about this coin, e.g. \"sol:<mint>\"","schema":{"type":"string","pattern":"^[a-z]{2,12}:[A-Za-z0-9]{20,70}$"},"required":false},{"name":"wallet","in":"query","description":"Only posts by this wallet","schema":{"type":"string","maxLength":64},"required":false},{"name":"cursor","in":"query","description":"Opaque: the `next_cursor` of the previous page","schema":{"type":"string","maxLength":300},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Post"}},"next_cursor":{"type":["string","null"],"description":"Pass as `cursor` for the next page; null on the last page"}},"required":["data","next_cursor"]},"example":{"data":[{"id":51234,"wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":"degenfan","text":"MDOG is going to 1M","coin":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","created_at":"2026-10-20T09:55:00.000Z"}],"next_cursor":"eyJvIjo1MH0"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/profiles/{wallet}":{"get":{"operationId":"getProfile","tags":["Social"],"summary":"Get a trader's profile","description":"A trader's public profile, PnL and positions. Private profiles stay private; payment and privacy settings are never returned.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":10,"parameters":[{"name":"wallet","in":"path","required":true,"description":"A Solana or EVM wallet","schema":{"type":"string","maxLength":64},"example":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Profile"}},"required":["data"]},"example":{"data":{"wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":"degenfan","pnl":{"usd":1240.5},"social":{"followers":210,"following":33,"posts":48}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/fomo/traders":{"get":{"operationId":"listFomoTraders","tags":["Social"],"summary":"Top traders on FOMO","description":"Every trader on FOMO (fomo.family) Manna has found on Solana, ranked by PnL, consistency, win rate, volume, trades or last trade over a period, from their own on-chain trades as Manna reads them. Paged: `page` from 0. Win rate needs 3 closed trades. Consistency (0-100) rewards win rate over many closed trades with profit spread across tokens. Names: a FOMO handle only when linked (`nameKind` community: by a Manna user), else the wallet's .sol / AllDomains name or its owner's Manna name. Not affiliated with FOMO.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 15 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":15,"parameters":[{"name":"sort","in":"query","schema":{"type":"string","enum":["pnl","consistency","winrate","volume","trades","recent"],"default":"pnl"},"required":false},{"name":"period","in":"query","schema":{"type":"string","enum":["24h","7d","30d","all"],"default":"7d"},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false},{"name":"page","in":"query","schema":{"type":"integer","minimum":0,"maximum":1000,"default":0},"required":false},{"name":"minTrades","in":"query","schema":{"type":"integer","minimum":0,"default":0},"required":false},{"name":"minVolume","in":"query","schema":{"type":"number","minimum":0,"default":0},"required":false},{"name":"active","in":"query","description":"1: traded in the last 24 hours","schema":{"type":"string","enum":["0","1"],"default":"0"},"required":false},{"name":"full","in":"query","description":"1: only wallets whose whole recent history Manna has read","schema":{"type":"string","enum":["0","1"],"default":"0"},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FomoTrader"}},"next_cursor":{"type":["string","null"],"description":"Pass as `cursor` for the next page; null on the last page"}},"required":["data","next_cursor"]},"example":{"data":[{"rank":1,"handle":"frankdegods","wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","pnlUsd":5120.4,"winRate":61.5,"volumeUsd":88210,"trades":140,"fomo_url":"https://fomo.family/profile/frankdegods"}],"next_cursor":"eyJvIjo1MH0"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/fomo/traders/{id}":{"get":{"operationId":"getFomoTrader","tags":["Social"],"summary":"Get a trader on FOMO","description":"One trader on FOMO by handle (once linked on Manna) or by wallet: PnL realized and unrealized, win rate, volume, top trades and recent trades, all from the wallet's on-chain trades Manna has read (stats.since says from when).\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 2 credits of the daily quota. Answers are shared for 15 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":2,"x-manna-cache-secs":15,"parameters":[{"name":"id","in":"path","required":true,"description":"A FOMO handle or a Solana / EVM wallet","schema":{"type":"string","maxLength":200},"example":"frankdegods"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/FomoTrader"}},"required":["data"]},"example":{"data":{"handle":"frankdegods","wallets":{"sol":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","evm":null},"onFomo":true,"stats":{"pnlUsd":5120.4,"realizedUsd":4200,"unrealizedUsd":920.4,"winRate":61.5,"volumeUsd":88210,"trades":140}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/fomo/search":{"get":{"operationId":"searchFomoTraders","tags":["Social"],"summary":"Search traders on FOMO","description":"Find traders on FOMO by handle, a fomo.family profile link, or a wallet. `unknown_handle`: an exact handle nobody has linked to a wallet on Manna yet.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 15 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":15,"parameters":[{"name":"q","in":"query","description":"A handle, @handle, fomo.family/profile/<handle> link or wallet","schema":{"type":"string","minLength":2,"maxLength":200},"example":"frankdegods","required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"traders":{"type":"array","items":{"$ref":"#/components/schemas/FomoTrader"}},"unknown_handle":{"type":["string","null"]}},"required":["traders","unknown_handle"]}},"required":["data"]},"example":{"data":{"traders":[{"handle":"frankdegods","wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","onFomo":true}],"unknown_handle":null}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/battles":{"get":{"operationId":"listBattles","tags":["Social"],"summary":"List battles","description":"Coin battles: live ones first, then recently finished.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":10,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Battle"}}},"required":["data"]},"example":{"data":[{"id":"88","a_coin":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","b_coin":"base:0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","ends_at":"2026-10-21T00:00:00.000Z"}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/battles/{id}":{"get":{"operationId":"getBattle","tags":["Social"],"summary":"Get a battle","description":"One battle by id.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":10,"parameters":[{"name":"id","in":"path","required":true,"description":"The battle's id","schema":{"type":"string","pattern":"^\\d{1,18}$"},"example":"88"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Battle"}},"required":["data"]},"example":{"data":{"id":"88","a_coin":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","b_coin":"base:0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","ends_at":"2026-10-21T00:00:00.000Z"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/stats":{"get":{"operationId":"getStats","tags":["Market"],"summary":"Platform stats","description":"Platform totals and recent payouts.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 15 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":15,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Stats"}},"required":["data"]},"example":{"data":{"coins":18234,"volume_usd":41200000,"paid_usd":512000}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/BadGateway"}}}},"/live":{"get":{"operationId":"getLive","tags":["Market"],"summary":"Live trades and launches","description":"The latest 50 trades and 20 launches across every Manna coin. Poll it for a live tape.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":10,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Live"}},"required":["data"]},"example":{"data":{"trades":[{"tx":"3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x","trader":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":null,"quote_amount":0.5,"ts":"2026-10-20T09:41:52.000Z","symbol":"MDOG","coin_id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","chain":"sol","quote_symbol":"SOL","side":"buy"}],"launches":[{"coin_id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","chain":"sol","symbol":"MDOG","name":"Moon Dog","creator":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","nickname":"degenfan","created_at":"2026-10-18T14:02:11.000Z"}]}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/prices":{"get":{"operationId":"getPrices","tags":["Market"],"summary":"Native coin prices","description":"Dollar prices of the coins Manna trades and pays with (SOL, ETH, BNB, POL, AVAX…), keyed by symbol.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 10 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":10,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{"type":"number"}}},"required":["data"]},"example":{"data":{"SOL":182.4,"ETH":3912.1,"BNB":612.8,"POL":0.41,"AVAX":28.3}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/chains":{"get":{"operationId":"listChains","tags":["Market"],"summary":"List chains","description":"Where you can trade and launch, the launch fee and Manna's trade fee on each.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 15 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":15,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Chain"}}},"required":["data"]},"example":{"data":[{"id":"sol","name":"Solana","native":"SOL","kind":"solana","chain_id":null,"trade":true,"launch":true,"launch_fee_usd":0.5,"trade_fee_bps":100},{"id":"base","name":"Base","native":"ETH","kind":"evm","chain_id":8453,"trade":true,"launch":true,"launch_fee_usd":1,"trade_fee_bps":100}]}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/launch/options":{"get":{"operationId":"getLaunchOptions","tags":["Launch"],"summary":"Launch options","description":"Everything a launch can choose, with Manna's defaults: pairs per chain, fee-split presets, curves, shield settings and launch fees.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota. Answers are shared for 15 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"x-manna-cache-secs":15,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LaunchOptions"}},"required":["data"]},"example":{"data":{"chains":[{"chain":"sol","live":true,"launch_fee_usd":0.5,"ticker_max_bytes":10,"pairs":[{"id":"So11111111111111111111111111111111111111112","symbol":"SOL","name":"Solana","decimals":9,"category":"native","start_market_cap":30}],"vanity":"a Manna ending when a pre-made address is ready"}],"presets":[{"id":"balanced","label":"Balanced","description":"You plus a bit for everyone","route":{"creator":4000,"holders":2500,"comeback":1500,"flock":1000,"burn":1000,"jackpot":0,"spread":0}}],"route_keys":["creator","holders","comeback","flock","burn","jackpot","spread"],"curves":[{"id":1,"label":"Normal","graduates_at_multiple":11,"description":"Where most coins graduate, around 11x the start."}],"creator_fee_bps":{"min":0,"max":1000,"default":100},"shield":{"secs":{"off":0,"min":3,"max":30,"default":10},"modes":{"sol":["flat","fade"],"evm":["flat","fade"],"evm_older_contracts":["fast"],"default":"flat"},"evm_modes_live":{"hood":true,"base":true},"flat_bps":[9000,9500,9900],"flat_default":9000,"solana_flat_bps":[0,9000,9500,9900],"solana_flat_default":9000},"defaults":{"preset":"balanced","curve":1,"dev_buy":0}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/quote":{"get":{"operationId":"getQuote","tags":["Quotes"],"summary":"Quote a trade","description":"Price a buy or sell on any chain Manna trades, with no wallet needed: the venue, the amount out and the least you'd get after slippage, the price impact and Manna's fee. A buy takes `amount` (native coin) or `amount_usd`; a sell takes `amount` (tokens) or `percent` (with `wallet`). The query parameters are the fields of POST /trade/build's body.\n\n**Auth:** none needed. A key (any scope) raises the rate limits; a key that is sent must be valid.\n\n**Rate limit:** `quote` bucket: anonymous 10 per minute, 2 per second (per IP); with a key 60 per minute, 5 per second (per key).\n\n**Cost:** 5 credits of the daily quota. Answers are shared for 4 seconds (`X-Cache`).","security":[{},{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"quote","anonymous":[{"max":10,"window_secs":60},{"max":2,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":5,"window_secs":1}]},"x-manna-credits":5,"x-manna-cache-secs":4,"parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]}},{"name":"token","in":"query","required":true,"description":"Token address (Solana mint or 0x… contract)","schema":{"type":"string","minLength":32,"maxLength":44}},{"name":"side","in":"query","required":true,"schema":{"type":"string","enum":["buy","sell"]}},{"name":"slippage_bps","in":"query","required":false,"description":"Max slippage in basis points (default: the venue's automatic one, 1.5%-5%)","schema":{"type":"integer","minimum":10,"maximum":2000}},{"name":"ref","in":"query","required":false,"description":"A Manna referral code to credit (first referrer wins, as on the site)","schema":{"type":"string","pattern":"^[A-Za-z0-9]{1,24}$"}},{"name":"amount","in":"query","required":false,"description":"Buy: native coin to spend (SOL / ETH / BNB…). Sell: tokens to sell.","schema":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000000}},{"name":"amount_usd","in":"query","required":false,"description":"Buy only: dollars of native coin to spend","schema":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},{"name":"percent","in":"query","required":false,"description":"Sell only: percent of the wallet's balance (needs wallet)","schema":{"type":"number","exclusiveMinimum":0,"maximum":100}},{"name":"wallet","in":"query","required":false,"schema":{"type":"string","minLength":32,"maxLength":44}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Quote"}},"required":["data"]},"example":{"data":{"chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","side":"buy","venue":"manna-curve","in":{"symbol":"SOL","amount":0.5,"raw":"500000000","decimals":9},"out":{"symbol":"token","amount":11942377.12,"raw":"11942377120000","decimals":6,"min_amount":11345258.26,"min_raw":"11345258264000"},"usd":{"in":91.2,"out":null},"price_impact_pct":null,"slippage_bps":500,"fee":{"manna_bps":100,"creator_bps":100,"included_in_price":true,"asset":"SOL","amount":null,"note":"Manna's 1% and the creator fee are the curve's own pool fee, already in the price","usd":null},"expires_in_secs":15}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/trade/build":{"post":{"operationId":"buildTrade","tags":["Trading"],"summary":"Build a trade (non-custodial)","description":"Build mode: the unsigned transaction(s) for your own wallet to sign, through the same venues and fee rules as mannas.fun. Manna's 1% fee is inside the transactions. Sign them in order without changing them, then POST /trade/submit with the `build_id` within `expires_in_secs`. An EVM sell may start with an approval.\n\n**Auth:** an API key with the `trade` scope.\n\n**Rate limit:** `build` bucket: with a key 30 per minute, 5 per second (per key).\n\n**Cost:** 10 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"trade","x-manna-rate-limit":{"bucket":"build","anonymous":null,"per_key":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}]},"x-manna-credits":10,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TradeBuild"}},"required":["data"]},"example":{"data":{"build_id":"bld_Qm9vZ3hYd2tQb3ZhZ0lk","chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","side":"buy","venue":"manna-curve","in":{"symbol":"SOL","amount":0.5,"raw":"500000000","decimals":9},"out":{"symbol":"token","amount":11942377.12,"raw":"11942377120000","decimals":6,"min_amount":11345258.26,"min_raw":"11345258264000"},"usd":{"in":91.2,"out":null},"price_impact_pct":null,"slippage_bps":500,"fee":{"manna_bps":100,"creator_bps":100,"included_in_price":true,"asset":"SOL","amount":null,"note":"Manna's 1% and the creator fee are the curve's own pool fee, already in the price","usd":null},"transactions":[{"chain":"sol","encoding":"base64","transaction":"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEDBg…","description":"buy on the Manna curve"}],"expires_in_secs":60,"next":"Sign the transactions in order with the wallet, then POST /v1/trade/submit with build_id and signed_transactions (or the signatures if you sent them yourself)."}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"token":{"type":"string","minLength":32,"maxLength":44,"description":"Token address (Solana mint or 0x… contract)"},"side":{"type":"string","enum":["buy","sell"]},"slippage_bps":{"description":"Max slippage in basis points (default: the venue's automatic one, 1.5%-5%)","type":"integer","minimum":10,"maximum":2000},"ref":{"description":"A Manna referral code to credit (first referrer wins, as on the site)","type":"string","pattern":"^[A-Za-z0-9]{1,24}$"},"amount":{"description":"Buy: native coin to spend (SOL / ETH / BNB…). Sell: tokens to sell.","type":"number","exclusiveMinimum":0,"maximum":1000000000000000},"amount_usd":{"description":"Buy only: dollars of native coin to spend","type":"number","exclusiveMinimum":0,"maximum":1000000},"percent":{"description":"Sell only: percent of the wallet's balance (needs wallet)","type":"number","exclusiveMinimum":0,"maximum":100},"wallet":{"type":"string","minLength":32,"maxLength":44,"description":"The wallet that will sign"}},"required":["chain","token","side","wallet"],"additionalProperties":false},"example":{"chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","side":"buy","amount":0.5,"wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","slippage_bps":500}}}}}},"/trade/submit":{"post":{"operationId":"submitTrade","tags":["Trading"],"summary":"Submit a built trade","description":"Send the signed transactions of a build (Manna checks each is exactly the one built and signed by the build's wallet, sends them in order and waits for each), or report the signatures / hashes of transactions you sent yourself. Either way the trade is credited on Manna (PnL, leaderboards, referrals). EVM transactions must be signed with the build's chain id (EIP-155). A referral code only counts when the signed transactions come through here. If the transactions were sent but crediting failed (`recorded: false`), submit the same build_id again: it only retries the crediting and never broadcasts twice. Submitting a credited build again answers the first result.\n\n**Auth:** an API key with the `trade` scope.\n\n**Rate limit:** `build` bucket: with a key 30 per minute, 5 per second (per key).\n\n**Cost:** 10 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"trade","x-manna-rate-limit":{"bucket":"build","anonymous":null,"per_key":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}]},"x-manna-credits":10,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TradeSubmitResult"}},"required":["data"]},"example":{"data":{"signatures":["3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x"],"urls":["https://solscan.io/tx/3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x"],"recorded":true,"details":{"coin_id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"410":{"$ref":"#/components/responses/Gone"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"build_id":{"type":"string","pattern":"^bld_[A-Za-z0-9_-]{16,40}$"},"signed_transactions":{"description":"Signed transactions in build order: Solana base64, EVM 0x raw","minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":10,"maxLength":20000}},"signatures":{"description":"Or: signatures / hashes of transactions you already sent, in build order","minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":60,"maxLength":100}}},"required":["build_id"],"additionalProperties":false},"example":{"build_id":"bld_Qm9vZ3hYd2tQb3ZhZ0lk","signed_transactions":["AQAB…base64…"]}}}}}},"/trade/execute":{"post":{"operationId":"executeTrade","tags":["Trading"],"summary":"Trade the account (account mode)","description":"Account mode: Manna trades the key owner's one-tap wallets on the server, like a one-tap trade on mannas.fun. A buy takes `amount_usd` (spent from the account's cash on any chain; must be within the key's per-trade cap, and is reserved against its rolling 24-hour cap); a sell takes `percent` of the holding. One-tap trading must be switched on at mannas.fun. **Idempotency-Key is required**: a retry with the same key and body gets the first answer back (header `Idempotent-Replayed: true`), so a trade never runs twice. The result is also emitted as `trade.completed` / `trade.failed` webhooks and listed in /account/actions. There is no `ref` here (unlike build mode): a referrer binds to an account forever, so an app holding the key can't pick one for its owner; sending it is a 400 `validation_error`.\n\n**Auth:** an API key with the `trade` scope.\n\n**Rate limit:** `trade` bucket: with a key 30 per minute, 3 per second (per key).\n\n**Cost:** 10 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"trade","x-manna-rate-limit":{"bucket":"trade","anonymous":null,"per_key":[{"max":30,"window_secs":60},{"max":3,"window_secs":1}]},"x-manna-credits":10,"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"1-100 characters: letters, digits and - _ . : (a UUID works). A retry with the same key and body within 24 hours gets the first answer (even an error) instead of running again; the same key with a different body is a 422 `idempotency_mismatch`.","schema":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,100}$"},"example":"6f1c2a9e-4b7d-4e2a-9c3f-1d8e5b7a0c42"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TradeExecuteResult"}},"required":["data"]},"example":{"data":{"action_id":"4821","status":"done","chain":"base","token":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","side":"buy","tx":"0x9c1e5a7f3b2d4c6e8a0b1d3f5e7a9c2b4d6f8e0a1c3b5d7f9e2a4c6b8d0f1e3a","url":"https://basescan.org/tx/0x9c1e5a7f3b2d4c6e8a0b1d3f5e7a9c2b4d6f8e0a1c3b5d7f9e2a4c6b8d0f1e3a","venue":"kyberswap","spent":25,"spent_symbol":"USD","received":182733.4,"received_symbol":"PEPE2","sold_usd":null,"fee_bps":100,"price_impact_pct":0.4}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"token":{"type":"string","minLength":32,"maxLength":44,"description":"Token address (Solana mint or 0x… contract)"},"side":{"type":"string","enum":["buy","sell"]},"slippage_bps":{"description":"Max slippage in basis points (default: the venue's automatic one, 1.5%-5%)","type":"integer","minimum":10,"maximum":2000},"amount_usd":{"description":"Buy: dollars to spend (from the account's cash on any chain)","type":"number","minimum":0.5,"maximum":100000},"percent":{"description":"Sell: percent of the holding","type":"number","exclusiveMinimum":0,"maximum":100},"symbol":{"type":"string","maxLength":20}},"required":["chain","token","side"],"additionalProperties":false},"example":{"chain":"base","token":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","side":"buy","amount_usd":25,"symbol":"PEPE2"}}}}}},"/launch/build":{"post":{"operationId":"buildLaunch","tags":["Launch"],"summary":"Build a launch (non-custodial)","description":"Build mode: the launch transactions for your creator wallet to sign, with the same choices, checks, launch fee and vanity addresses as mannas.fun. Send JSON, or multipart/form-data with the JSON fields in `payload` and the picture in `image`. The picture can also be `image_url` (fetched safely) or `image_base64` (one of the three). Solana: sign both transactions (already signed by the coin's own keys) and submit within a minute; the pre-made Manna-ending address is used only when `wallet` belongs to the key owner's account (other wallets get a random mint). EVM chains: sign and send in order; the launch-fee transfer goes after the launch confirms. `route` sets a custom fee split instead of `preset`: any of the keys, adding up to 10000. Besides the bucket, an account can make at most 30 launch builds an hour across all its keys (429 `rate_limited`).\n\n**Auth:** an API key with the `launch` scope.\n\n**Rate limit:** `launch` bucket: with a key 10 per hour, 3 per minute (per key).\n\n**Cost:** 10 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"launch","x-manna-rate-limit":{"bucket":"launch","anonymous":null,"per_key":[{"max":10,"window_secs":3600},{"max":3,"window_secs":60}]},"x-manna-credits":10,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LaunchBuild"}},"required":["data"]},"example":{"data":{"build_id":"bld_Qm9vZ3hYd2tQb3ZhZ0lk","chain":"sol","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","coin_id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","transactions":[{"chain":"sol","encoding":"base64","transaction":"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEDBg…","description":"create the coin's curve settings"},{"chain":"sol","encoding":"base64","transaction":"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEDBg…","description":"create the coin and its pool (with your first buy)"}],"launch_fee_lamports":2741228,"expires_in_secs":60,"next":"Sign both transactions with the wallet (they're already signed by the coin's own keys) and POST /v1/launch/submit within a minute, in order."}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","bsc","ethereum","arbitrum","optimism","polygon","avalanche"]},"name":{"type":"string","minLength":1,"maxLength":32},"symbol":{"type":"string","minLength":1,"maxLength":24,"description":"Ticker: up to 10 bytes on Solana, 12 on EVM chains"},"description":{"type":"string","maxLength":500},"image_url":{"description":"A public https:// PNG, JPG, WEBP or GIF up to 1.5 MB","type":"string","maxLength":500,"format":"uri"},"image_base64":{"description":"Or the image bytes, base64","type":"string","maxLength":2100000},"links":{"type":"object","properties":{"x":{"type":"string","maxLength":200},"telegram":{"type":"string","maxLength":200},"website":{"type":"string","maxLength":200}},"additionalProperties":false},"creator_fee_bps":{"description":"Creator fee, 0-1000 bps (0-10%). Manna's 1% comes on top. Default 100","type":"integer","minimum":0,"maximum":1000},"preset":{"description":"How the creator fee is shared out (default balanced)","type":"string","enum":["keep","balanced","community","yappers","burn","lotto","spread","ai"]},"shield_secs":{"description":"Sniper shield: 0 (off) or 3-30 seconds. Default 10","type":"integer","minimum":0,"maximum":30},"shield_mode":{"description":"Sniper shield kind, like Solana on every chain: flat (one fee the whole window, default) or fade (99% falling to the normal fee). fast (99% halving fast) only on EVM chains whose launch contract predates shield modes, where it is the only kind","type":"string","enum":["flat","fade","fast"]},"shield_flat_bps":{"description":"Flat shield fee 9000/9500/9900 (default 9000), or 0 for the fading shield","anyOf":[{"type":"number","const":0},{"type":"number","const":9000},{"type":"number","const":9500},{"type":"number","const":9900}]},"curve":{"description":"Graduation curve: 0 light, 1 normal (default), 2 heavy","anyOf":[{"type":"number","const":0},{"type":"number","const":1},{"type":"number","const":2}]},"pair":{"description":"Pair token id from /v1/launch/options (default: the chain's native coin)","type":"string","maxLength":64},"dev_buy":{"description":"First buy, in the pair token (default 0)","type":"number","minimum":0,"maximum":1000000000000},"fee_to":{"description":"Solana: send creator fees to \"wallet:<address>\", \"x:<handle>\", \"github:<handle>\", \"telegram:<handle>\" or \"email:<address>\"","type":"string","maxLength":220},"holders_chat":{"type":"boolean"},"lock_days":{"description":"Lock the first buy (Solana: days; EVM chains lock for 30 days when > 0)","type":"integer","minimum":0,"maximum":3650},"wallet":{"type":"string","minLength":32,"maxLength":44,"description":"The creator wallet that will sign"},"route":{"description":"Custom fee split in bps (sums to 10000), instead of preset","type":"object","propertyNames":{"type":"string","enum":["creator","holders","comeback","flock","burn","jackpot","spread"]},"additionalProperties":{"type":"integer","minimum":0,"maximum":10000}},"ending":{"description":"EVM chains: always 4a4a (the only ending the token deployer creates); optional","type":"string","maxLength":4}},"required":["chain","name","symbol","wallet"],"additionalProperties":false},"example":{"chain":"sol","wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","name":"Moon Dog","symbol":"MDOG","description":"The goodest boy on Solana","image_url":"https://example.com/mdog.png","route":{"creator":7000,"holders":3000},"dev_buy":0.5}},"multipart/form-data":{"schema":{"type":"object","properties":{"payload":{"type":"string","contentMediaType":"application/json","description":"The same fields as the JSON body, as a JSON string"},"image":{"type":"string","contentMediaType":"application/octet-stream","description":"The coin's picture: PNG, JPG, WEBP or GIF, up to 1.5 MB"}},"required":["payload"]},"encoding":{"payload":{"contentType":"application/json"},"image":{"contentType":"image/png, image/jpeg, image/webp, image/gif"}}}}}}},"/launch/submit":{"post":{"operationId":"submitLaunch","tags":["Launch"],"summary":"Submit a built launch","description":"Send the signed launch transactions (or report their signatures / hashes) and put the coin on Manna. On EVM chains the coin's address is read from the launch receipt and the launch-fee transfer is verified on-chain. EVM transactions must be signed with the build's chain id (EIP-155). If the transactions were sent through here but putting the coin on Manna failed, submit the same build_id again: it only retries that step and never broadcasts twice. Emits `launch.completed` (mode build).\n\n**Auth:** an API key with the `launch` scope.\n\n**Rate limit:** `build` bucket: with a key 30 per minute, 5 per second (per key).\n\n**Cost:** 10 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"launch","x-manna-rate-limit":{"bucket":"build","anonymous":null,"per_key":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}]},"x-manna-credits":10,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LaunchSubmitResult"}},"required":["data"]},"example":{"data":{"coin_id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","signatures":["3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x"],"url":"https://mannas.fun/coin/sol%3A9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"410":{"$ref":"#/components/responses/Gone"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"build_id":{"type":"string","pattern":"^bld_[A-Za-z0-9_-]{16,40}$"},"signed_transactions":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":10,"maxLength":20000}},"signatures":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","minLength":60,"maxLength":100}}},"required":["build_id"],"additionalProperties":false},"example":{"build_id":"bld_Qm9vZ3hYd2tQb3ZhZ0lk","signed_transactions":["AQAB…base64…","AgAB…base64…"]}}}}}},"/launch/execute":{"post":{"operationId":"executeLaunch","tags":["Launch"],"summary":"Launch from the account (account mode)","description":"Account mode: Manna launches the coin from the key owner's one-tap wallets. The first buy (`dev_buy`, in the pair token) must be within the key's per-trade cap, and the first buy plus the launch fee is reserved against its daily cap. Same body as /launch/build without `wallet`, `route` and `ending`; JSON or multipart (`payload` + `image`). **Idempotency-Key is required** (the image counts toward the request fingerprint). Emits `launch.completed` (mode account) or `launch.failed`.\n\n**Auth:** an API key with the `launch` scope.\n\n**Rate limit:** `launch` bucket: with a key 10 per hour, 3 per minute (per key).\n\n**Cost:** 10 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"launch","x-manna-rate-limit":{"bucket":"launch","anonymous":null,"per_key":[{"max":10,"window_secs":3600},{"max":3,"window_secs":60}]},"x-manna-credits":10,"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"1-100 characters: letters, digits and - _ . : (a UUID works). A retry with the same key and body within 24 hours gets the first answer (even an error) instead of running again; the same key with a different body is a 422 `idempotency_mismatch`.","schema":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{1,100}$"},"example":"6f1c2a9e-4b7d-4e2a-9c3f-1d8e5b7a0c42"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"},"Idempotent-Replayed":{"$ref":"#/components/headers/Idempotent-Replayed"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/LaunchExecuteResult"}},"required":["data"]},"example":{"data":{"action_id":"4822","status":"done","chain":"sol","coin_id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","tx":"3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x","note":null,"url":"https://mannas.fun/coin/sol%3A9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","steps":["Checking balances","Launching","Putting it on Manna"]}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","bsc","ethereum","arbitrum","optimism","polygon","avalanche"]},"name":{"type":"string","minLength":1,"maxLength":32},"symbol":{"type":"string","minLength":1,"maxLength":24,"description":"Ticker: up to 10 bytes on Solana, 12 on EVM chains"},"description":{"type":"string","maxLength":500},"image_url":{"description":"A public https:// PNG, JPG, WEBP or GIF up to 1.5 MB","type":"string","maxLength":500,"format":"uri"},"image_base64":{"description":"Or the image bytes, base64","type":"string","maxLength":2100000},"links":{"type":"object","properties":{"x":{"type":"string","maxLength":200},"telegram":{"type":"string","maxLength":200},"website":{"type":"string","maxLength":200}},"additionalProperties":false},"creator_fee_bps":{"description":"Creator fee, 0-1000 bps (0-10%). Manna's 1% comes on top. Default 100","type":"integer","minimum":0,"maximum":1000},"preset":{"description":"How the creator fee is shared out (default balanced)","type":"string","enum":["keep","balanced","community","yappers","burn","lotto","spread","ai"]},"shield_secs":{"description":"Sniper shield: 0 (off) or 3-30 seconds. Default 10","type":"integer","minimum":0,"maximum":30},"shield_mode":{"description":"Sniper shield kind, like Solana on every chain: flat (one fee the whole window, default) or fade (99% falling to the normal fee). fast (99% halving fast) only on EVM chains whose launch contract predates shield modes, where it is the only kind","type":"string","enum":["flat","fade","fast"]},"shield_flat_bps":{"description":"Flat shield fee 9000/9500/9900 (default 9000), or 0 for the fading shield","anyOf":[{"type":"number","const":0},{"type":"number","const":9000},{"type":"number","const":9500},{"type":"number","const":9900}]},"curve":{"description":"Graduation curve: 0 light, 1 normal (default), 2 heavy","anyOf":[{"type":"number","const":0},{"type":"number","const":1},{"type":"number","const":2}]},"pair":{"description":"Pair token id from /v1/launch/options (default: the chain's native coin)","type":"string","maxLength":64},"dev_buy":{"description":"First buy, in the pair token (default 0)","type":"number","minimum":0,"maximum":1000000000000},"fee_to":{"description":"Solana: send creator fees to \"wallet:<address>\", \"x:<handle>\", \"github:<handle>\", \"telegram:<handle>\" or \"email:<address>\"","type":"string","maxLength":220},"holders_chat":{"type":"boolean"},"lock_days":{"description":"Lock the first buy (Solana: days; EVM chains lock for 30 days when > 0)","type":"integer","minimum":0,"maximum":3650}},"required":["chain","name","symbol"],"additionalProperties":false},"example":{"chain":"sol","name":"Moon Dog","symbol":"MDOG","image_url":"https://example.com/mdog.png","dev_buy":0.2}},"multipart/form-data":{"schema":{"type":"object","properties":{"payload":{"type":"string","contentMediaType":"application/json","description":"The same fields as the JSON body, as a JSON string"},"image":{"type":"string","contentMediaType":"application/octet-stream","description":"The coin's picture: PNG, JPG, WEBP or GIF, up to 1.5 MB"}},"required":["payload"]},"encoding":{"payload":{"contentType":"application/json"},"image":{"contentType":"image/png, image/jpeg, image/webp, image/gif"}}}}}}},"/me":{"get":{"operationId":"getMe","tags":["Account"],"summary":"Who am I","description":"The key (scopes, caps, what it has spent and has left today), its owner, and whether account mode can trade. Any scope works; `account.wallets` is null unless the key has the `read` scope.\n\n**Auth:** an API key (any scope).\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Me"}},"required":["data"]},"example":{"data":{"key":{"id":"12","name":"my bot","scopes":["read","trade"],"max_trade_usd":100,"daily_usd":500,"spent_today_usd":25,"left_today_usd":475,"allowed_ips":null},"account":{"wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","wallets":["5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","0x8ba1f109551bD432803012645Ac136ddd64DBA72"],"nickname":"degenfan","x_handle":"degenfan","one_tap":{"ready":true,"sol_wallet":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","evm_wallet":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/positions":{"get":{"operationId":"listPositions","tags":["Account"],"summary":"Positions and PnL","description":"Manna coins and every other token the account traded through Manna, with value, invested, PnL and realized PnL in dollars, biggest first.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 5 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":5,"parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["open","closed","all"],"default":"open"},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Positions"}},"required":["data"]},"example":{"data":{"positions":[{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","chain":"sol","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","name":"Moon Dog","manna":true,"open":true,"balance":11942377.12,"value_usd":89.7,"invested_usd":91.2,"pnl_usd":-1.5,"pnl_pct":-1.64,"realized_usd":0,"last_trade_at":"2026-10-20T09:41:52.000Z"}],"totals":{"value_usd":89.7,"pnl_usd":-1.5},"partial":false}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/portfolio":{"get":{"operationId":"getPortfolio","tags":["Account"],"summary":"Portfolio","description":"Net worth across the account's wallets and its watch-only wallets, token by token.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 5 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":5,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Portfolio"}},"required":["data"]},"example":{"data":{"totalUsd":1290.4,"change24hUsd":22.1,"change24hPct":1.74,"accountUsd":1290.4,"watchUsd":0,"wallets":[{"id":"sol","kind":"manna","family":"sol","address":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","label":"Solana","valueUsd":1290.4,"change24hUsd":22.1,"tokens":[],"partial":false}],"hidden":[]}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/balances":{"get":{"operationId":"getBalances","tags":["Account"],"summary":"Cash balances","description":"The account's cash (native coins and stablecoins) on every chain: what account-mode buys spend.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 5 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":5,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Balances"}},"required":["data"]},"example":{"data":{"total_usd":412.8,"wallets":{"sol":"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","evm":"0x8ba1f109551bD432803012645Ac136ddd64DBA72"},"lines":[{"chain":"sol","symbol":"SOL","asset":"native","native":true,"amount":1.2,"usd":218.9},{"chain":"base","symbol":"USDC","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","native":false,"amount":193.9,"usd":193.9}]}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/actions":{"get":{"operationId":"listActions","tags":["Account"],"summary":"List actions","description":"Account-mode trades and launches made with any of this account's keys, newest first.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"parameters":[{"name":"limit","in":"query","description":"Items per page (1-100; values outside are clamped)","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false},{"name":"cursor","in":"query","description":"Opaque: the `next_cursor` of the previous page","schema":{"type":"string","maxLength":300},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Action"}},"next_cursor":{"type":["string","null"],"description":"Pass as `cursor` for the next page; null on the last page"}},"required":["data","next_cursor"]},"example":{"data":[{"id":"4821","key_id":"12","kind":"buy","chain":"base","token":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","usd":25,"status":"done","tx":"0x9c1e5a7f3b2d4c6e8a0b1d3f5e7a9c2b4d6f8e0a1c3b5d7f9e2a4c6b8d0f1e3a","error":null,"created_at":"2026-10-20T09:40:03.000Z","done_at":"2026-10-20T09:40:09.000Z"}],"next_cursor":"eyJvIjo1MH0"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/actions/{id}":{"get":{"operationId":"getAction","tags":["Account"],"summary":"Get an action","description":"One action with its full result. Use it to check a trade after a timeout or an `idempotency_in_progress`.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"parameters":[{"name":"id","in":"path","required":true,"description":"The action's id","schema":{"type":"string","pattern":"^\\d{1,18}$"},"example":"4821"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ActionDetail"}},"required":["data"]},"example":{"data":{"id":"4821","key_id":"12","kind":"buy","chain":"base","token":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","usd":25,"status":"done","tx":"0x9c1e5a7f3b2d4c6e8a0b1d3f5e7a9c2b4d6f8e0a1c3b5d7f9e2a4c6b8d0f1e3a","error":null,"created_at":"2026-10-20T09:40:03.000Z","done_at":"2026-10-20T09:40:09.000Z","result":{"action_id":"4821","status":"done","chain":"base","token":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","side":"buy","tx":"0x9c1e5a7f3b2d4c6e8a0b1d3f5e7a9c2b4d6f8e0a1c3b5d7f9e2a4c6b8d0f1e3a","url":"https://basescan.org/tx/0x9c1e5a7f3b2d4c6e8a0b1d3f5e7a9c2b4d6f8e0a1c3b5d7f9e2a4c6b8d0f1e3a","venue":"kyberswap","spent":25,"spent_symbol":"USD","received":182733.4,"received_symbol":"PEPE2","sold_usd":null,"fee_bps":100,"price_impact_pct":0.4}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/orders":{"get":{"operationId":"listOrders","tags":["Orders"],"summary":"List orders","description":"Live limit, take-profit, stop-loss, trailing and DCA orders of the account (made on the web, in the Telegram bot or here), or finished ones with `history=1`. Up to 100.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"parameters":[{"name":"history","in":"query","description":"1: finished orders instead of live ones","schema":{"type":"string","enum":["1"]},"required":false},{"name":"chain","in":"query","schema":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"required":false},{"name":"token","in":"query","description":"Only orders on this token","schema":{"type":"string"},"required":false}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Orders"}},"required":["data"]},"example":{"data":{"orders":[{"id":"903","chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","side":"sell","kind":"tp","trigger_mcap":50000,"trail_pct":null,"peak_mcap":null,"amount_usd":null,"sell_pct":50,"sell_initial":false,"status":"open","tx":null,"error":null,"created_at":"2026-10-20T09:45:00.000Z","done_at":null,"interval_secs":null,"runs_total":null,"runs_done":0,"fails":0,"next_at":null,"entry_mcap":7514.9,"source":"web"}],"counts":{"orders":1,"dca":0}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createOrder","tags":["Orders"],"summary":"Create an order","description":"An order the account's one-tap wallets fill when the market cap hits the trigger: `limit` (buy at or below), `tp` / `limit_sell` (sell at or above), `sl` (sell at or below), `trail` (trailing stop) or `dca` (repeated buys). One-tap trading must be switched on (409 `one_tap_disabled`). Each buy must be within the key's per-trade cap. Refused when the trigger is already met. Buy orders fill later without the key, so everything they can spend is taken from the key's daily cap now (`committed_usd`: `amount_usd` for a limit buy, `amount_usd` × `runs` for DCA; 403 `daily_cap_exceeded` when it doesn't fit). A DCA plan made through the API **requires `runs`**. Cancelling gives back the unspent part; revoking the key or removing its `trade` scope cancels its open orders. Fills emit `order.filled` / `order.failed` webhooks.\n\n**Auth:** an API key with the `trade` scope.\n\n**Rate limit:** `trade` bucket: with a key 30 per minute, 3 per second (per key).\n\n**Cost:** 2 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"trade","x-manna-rate-limit":{"bucket":"trade","anonymous":null,"per_key":[{"max":30,"window_secs":60},{"max":3,"window_secs":1}]},"x-manna-credits":2,"responses":{"201":{"description":"Created","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/OrderCreated"}},"required":["data"]},"example":{"data":{"id":"903","chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","side":"sell","kind":"tp","trigger_mcap":50000,"trail_pct":null,"peak_mcap":null,"amount_usd":null,"sell_pct":50,"sell_initial":false,"status":"open","tx":null,"error":null,"created_at":"2026-10-20T09:45:00.000Z","done_at":null,"interval_secs":null,"runs_total":null,"runs_done":0,"fails":0,"next_at":null,"entry_mcap":7514.9,"source":"web","committed_usd":0}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"$ref":"#/components/responses/Conflict"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"token":{"type":"string","minLength":32,"maxLength":44},"symbol":{"type":"string","maxLength":20},"kind":{"type":"string","enum":["limit","tp","sl","limit_sell","trail","dca"],"description":"limit (buy at or below), tp / limit_sell (sell at or above), sl (sell at or below), trail (trailing stop), dca"},"trigger_mcap":{"description":"Market cap in dollars that fires the order (all kinds but trail and dca)","type":"number","exclusiveMinimum":0},"trail_pct":{"description":"trail: drop from the peak, in percent","type":"number","minimum":1,"maximum":90},"amount_usd":{"description":"Buys (limit, dca): dollars per buy","type":"number","minimum":1,"maximum":100000},"sell_pct":{"description":"Sells: percent of the holding (default 100)","type":"number","exclusiveMinimum":0,"maximum":100},"sell_initial":{"description":"Sells: sell back just what went in","type":"boolean"},"interval_secs":{"description":"dca: seconds between buys (see the site's choices: 3600, 14400, 86400…)","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"runs":{"description":"dca: number of buys (required for API-made plans: runs × amount_usd counts against the key's daily cap)","type":"integer","minimum":2,"maximum":1000}},"required":["chain","token","kind"],"additionalProperties":false},"example":{"chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","kind":"tp","trigger_mcap":50000,"sell_pct":50}}}}}},"/account/orders/{id}":{"patch":{"operationId":"updateOrder","tags":["Orders"],"summary":"Pause or resume a DCA plan","description":"Pause or resume a running DCA plan.\n\n**Auth:** an API key with the `trade` scope.\n\n**Rate limit:** `trade` bucket: with a key 30 per minute, 3 per second (per key).\n\n**Cost:** 2 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"trade","x-manna-rate-limit":{"bucket":"trade","anonymous":null,"per_key":[{"max":30,"window_secs":60},{"max":3,"window_secs":1}]},"x-manna-credits":2,"parameters":[{"name":"id","in":"path","required":true,"description":"The order's id","schema":{"type":"string","pattern":"^\\d{1,18}$"},"example":"4821"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"paused":{"type":"boolean"}},"required":["id","paused"]}},"required":["data"]},"example":{"data":{"id":"903","paused":true}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paused":{"type":"boolean"}},"required":["paused"],"additionalProperties":false},"example":{"paused":true}}}}},"delete":{"operationId":"cancelOrder","tags":["Orders"],"summary":"Cancel an order","description":"Cancel an open order or DCA plan. What a buy order made with an API key committed and didn't spend goes back to that key's daily cap.\n\n**Auth:** an API key with the `trade` scope.\n\n**Rate limit:** `trade` bucket: with a key 30 per minute, 3 per second (per key).\n\n**Cost:** 2 credits of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"trade","x-manna-rate-limit":{"bucket":"trade","anonymous":null,"per_key":[{"max":30,"window_secs":60},{"max":3,"window_secs":1}]},"x-manna-credits":2,"parameters":[{"name":"id","in":"path","required":true,"description":"The order's id","schema":{"type":"string","pattern":"^\\d{1,18}$"},"example":"4821"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","const":"cancelled"}},"required":["id","status"]}},"required":["data"]},"example":{"data":{"id":"903","status":"cancelled"}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/alerts":{"get":{"operationId":"listAlerts","tags":["Alerts"],"summary":"List alerts","description":"The account's price alerts (live ones first). Alerts notify on mannas.fun and in the Telegram bot.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}}},"required":["data"]},"example":{"data":[{"id":"77","chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","icon":null,"metric":"mcap","dir":"above","target":100000,"base":null,"repeat":false,"active":true,"fired":0,"last_fired_at":null,"created_at":"2026-10-20T09:50:00.000Z","label":"market cap above $100K"}]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createAlert","tags":["Alerts"],"summary":"Create an alert","description":"Alert when a token's price or market cap crosses a target, or when it moves by a percent (`move`). Refused when the target is already met.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"responses":{"201":{"description":"Created","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Alert"}},"required":["data"]},"example":{"data":{"id":"77","chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","icon":null,"metric":"mcap","dir":"above","target":100000,"base":null,"repeat":false,"active":true,"fired":0,"last_fired_at":null,"created_at":"2026-10-20T09:50:00.000Z","label":"market cap above $100K"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"token":{"type":"string","minLength":32,"maxLength":44},"metric":{"type":"string","enum":["price","mcap","move"]},"dir":{"type":"string","enum":["above","below","any"]},"target":{"type":"number","exclusiveMinimum":0,"description":"Price or market cap in dollars, or the move in percent"},"repeat":{"type":"boolean"},"symbol":{"type":"string","maxLength":24}},"required":["chain","token","metric","dir","target"],"additionalProperties":false},"example":{"chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","metric":"mcap","dir":"above","target":100000}}}}}},"/account/alerts/{id}":{"patch":{"operationId":"updateAlert","tags":["Alerts"],"summary":"Update an alert","description":"Pause / resume an alert (`active`) or change whether it repeats.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"parameters":[{"name":"id","in":"path","required":true,"description":"The alert's id","schema":{"type":"string","pattern":"^\\d{1,18}$"},"example":"77"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Alert"}},"required":["data"]},"example":{"data":{"id":"77","chain":"sol","token":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","symbol":"MDOG","icon":null,"metric":"mcap","dir":"above","target":100000,"base":null,"repeat":false,"active":false,"fired":0,"last_fired_at":null,"created_at":"2026-10-20T09:50:00.000Z","label":"market cap above $100K"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"active":{"type":"boolean"},"repeat":{"type":"boolean"}},"additionalProperties":false},"example":{"active":false}}}}},"delete":{"operationId":"deleteAlert","tags":["Alerts"],"summary":"Delete an alert","description":"Delete an alert.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"parameters":[{"name":"id","in":"path","required":true,"description":"The alert's id","schema":{"type":"string","pattern":"^\\d{1,18}$"},"example":"77"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["data"]},"example":{"data":{"id":"77","deleted":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/account/watchlist":{"get":{"operationId":"getWatchlist","tags":["Watchlist"],"summary":"Get the watchlist","description":"The account's watchlist (shared with mannas.fun), newest first. Up to 200.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WatchItem"}}},"required":["data"]},"example":{"data":[{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","added_at":"2026-10-20T09:30:00.000Z"}]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"addToWatchlist","tags":["Watchlist"],"summary":"Watch a token","description":"Add a coin or token. Adding one already there is fine. The list keeps the newest 200.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"responses":{"201":{"description":"Created","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"watching":{"type":"boolean"}},"required":["id","watching"]}},"required":["data"]},"example":{"data":{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","watching":true}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]{2,12}:[A-Za-z0-9]{20,64}$","description":"\"chain:address\", e.g. \"sol:<mint>\""}},"required":["id"],"additionalProperties":false},"example":{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}}}}}},"/account/watchlist/{id}":{"delete":{"operationId":"removeFromWatchlist","tags":["Watchlist"],"summary":"Unwatch a token","description":"Remove a coin or token. Removing one that isn't there still answers 200.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"parameters":[{"name":"id","in":"path","required":true,"description":"\"chain:address\", e.g. \"sol:<mint>\"","schema":{"type":"string","pattern":"^[a-z]{2,12}:[A-Za-z0-9]{20,64}$"},"example":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"watching":{"type":"boolean"}},"required":["id","watching"]}},"required":["data"]},"example":{"data":{"id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","watching":false}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/webhooks":{"get":{"operationId":"listWebhooks","tags":["Webhooks"],"summary":"List webhooks","description":"The account's webhook endpoints (secrets are never shown again).\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}},"required":["data"]},"example":{"data":[{"id":"31","url":"https://example.com/manna-hook","events":["trade.completed","trade.failed","launch.completed","launch.failed","order.filled","order.failed"],"active":true,"fails":0,"created_at":"2026-10-20T10:00:00.000Z"}]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}},"post":{"operationId":"createWebhook","tags":["Webhooks"],"summary":"Create a webhook","description":"Add an endpoint (a public https URL) for some or all events (default: all). At most 5 per account. The answer carries the signing secret, shown once.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"responses":{"201":{"description":"Created","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/WebhookCreated"}},"required":["data"]},"example":{"data":{"id":"31","url":"https://example.com/manna-hook","events":["trade.completed","trade.failed"],"active":true,"fails":0,"created_at":"2026-10-20T10:00:00.000Z","secret":"whsec_3kQ9vR2xL7mN1pT8sW4yB6cD0fG5hJ2a"}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":500},"events":{"type":"array","items":{"type":"string","enum":["trade.completed","trade.failed","launch.completed","launch.failed","order.filled","order.failed"]}}},"required":["url"],"additionalProperties":false},"example":{"url":"https://example.com/manna-hook","events":["trade.completed","trade.failed"]}}}}}},"/webhooks/{id}":{"delete":{"operationId":"deleteWebhook","tags":["Webhooks"],"summary":"Delete a webhook","description":"Delete an endpoint. Queued deliveries to it are dropped.\n\n**Auth:** an API key with the `read` scope.\n\n**Rate limit:** `read` bucket: anonymous 30 per minute, 5 per second (per IP); with a key 60 per minute, 10 per second (per key).\n\n**Cost:** 1 credit of the daily quota.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"read","x-manna-rate-limit":{"bucket":"read","anonymous":[{"max":30,"window_secs":60},{"max":5,"window_secs":1}],"per_key":[{"max":60,"window_secs":60},{"max":10,"window_secs":1}]},"x-manna-credits":1,"parameters":[{"name":"id","in":"path","required":true,"description":"The webhook's id","schema":{"type":"string","pattern":"^\\d+$"},"example":"31"}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Quota-Limit":{"$ref":"#/components/headers/X-Quota-Limit"},"X-Quota-Remaining":{"$ref":"#/components/headers/X-Quota-Remaining"},"X-Quota-Reset":{"$ref":"#/components/headers/X-Quota-Reset"},"X-Quota-Cost":{"$ref":"#/components/headers/X-Quota-Cost"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"deleted":{"type":"boolean"}},"required":["id","deleted"]}},"required":["data"]},"example":{"data":{"id":"31","deleted":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/chat/completions":{"post":{"operationId":"createChatCompletion","tags":["AI"],"summary":"Chat completions (OpenAI compatible)","description":"OpenAI's chat completions API: point an OpenAI SDK at the /v1 base URL with your sk-manna- key. Models are `provider/model` ids from GET /models (Claude, GPT, Gemini, Grok). `stream: true` streams server-sent events.\n\n**Auth:** an API key with the `ai` scope (a key without it, or used from an IP outside the key's allowlist, is answered 401, like an unknown key). Paid from the owner's Manna AI credits (and the key's own spend cap, if set). Not counted against the developer API's rate-limit buckets.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"ai","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string"},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{}},"required":["role","content"]}},"stream":{"type":"boolean"},"max_tokens":{"type":"integer"},"temperature":{"type":"number"}},"required":["model","messages"],"additionalProperties":true},"example":{"model":"anthropic/claude-sonnet-4.5","messages":[{"role":"user","content":"Summarize MDOG's last hour"}]}}}},"responses":{"200":{"description":"An OpenAI chat.completion object, or a text/event-stream when `stream` is true","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"No model / messages, or an unknown model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiError"}}}},"401":{"description":"Missing or invalid key, no `ai` scope, or an IP outside the key's allowlist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiError"}}}},"402":{"description":"No credits for this model's family, or the key's spend cap is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiError"}}}},"503":{"description":"Manna AI is switching on","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiError"}}}}}}},"/messages":{"post":{"operationId":"createMessage","tags":["AI"],"summary":"Messages (Anthropic compatible)","description":"Anthropic's Messages API, non-streaming: point an Anthropic SDK at the base URL. `claude-sonnet-4.5` works as well as `anthropic/claude-sonnet-4.5`; text content only. `max_tokens` defaults to 1024.\n\n**Auth:** an API key with the `ai` scope (a key without it, or used from an IP outside the key's allowlist, is answered 401, like an unknown key). Paid from the owner's Manna AI credits (and the key's own spend cap, if set). Not counted against the developer API's rate-limit buckets.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"ai","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string"},"system":{},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{}},"required":["role","content"]}},"max_tokens":{"type":"integer"},"temperature":{"type":"number"}},"required":["model","messages"],"additionalProperties":true},"example":{"model":"claude-sonnet-4.5","max_tokens":512,"messages":[{"role":"user","content":"Hello"}]}}}},"responses":{"200":{"description":"An Anthropic message","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","const":"message"},"role":{"type":"string","const":"assistant"},"model":{"type":"string"},"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string"}},"required":["type","text"]}},"stop_reason":{"type":"string","enum":["end_turn","max_tokens"]},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer"},"output_tokens":{"type":"integer"}},"required":["input_tokens","output_tokens"]}},"required":["id","type","role","model","content","stop_reason","usage"]}}}},"400":{"description":"No model / messages, an unknown model, or `stream: true`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnthropicError"}}}},"401":{"description":"Missing or invalid key, no `ai` scope, or an IP outside the key's allowlist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnthropicError"}}}},"402":{"description":"No credits, or the key's spend cap is reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnthropicError"}}}},"503":{"description":"Manna AI is switching on","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnthropicError"}}}}}}},"/models":{"get":{"operationId":"listModels","tags":["AI"],"summary":"List AI models","description":"The models Manna AI serves, with the credit family that pays for each. **Auth:** none.","security":[{}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/AiModel"}}},"required":["object","data"]},"example":{"object":"list","data":[{"id":"anthropic/claude-sonnet-4.5","object":"model","owned_by":"Anthropic","credit":"claude"}]}}}}}}},"/balance":{"get":{"operationId":"getAiBalance","tags":["AI"],"summary":"AI credit balance","description":"Credit balances in dollars per provider family, and what the key has left of its spend cap (null: no cap).\n\n**Auth:** an API key with the `ai` scope (a key without it, or used from an IP outside the key's allowlist, is answered 401, like an unknown key). Paid from the owner's Manna AI credits (and the key's own spend cap, if set). Not counted against the developer API's rate-limit buckets.","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"x-manna-scope":"ai","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"balances":{"type":"object","additionalProperties":{"type":"object","properties":{"balance":{"type":"number"},"earned":{"type":"number"}},"required":["balance","earned"]}},"key":{"type":"object","properties":{"cap_left_usd":{"type":["number","null"]}},"required":["cap_left_usd"]}},"required":["balances","key"]},"example":{"balances":{"claude":{"balance":4.12,"earned":10.5},"gpt":{"balance":0,"earned":0},"gemini":{"balance":1.2,"earned":1.2},"grok":{"balance":0,"earned":0}},"key":{"cap_left_usd":null}}}}},"401":{"description":"Missing or invalid key, no `ai` scope, or an IP outside the key's allowlist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiError"}}}}}}}},"webhooks":{"trade.completed":{"post":{"operationId":"webhook_trade_completed","tags":["Webhooks"],"summary":"An account-mode trade went through","description":"POSTed to your endpoint for `trade.completed`. Answer 2xx within 8 seconds (a hard deadline); anything else is retried (30s, 2m, 10m, 30m, 2h, 6h), 7 attempts at most. Verify `Manna-Signature` before trusting it.","parameters":[{"name":"Manna-Signature","in":"header","required":true,"description":"t=<unix seconds>,v1=<hex HMAC-SHA256 of `${t}.${raw body}` with the endpoint secret>","schema":{"type":"string"}},{"name":"Manna-Event","in":"header","required":true,"schema":{"type":"string","const":"trade.completed"}},{"name":"Manna-Delivery","in":"header","required":true,"description":"evt_…, the same as the body's id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEvent"},{"type":"object","properties":{"event":{"const":"trade.completed"},"data":{"$ref":"#/components/schemas/TradeExecuteResult"}}}]},"example":{"id":"evt_90211","event":"trade.completed","created_at":"2026-10-20T09:40:09.000Z","data":{"action_id":"4821","status":"done","chain":"base","token":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","side":"buy","tx":"0x9c1e…","url":"https://basescan.org/tx/0x9c1e…","venue":"kyberswap","spent":25,"spent_symbol":"USD","received":182733.4,"received_symbol":"PEPE2","sold_usd":null,"fee_bps":100,"price_impact_pct":0.4}}}}},"responses":{"200":{"description":"Received (any 2xx)"}}}},"trade.failed":{"post":{"operationId":"webhook_trade_failed","tags":["Webhooks"],"summary":"An account-mode trade failed","description":"POSTed to your endpoint for `trade.failed`. Answer 2xx within 8 seconds (a hard deadline); anything else is retried (30s, 2m, 10m, 30m, 2h, 6h), 7 attempts at most. Verify `Manna-Signature` before trusting it.","parameters":[{"name":"Manna-Signature","in":"header","required":true,"description":"t=<unix seconds>,v1=<hex HMAC-SHA256 of `${t}.${raw body}` with the endpoint secret>","schema":{"type":"string"}},{"name":"Manna-Event","in":"header","required":true,"schema":{"type":"string","const":"trade.failed"}},{"name":"Manna-Delivery","in":"header","required":true,"description":"evt_…, the same as the body's id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEvent"},{"type":"object","properties":{"event":{"const":"trade.failed"},"data":{"$ref":"#/components/schemas/TradeFailedData"}}}]},"example":{"id":"evt_90211","event":"trade.failed","created_at":"2026-10-20T09:40:09.000Z","data":{"action_id":"4821","chain":"base","token":"0x4f1c2b7e9a0d3c5b8e6f7a1d2c3b4a5e6f704a4a","side":"buy","error":"Not enough cash","maybe_sent":false}}}}},"responses":{"200":{"description":"Received (any 2xx)"}}}},"launch.completed":{"post":{"operationId":"webhook_launch_completed","tags":["Webhooks"],"summary":"A launch went through (build or account mode)","description":"POSTed to your endpoint for `launch.completed`. Answer 2xx within 8 seconds (a hard deadline); anything else is retried (30s, 2m, 10m, 30m, 2h, 6h), 7 attempts at most. Verify `Manna-Signature` before trusting it.","parameters":[{"name":"Manna-Signature","in":"header","required":true,"description":"t=<unix seconds>,v1=<hex HMAC-SHA256 of `${t}.${raw body}` with the endpoint secret>","schema":{"type":"string"}},{"name":"Manna-Event","in":"header","required":true,"schema":{"type":"string","const":"launch.completed"}},{"name":"Manna-Delivery","in":"header","required":true,"description":"evt_…, the same as the body's id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEvent"},{"type":"object","properties":{"event":{"const":"launch.completed"},"data":{"$ref":"#/components/schemas/LaunchCompletedData"}}}]},"example":{"id":"evt_90211","event":"launch.completed","created_at":"2026-10-20T09:40:09.000Z","data":{"mode":"account","action_id":"4822","status":"done","chain":"sol","coin_id":"sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","tx":"3vZ7mJ2fK9pQ1xYwRtB4nC8sD6hG5jL2aE7uV9iW3oT1kM4qN8rS6yX2zA5bF7cH9dJ1eK3gP6mU8wQ4tR2vY5x","note":null,"url":"https://mannas.fun/coin/sol%3A9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111","steps":["Launching"]}}}}},"responses":{"200":{"description":"Received (any 2xx)"}}}},"launch.failed":{"post":{"operationId":"webhook_launch_failed","tags":["Webhooks"],"summary":"An account-mode launch failed","description":"POSTed to your endpoint for `launch.failed`. Answer 2xx within 8 seconds (a hard deadline); anything else is retried (30s, 2m, 10m, 30m, 2h, 6h), 7 attempts at most. Verify `Manna-Signature` before trusting it.","parameters":[{"name":"Manna-Signature","in":"header","required":true,"description":"t=<unix seconds>,v1=<hex HMAC-SHA256 of `${t}.${raw body}` with the endpoint secret>","schema":{"type":"string"}},{"name":"Manna-Event","in":"header","required":true,"schema":{"type":"string","const":"launch.failed"}},{"name":"Manna-Delivery","in":"header","required":true,"description":"evt_…, the same as the body's id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEvent"},{"type":"object","properties":{"event":{"const":"launch.failed"},"data":{"$ref":"#/components/schemas/LaunchFailedData"}}}]},"example":{"id":"evt_90211","event":"launch.failed","created_at":"2026-10-20T09:40:09.000Z","data":{"action_id":"4822","chain":"sol","error":"Not enough SOL for the launch","steps":["Checking balances"]}}}}},"responses":{"200":{"description":"Received (any 2xx)"}}}},"order.filled":{"post":{"operationId":"webhook_order_filled","tags":["Webhooks"],"summary":"An order filled, or a DCA plan bought / finished","description":"POSTed to your endpoint for `order.filled`. Answer 2xx within 8 seconds (a hard deadline); anything else is retried (30s, 2m, 10m, 30m, 2h, 6h), 7 attempts at most. Order events are queued and sent by Manna's background delivery run, not at the moment the order fills. Verify `Manna-Signature` before trusting it.","parameters":[{"name":"Manna-Signature","in":"header","required":true,"description":"t=<unix seconds>,v1=<hex HMAC-SHA256 of `${t}.${raw body}` with the endpoint secret>","schema":{"type":"string"}},{"name":"Manna-Event","in":"header","required":true,"schema":{"type":"string","const":"order.filled"}},{"name":"Manna-Delivery","in":"header","required":true,"description":"evt_…, the same as the body's id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEvent"},{"type":"object","properties":{"event":{"const":"order.filled"},"data":{"$ref":"#/components/schemas/OrderEventData"}}}]},"example":{"id":"evt_90211","event":"order.filled","created_at":"2026-10-20T09:40:09.000Z","data":{"kind":"order_filled","title":"Take profit hit on MDOG","body":"Sold 50% for $45.20","path":"/coin/sol:9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusD1111"}}}}},"responses":{"200":{"description":"Received (any 2xx)"}}}},"order.failed":{"post":{"operationId":"webhook_order_failed","tags":["Webhooks"],"summary":"An order failed, or a DCA plan paused itself","description":"POSTed to your endpoint for `order.failed`. Answer 2xx within 8 seconds (a hard deadline); anything else is retried (30s, 2m, 10m, 30m, 2h, 6h), 7 attempts at most. Order events are queued and sent by Manna's background delivery run, not at the moment the order fills. Verify `Manna-Signature` before trusting it.","parameters":[{"name":"Manna-Signature","in":"header","required":true,"description":"t=<unix seconds>,v1=<hex HMAC-SHA256 of `${t}.${raw body}` with the endpoint secret>","schema":{"type":"string"}},{"name":"Manna-Event","in":"header","required":true,"schema":{"type":"string","const":"order.failed"}},{"name":"Manna-Delivery","in":"header","required":true,"description":"evt_…, the same as the body's id","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEvent"},{"type":"object","properties":{"event":{"const":"order.failed"},"data":{"$ref":"#/components/schemas/OrderEventData"}}}]},"example":{"id":"evt_90211","event":"order.failed","created_at":"2026-10-20T09:40:09.000Z","data":{"kind":"order_failed","title":"Stop loss on MDOG failed","body":"Not enough SOL for fees","path":null}}}}},"responses":{"200":{"description":"Received (any 2xx)"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"sk-manna-…","description":"Authorization: Bearer sk-manna-…"},"apiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key","description":"The same key in an X-API-Key header"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","description":"Stable, machine-readable","enum":["bad_request","validation_error","missing_api_key","invalid_api_key","insufficient_scope","ip_not_allowed","not_found","method_not_allowed","rate_limited","daily_quota_exceeded","capacity_exceeded","idempotency_key_required","idempotency_mismatch","idempotency_in_progress","one_tap_disabled","trade_cap_exceeded","daily_cap_exceeded","unsupported","no_route","trade_failed","launch_failed","upstream_error","conflict","gone","payload_too_large","internal_error","service_unavailable"]},"message":{"type":"string","description":"For humans; may change"},"status":{"type":"integer","description":"The HTTP status, repeated"},"request_id":{"type":"string","description":"Also in the X-Request-Id header. Quote it if you contact us."},"details":{"description":"Extra context: field errors for validation_error, the bucket for rate_limited, the action id for trade_failed…","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ValidationIssue"}},{"type":"object"}]}},"required":["code","message","status","request_id"]}},"required":["error"]},"ValidationIssue":{"type":"object","properties":{"path":{"type":"string","description":"Dotted field path"},"message":{"type":"string"}},"required":["path","message"]},"Coin":{"type":"object","description":"A coin launched on Manna.","properties":{"id":{"type":"string","description":"Manna coin id: \"sol:<mint>\" or \"<evm chain>:0x…\" (lower case)"},"chain":{"type":"string","enum":["sol","hood","base","bsc","ethereum","arbitrum","optimism","polygon","avalanche"]},"address":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"description":{"type":"string"},"image_url":{"type":["string","null"],"format":"uri"},"url":{"type":"string","description":"The coin's page on mannas.fun","format":"uri"},"creator":{"type":"string","description":"Creator wallet"},"quote":{"type":"object","properties":{"address":{"type":"string","description":"Pair token address"},"symbol":{"type":"string","description":"Pair token symbol"},"usd":{"type":["number","null"],"description":"Pair token price in dollars"}},"required":["address","symbol","usd"]},"price":{"type":["number","null"],"description":"Price in the pair token"},"price_usd":{"type":["number","null"]},"market_cap":{"type":["number","null"],"description":"In the pair token"},"market_cap_usd":{"type":["number","null"]},"ath_market_cap":{"type":["number","null"],"description":"All-time-high market cap, in the pair token"},"volume_total":{"type":["number","null"],"description":"All-time volume, in the pair token"},"volume_24h":{"type":["number","null"]},"volume_24h_usd":{"type":["number","null"]},"change_24h_pct":{"type":["number","null"]},"progress_pct":{"type":["number","null"],"description":"Bonding-curve progress toward graduation"},"graduated":{"type":"boolean"},"holders":{"type":["integer","null"]},"trades":{"type":["integer","null"]},"creator_fee_bps":{"type":["integer","null"]},"fee_route":{"type":"object","additionalProperties":{"type":"integer"},"description":"How the creator fee is split, in bps per destination (creator, holders, comeback, flock, burn, jackpot, spread; `flock` is the Hype Crew share)"},"shield_secs":{"type":["integer","null"],"description":"Sniper shield length"},"shield_mode":{"type":"string","nullable":true,"enum":["flat","fade","fast",null],"description":"Sniper shield kind: flat (one fee the whole window), fade (99% falling to the normal fee), fast (99% halving fast, only coins from older EVM launch contracts). Null without a shield"},"shield_flat_bps":{"type":["integer","null"],"description":"Flat shield fee in bps (flat only)"},"curve":{"type":["integer","null"],"description":"0 light, 1 normal, 2 heavy"},"dev_locked":{"type":["boolean","null"]},"links":{"type":"object","properties":{"x":{"type":["string","null"]},"telegram":{"type":["string","null"]},"website":{"type":["string","null"]}},"required":["x","telegram","website"]},"created_at":{"type":["string","null"],"format":"date-time"},"last_trade_at":{"type":["string","null"],"format":"date-time"}},"required":["id","chain","address","name","symbol","description","image_url","url","creator","quote","price","price_usd","market_cap","market_cap_usd","ath_market_cap","volume_total","volume_24h","volume_24h_usd","change_24h_pct","progress_pct","graduated","holders","trades","creator_fee_bps","fee_route","shield_secs","shield_mode","shield_flat_bps","curve","dev_locked","links","created_at","last_trade_at"]},"CoinDetail":{"allOf":[{"$ref":"#/components/schemas/Coin"},{"type":"object","properties":{"pool":{"type":["string","null"],"description":"Pool / curve address"},"launch_tx":{"type":["string","null"]},"battle_id":{"type":["string","null"],"description":"A live battle the coin is in"}},"required":["pool","launch_tx","battle_id"]}]},"CoinTrade":{"type":"object","properties":{"tx":{"type":"string"},"side":{"type":"string","enum":["buy","sell"]},"trader":{"type":"string"},"nickname":{"type":["string","null"],"description":"Null when the trader's profile is private"},"quote_amount":{"type":"number","description":"In the pair token"},"token_amount":{"type":"number"},"price":{"type":"number","description":"In the pair token"},"usd":{"type":["number","null"]},"snipe_tax":{"type":"number","description":"Sniper-shield fee paid, in the pair token"},"ts":{"type":"string","format":"date-time"}},"required":["tx","side","trader","nickname","quote_amount","token_amount","price","usd","snipe_tax","ts"]},"Candle":{"type":"object","properties":{"t":{"type":"integer","description":"Bucket start, unix seconds"},"o":{"type":"number"},"h":{"type":"number"},"l":{"type":"number"},"c":{"type":"number"},"v":{"type":"number","description":"Volume"},"trades":{"type":"integer"}},"required":["t","o","h","l","c","v"]},"CoinCandles":{"type":"object","properties":{"tf":{"type":"integer","description":"Seconds per candle","enum":[60,300,900,3600,14400,86400]},"quote_symbol":{"type":"string","description":"Prices and volume are in this token"},"candles":{"type":"array","items":{"$ref":"#/components/schemas/Candle"}}},"required":["tf","quote_symbol","candles"]},"TokenCandles":{"type":"object","properties":{"pool":{"type":"string"},"range":{"type":"string","enum":["1h","4h","1d","1w","all"]},"currency":{"type":"string","const":"usd"},"candles":{"type":"array","items":{"$ref":"#/components/schemas/Candle"}}},"required":["pool","range","currency","candles"]},"Holder":{"type":"object","properties":{"wallet":{"type":"string"},"nickname":{"type":["string","null"]},"balance":{"type":"number"},"pct":{"type":"number","description":"Percent of the 1B supply"},"is_team":{"type":"boolean"}},"required":["wallet","nickname","balance","pct","is_team"]},"Token":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"address":{"type":"string"},"symbol":{"type":["string","null"]},"name":{"type":["string","null"]},"icon":{"type":["string","null"]},"price_usd":{"type":["number","null"]},"market_cap_usd":{"type":["number","null"]},"liquidity_usd":{"type":["number","null"]},"volume_24h_usd":{"type":["number","null"]},"change_pct":{"type":"object","additionalProperties":{"type":"number"},"description":"Price change by window, e.g. {\"h1\": 2.1, \"h24\": -4.3}"},"txns_24h":{"description":"Buys / sells in the last 24 hours, when known"},"pair":{"type":["string","null"],"description":"Deepest pool address"},"dex":{"type":["string","null"]},"quote_symbol":{"type":["string","null"]},"pair_created_at":{"type":["string","null"],"format":"date-time"},"links":{"type":"array","items":{"type":"object","additionalProperties":true}},"manna_coin_id":{"type":["string","null"],"description":"Set when the token is a Manna coin"},"url":{"type":"string","format":"uri"}},"required":["chain","address","symbol","name","icon","price_usd","market_cap_usd","liquidity_usd","volume_24h_usd","change_pct","txns_24h","pair","dex","quote_symbol","pair_created_at","links","manna_coin_id","url"]},"TrendingToken":{"type":"object","properties":{"id":{"type":"string"},"chain":{"type":"string"},"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"manna":{"type":"boolean","description":"A Manna coin"},"icon":{"type":["string","null"],"format":"uri"},"volume_usd":{"type":"number","description":"Volume traded through Manna in the period"},"trades":{"type":"integer"},"traders":{"type":"integer"},"market_cap_usd":{"type":["number","null"]},"change_24h_pct":{"type":["number","null"]}},"required":["id","chain","address","symbol","name","manna","icon","volume_usd","trades","traders","market_cap_usd","change_24h_pct"]},"Chain":{"type":"object","properties":{"id":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"name":{"type":"string"},"native":{"type":["string","null"]},"kind":{"type":"string","enum":["solana","evm"]},"chain_id":{"type":["integer","null"]},"trade":{"type":"boolean"},"launch":{"type":"boolean","description":"Launches are live on this chain"},"launch_fee_usd":{"type":"number"},"trade_fee_bps":{"type":"integer","const":100}},"required":["id","name","native","kind","chain_id","trade","launch","launch_fee_usd","trade_fee_bps"]},"LaunchOptions":{"type":"object","properties":{"chains":{"type":"array","items":{"type":"object","properties":{"chain":{"type":"string","enum":["sol","hood","base","bsc","ethereum","arbitrum","optimism","polygon","avalanche"]},"live":{"type":"boolean"},"launch_fee_usd":{"type":"number"},"ticker_max_bytes":{"type":"integer"},"pairs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Pair token id: pass as `pair`"},"symbol":{"type":"string"},"name":{"type":"string"},"decimals":{"type":"integer"},"category":{"type":"string"},"start_market_cap":{"type":"number","description":"In the pair token"}},"required":["id","symbol","name","decimals","category","start_market_cap"]}},"vanity":{"type":"string"}},"required":["chain","live","launch_fee_usd","ticker_max_bytes","pairs","vanity"]}},"presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"route":{"type":"object","additionalProperties":{"type":"integer"}}},"required":["id","label","description","route"]}},"route_keys":{"type":"array","items":{"type":"string"}},"curves":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"label":{"type":"string"},"graduates_at_multiple":{"type":"number"},"description":{"type":"string"}},"required":["id","label","graduates_at_multiple","description"]}},"creator_fee_bps":{"type":"object","properties":{"min":{"type":"integer"},"max":{"type":"integer"},"default":{"type":"integer"}},"required":["min","max","default"]},"shield":{"type":"object","properties":{"secs":{"type":"object","properties":{"off":{"type":"integer"},"min":{"type":"integer"},"max":{"type":"integer"},"default":{"type":"integer"}},"required":["off","min","max","default"]},"solana_flat_bps":{"type":"array","items":{"type":"integer"}},"solana_flat_default":{"type":"integer"}},"required":["secs","solana_flat_bps","solana_flat_default"]},"defaults":{"type":"object","properties":{"preset":{"type":"string"},"curve":{"type":"integer"},"dev_buy":{"type":"number"}},"required":["preset","curve","dev_buy"]}},"required":["chains","presets","route_keys","curves","creator_fee_bps","shield","defaults"]},"QuoteView":{"type":"object","description":"A priced trade.","properties":{"chain":{"type":"string","enum":["sol","hood","base","ethereum","bsc","arbitrum","polygon","optimism","avalanche"]},"token":{"type":"string","description":"Token address"},"side":{"type":"string","enum":["buy","sell"]},"venue":{"type":"string","description":"Where the trade goes: manna-curve, uniswap-v4, mannaswap, kyberswap, or a Solana venue from Manna's router"},"in":{"type":"object","properties":{"symbol":{"type":"string","description":"The native coin (SOL, ETH, BNB…) on a buy, the literal \"token\" on a sell"},"amount":{"type":"number","description":"Human units"},"raw":{"type":"string","description":"Smallest units (lamports, wei, token base units)"},"decimals":{"type":"integer"}},"required":["symbol","amount","raw","decimals"]},"out":{"type":"object","properties":{"symbol":{"type":"string","description":"The literal \"token\" on a buy, the native coin on a sell"},"amount":{"type":"number","description":"Expected amount out, human units"},"raw":{"type":"string"},"decimals":{"type":"integer"},"min_amount":{"type":["number","null"],"description":"The least you get after slippage"},"min_raw":{"type":["string","null"]}},"required":["symbol","amount","raw","decimals","min_amount","min_raw"]},"usd":{"type":["object","null"],"description":"Dollar value of the native side (null when no price)","properties":{"in":{"type":["number","null"]},"out":{"type":["number","null"]}},"required":["in","out"]},"price_impact_pct":{"type":["number","null"]},"slippage_bps":{"type":["integer","null"]},"fee":{"type":"object","properties":{"manna_bps":{"type":"integer","description":"Manna's fee: always 100 (1%)"},"creator_bps":{"type":["integer","null"],"description":"A Manna coin's creator fee, when it applies"},"included_in_price":{"type":"boolean","description":"True when the fee is part of the pool's own fee (Manna coins on their curve or pool)"},"asset":{"type":"string","description":"The coin the fee is paid in"},"amount":{"type":["number","null"],"description":"Fee amount in `asset`, when it is a separate amount"},"usd":{"type":["number","null"]},"note":{"type":"string"}},"required":["manna_bps","included_in_price","asset","amount","usd","note"]}},"required":["chain","token","side","venue","in","out","usd","price_impact_pct","slippage_bps","fee"]},"Quote":{"allOf":[{"$ref":"#/components/schemas/QuoteView"},{"type":"object","properties":{"expires_in_secs":{"type":"integer","description":"Quotes move with the market; re-quote after this","const":15}},"required":["expires_in_secs"]}]},"SolanaTransaction":{"type":"object","description":"An unsigned Solana transaction for the wallet to sign.","properties":{"chain":{"type":"string","const":"sol"},"encoding":{"type":"string","const":"base64"},"transaction":{"type":"string","description":"A serialized v0 VersionedTransaction, base64. Sign it unchanged (it may already carry other required signatures)."},"description":{"type":"string","description":"What this step does, in words"},"fee_covered":{"type":"boolean","description":"A gas swap paid in USDC: Manna's keeper fronts its network fee (and has already signed as fee payer), and the same transaction pays it back from the wallet's USDC; submit it with signed_transactions"}},"required":["chain","encoding","transaction","description"]},"EvmTransaction":{"type":"object","description":"An unsigned EVM transaction. Sign and send exactly these fields (your wallet picks gas and nonce).","properties":{"chain":{"type":"string","description":"Chain key, e.g. base"},"chain_id":{"type":"integer","description":"EVM chain id"},"from":{"type":"string","description":"The wallet that must sign and send it"},"to":{"type":"string","description":"Contract or recipient"},"data":{"type":"string","description":"Calldata, 0x…"},"value":{"type":"string","description":"Native coin to send, in wei (a decimal string)"},"description":{"type":"string","description":"What this step does, in words"}},"required":["chain","chain_id","from","to","data","value","description"]},"UnsignedTransaction":{"oneOf":[{"$ref":"#/components/schemas/SolanaTransaction"},{"$ref":"#/components/schemas/EvmTransaction"}]},"TradeBuild":{"allOf":[{"$ref":"#/components/schemas/QuoteView"},{"type":"object","properties":{"build_id":{"type":"string","description":"Pass to POST /trade/submit"},"transactions":{"type":"array","items":{"$ref":"#/components/schemas/UnsignedTransaction"},"description":"Sign and send in order (an EVM sell may start with an approval; a Solana build for a wallet with USDC and no SOL starts with a gas swap paid in USDC, `fee_covered: true`)"},"network_fee_covered":{"type":"object","description":"Present when the first transaction is a gas swap paid in USDC: Manna's keeper fronts its fee and has already signed as fee payer, and the wallet pays it back in USDC in the same transaction, so submit with signed_transactions","properties":{"usdc_in":{"type":"number","description":"USDC the gas swap spends"},"sol":{"type":"number","description":"SOL it delivers to the wallet"},"fee_usd":{"type":"number","description":"USDC the wallet pays Manna back for the network fee its keeper fronted"}},"required":["usdc_in","sol","fee_usd"]},"expires_in_secs":{"type":"integer","description":"60 on Solana (blockhash lifetime), 3600 on EVM chains"},"next":{"type":"string"}},"required":["build_id","transactions","expires_in_secs","next"]}]},"TradeSubmitResult":{"type":"object","description":"The on-chain result. `recorded: false` (with `record_error` and `retry`) means the trade landed but Manna couldn't credit it yet: submit the same build_id again, which only retries the crediting and never broadcasts again. A build that was already credited answers its first result again, or `{already: true}`.","properties":{"signatures":{"type":"array","items":{"type":"string"}},"urls":{"type":"array","items":{"type":"string","format":"uri"}},"recorded":{"type":"boolean"},"details":{"description":"What was recorded (venue specific)"},"record_error":{"type":"string"},"retry":{"type":"string","description":"What to do to retry the crediting"},"already":{"type":"boolean"}}},"TradeExecuteResult":{"type":"object","properties":{"action_id":{"type":"string","description":"See GET /account/actions/{id}"},"status":{"type":"string","const":"done"},"chain":{"type":"string"},"token":{"type":"string"},"side":{"type":"string","enum":["buy","sell"]},"tx":{"type":"string","description":"Transaction signature / hash"},"url":{"type":"string","description":"Explorer link"},"venue":{"type":["string","null"]},"spent":{"type":["number","null"]},"spent_symbol":{"type":["string","null"]},"received":{"type":["number","null"]},"received_symbol":{"type":"string"},"sold_usd":{"type":["number","null"]},"fee_bps":{"type":["integer","null"]},"price_impact_pct":{"type":["number","null"]}},"required":["action_id","status","chain","token","side","tx","url","venue","spent","spent_symbol","received","received_symbol","sold_usd","fee_bps","price_impact_pct"]},"LaunchBuild":{"type":"object","properties":{"build_id":{"type":"string"},"chain":{"type":"string","enum":["sol","hood","base","bsc","ethereum","arbitrum","optimism","polygon","avalanche"]},"address":{"type":"string","description":"Solana: the new mint (known up front)"},"coin_id":{"type":["string","null"],"description":"Solana: the coin id. EVM chains: null until submitted (the address comes from the receipt)"},"transactions":{"type":"array","items":{"$ref":"#/components/schemas/UnsignedTransaction"}},"launch_fee_lamports":{"type":"integer","description":"Solana: the launch fee, already inside the transactions"},"metadata_id":{"type":"string","description":"EVM chains: the coin's metadata id"},"expires_in_secs":{"type":"integer","description":"60 on Solana, 3600 on EVM chains"},"next":{"type":"string"}},"required":["build_id","chain","coin_id","transactions","expires_in_secs","next"]},"LaunchSubmitResult":{"type":"object","properties":{"coin_id":{"type":"string"},"address":{"type":"string"},"signatures":{"type":"array","items":{"type":"string"}},"url":{"type":"string","format":"uri"},"launch_fee_paid":{"type":"boolean","description":"EVM chains: whether the launch-fee transfer was found and verified on-chain"}},"required":["coin_id","address","signatures","url"]},"LaunchExecuteResult":{"type":"object","properties":{"action_id":{"type":"string"},"status":{"type":"string","const":"done"},"chain":{"type":"string"},"coin_id":{"type":"string"},"address":{"type":"string","description":"The new coin's address"},"tx":{"type":"string"},"note":{"type":["string","null"]},"url":{"type":"string","format":"uri"},"steps":{"type":"array","items":{"type":"string"},"description":"Progress messages, in order"}},"required":["action_id","status","chain","coin_id","address","tx","note","url","steps"]},"Me":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":["string","null"]},"scopes":{"type":"array","items":{"type":"string","enum":["read","trade","launch","ai"]}},"max_trade_usd":{"type":["number","null"],"description":"Per-trade cap (keys with trade or launch)"},"daily_usd":{"type":["number","null"],"description":"Rolling 24-hour cap"},"spent_today_usd":{"type":"number"},"left_today_usd":{"type":["number","null"]},"allowed_ips":{"type":["array","null"],"items":{"type":"string"}}},"required":["id","name","scopes","max_trade_usd","daily_usd","spent_today_usd","left_today_usd","allowed_ips"]},"account":{"type":"object","properties":{"wallet":{"type":"string","description":"The profile's primary wallet"},"wallets":{"type":["array","null"],"items":{"type":"string"},"description":"Every wallet of the profile (null unless the key has the read scope)"},"nickname":{"type":["string","null"]},"x_handle":{"type":["string","null"]},"one_tap":{"type":["object","null"],"description":"Null unless the key has trade or launch","properties":{"ready":{"type":"boolean","description":"Account mode can trade"},"sol_wallet":{"type":["string","null"]},"evm_wallet":{"type":["string","null"]}},"required":["ready","sol_wallet","evm_wallet"]}},"required":["wallet","wallets","nickname","x_handle","one_tap"]}},"required":["key","account"]},"Position":{"type":"object","properties":{"id":{"type":"string","description":"Coin / token id, chain:address"},"chain":{"type":"string"},"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"manna":{"type":"boolean","description":"A Manna coin"},"open":{"type":"boolean"},"balance":{"type":"number"},"value_usd":{"type":"number"},"invested_usd":{"type":"number"},"pnl_usd":{"type":"number"},"pnl_pct":{"type":"number"},"realized_usd":{"type":"number"},"last_trade_at":{"type":["string","null"]}},"required":["id","chain","address","symbol","name","manna","open","balance","value_usd","invested_usd","pnl_usd","pnl_pct","realized_usd","last_trade_at"]},"Positions":{"type":"object","properties":{"positions":{"type":"array","items":{"$ref":"#/components/schemas/Position"},"description":"Biggest first"},"totals":{"type":"object","properties":{"value_usd":{"type":"number","description":"Open positions"},"pnl_usd":{"type":"number"}},"required":["value_usd","pnl_usd"]},"partial":{"type":"boolean","description":"True when non-Manna tokens couldn't be priced right now (only Manna coins are listed)"}},"required":["positions","totals","partial"]},"Holding":{"type":"object","properties":{"id":{"type":"string"},"chain":{"type":"string"},"address":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"icon":{"type":["string","null"]},"amount":{"type":"number"},"priceUsd":{"type":"number"},"valueUsd":{"type":"number"},"change24h":{"type":["number","null"]},"cash":{"type":"boolean","description":"Native coin or stablecoin (what account-mode buys spend)"}},"required":["id","chain","address","symbol","name","icon","amount","priceUsd","valueUsd","change24h","cash"]},"Portfolio":{"type":"object","description":"Net worth. This object is shared with mannas.fun's portfolio screen, so its fields are camelCase.","properties":{"totalUsd":{"type":"number"},"change24hUsd":{"type":"number"},"change24hPct":{"type":["number","null"]},"accountUsd":{"type":"number","description":"The profile's own wallets"},"watchUsd":{"type":"number","description":"Watch-only wallets"},"wallets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["manna","watch"]},"family":{"type":"string","enum":["sol","evm"]},"address":{"type":"string"},"label":{"type":"string"},"valueUsd":{"type":"number"},"change24hUsd":{"type":["number","null"]},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/Holding"}},"partial":{"type":"boolean"},"error":{"type":"string"}},"required":["id","kind","family","address","label","valueUsd","change24hUsd","tokens","partial"]}},"hidden":{"type":"array","items":{"type":"string"},"description":"Token ids hidden from the portfolio"}},"required":["totalUsd","change24hUsd","change24hPct","accountUsd","watchUsd","wallets","hidden"]},"Balances":{"type":"object","properties":{"total_usd":{"type":"number"},"wallets":{"type":"object","properties":{"sol":{"type":["string","null"]},"evm":{"type":["string","null"]}},"required":["sol","evm"]},"lines":{"type":"array","items":{"type":"object","properties":{"chain":{"type":"string"},"symbol":{"type":"string"},"asset":{"type":"string","description":"Token address, or the native coin"},"native":{"type":"boolean"},"amount":{"type":"number"},"usd":{"type":"number"}},"required":["chain","symbol","asset","native","amount","usd"]}}},"required":["total_usd","wallets","lines"]},"Action":{"type":"object","description":"Something a key did with money (an account-mode trade or launch).","properties":{"id":{"type":"string"},"key_id":{"type":"string"},"kind":{"type":"string","enum":["buy","sell","launch"]},"chain":{"type":"string"},"token":{"type":["string","null"]},"usd":{"type":["number","null"],"description":"Dollars reserved against the key's daily cap"},"status":{"type":"string","enum":["pending","done","failed"]},"tx":{"type":["string","null"]},"error":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"done_at":{"type":["string","null"],"format":"date-time"}},"required":["id","key_id","kind","chain","token","usd","status","tx","error","created_at","done_at"]},"ActionDetail":{"allOf":[{"$ref":"#/components/schemas/Action"},{"type":"object","properties":{"result":{"description":"The full result (a TradeExecuteResult or LaunchExecuteResult) once done; null otherwise"}},"required":["result"]}]},"Order":{"type":"object","properties":{"id":{"type":"string"},"chain":{"type":"string"},"token":{"type":"string"},"symbol":{"type":"string"},"side":{"type":"string","enum":["buy","sell"]},"kind":{"type":"string","enum":["limit","tp","sl","limit_sell","trail","dca"]},"trigger_mcap":{"type":["number","null"]},"trail_pct":{"type":["number","null"]},"peak_mcap":{"type":["number","null"]},"amount_usd":{"type":["number","null"]},"sell_pct":{"type":["number","null"]},"sell_initial":{"type":"boolean"},"status":{"type":"string","description":"open, running or paused while live; done, failed or cancelled after"},"tx":{"type":["string","null"]},"error":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"done_at":{"type":["string","null"],"format":"date-time"},"interval_secs":{"type":["integer","null"]},"runs_total":{"type":["integer","null"]},"runs_done":{"type":"integer"},"fails":{"type":"integer"},"next_at":{"type":["string","null"],"format":"date-time"},"entry_mcap":{"type":["number","null"]},"source":{"type":"string","enum":["web","telegram"]}},"required":["id","chain","token","symbol","side","kind","trigger_mcap","trail_pct","peak_mcap","amount_usd","sell_pct","sell_initial","status","tx","error","created_at","done_at","interval_secs","runs_total","runs_done","fails","next_at","entry_mcap","source"]},"OrderCreated":{"allOf":[{"$ref":"#/components/schemas/Order"},{"type":"object","properties":{"committed_usd":{"type":"number","description":"Taken from the key's daily cap now: amount_usd for a limit buy, amount_usd × runs for a DCA plan, 0 for sells. A cancel gives back the unspent part."}},"required":["committed_usd"]}]},"Orders":{"type":"object","properties":{"orders":{"type":"array","items":{"$ref":"#/components/schemas/Order"}},"counts":{"type":"object","properties":{"orders":{"type":"integer","description":"Open orders"},"dca":{"type":"integer","description":"Live DCA plans"}},"required":["orders","dca"]}},"required":["orders","counts"]},"Alert":{"type":"object","description":"A price alert (it notifies on mannas.fun and in the Telegram bot).","properties":{"id":{"type":"string"},"chain":{"type":"string"},"token":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":["string","null"]},"metric":{"type":"string","enum":["price","mcap","move"]},"dir":{"type":"string","enum":["above","below","any"]},"target":{"type":"number"},"base":{"type":["number","null"],"description":"move alerts: the price the move is measured from"},"repeat":{"type":"boolean"},"active":{"type":"boolean"},"fired":{"type":"integer","description":"Times it has fired"},"last_fired_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"label":{"type":"string","description":"The rule in words"}},"required":["id","chain","token","symbol","icon","metric","dir","target","base","repeat","active","fired","last_fired_at","created_at","label"]},"WatchItem":{"type":"object","properties":{"id":{"type":"string","description":"chain:address"},"added_at":{"type":"string","format":"date-time"}},"required":["id","added_at"]},"Webhook":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["trade.completed","trade.failed","launch.completed","launch.failed","order.filled","order.failed"]}},"active":{"type":"boolean","description":"Switched off after 50 failed deliveries in a row"},"fails":{"type":"integer"},"created_at":{"type":"string","format":"date-time"}},"required":["id","url","events","active","fails","created_at"]},"WebhookCreated":{"allOf":[{"$ref":"#/components/schemas/Webhook"},{"type":"object","properties":{"secret":{"type":"string","description":"whsec_…: verifies Manna-Signature. Shown once."}},"required":["secret"]}]},"WebhookEvent":{"type":"object","properties":{"id":{"type":"string","description":"evt_…: the same id in the Manna-Delivery header. Deliveries can repeat: de-duplicate on it."},"event":{"type":"string","enum":["trade.completed","trade.failed","launch.completed","launch.failed","order.filled","order.failed"]},"created_at":{"type":"string","format":"date-time"},"data":{"type":"object","description":"Depends on the event"}},"required":["id","event","created_at","data"]},"TradeFailedData":{"type":"object","properties":{"action_id":{"type":"string"},"chain":{"type":"string"},"token":{"type":"string"},"side":{"type":"string","enum":["buy","sell"]},"error":{"type":"string"},"maybe_sent":{"type":"boolean","description":"The transaction may still land: check before retrying"}},"required":["action_id","chain","token","side","error","maybe_sent"]},"LaunchCompletedData":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/LaunchSubmitResult"},{"type":"object","properties":{"mode":{"type":"string","const":"build"}},"required":["mode"]}]},{"allOf":[{"$ref":"#/components/schemas/LaunchExecuteResult"},{"type":"object","properties":{"mode":{"type":"string","const":"account"}},"required":["mode"]}]}]},"LaunchFailedData":{"type":"object","properties":{"action_id":{"type":"string"},"chain":{"type":"string"},"error":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}}},"required":["action_id","chain","error","steps"]},"OrderEventData":{"type":"object","properties":{"kind":{"type":"string","description":"order_filled, dca_buy, dca_done (order.filled); order_failed, dca_paused (order.failed)"},"title":{"type":"string"},"body":{"type":["string","null"]},"path":{"type":["string","null"],"description":"A path on https://mannas.fun"}},"required":["kind","title","body","path"]},"TokenTrader":{"type":"object","description":"A Manna trader's position in the token (same fields as the token page's traders tab).","properties":{},"additionalProperties":true},"TokenTrade":{"type":"object","description":"A buy or sell of the token made through Manna (same fields as the token page's trades tab).","properties":{},"additionalProperties":true},"LeaderboardRow":{"type":"object","description":"One row of the board (same fields as mannas.fun/leaderboard; private profiles are hidden).","properties":{},"additionalProperties":true},"Post":{"type":"object","description":"A feed post or thesis call (same fields as the mannas.fun feed, without viewer-specific flags).","properties":{"id":{"type":"integer"}},"additionalProperties":true},"Profile":{"type":"object","description":"A trader's public profile, PnL and positions (same as mannas.fun/u/<wallet>; private profiles stay private).","properties":{"social":{"type":["object","null"],"properties":{"followers":{"type":"integer"},"following":{"type":"integer"},"posts":{"type":"integer"}},"required":["followers","following","posts"]}},"additionalProperties":true},"FomoTrader":{"type":"object","description":"A trader on FOMO (fomo.family) as mannas.fun/fomo shows them: handle (when linked), wallets, and stats Manna computes from the wallet's own on-chain trades. Not affiliated with FOMO.","properties":{"handle":{"type":["string","null"],"description":"FOMO handle, lowercase, when linked on Manna"},"source":{"type":["string","null"],"description":"partner: from a licensed FOMO data feed; community: linked by a Manna user, not confirmed by FOMO","enum":["partner","community"]},"fomo_url":{"type":["string","null"],"description":"Their profile on fomo.family"}},"additionalProperties":true},"Battle":{"type":"object","description":"A coin battle (same fields as mannas.fun/battles).","properties":{},"additionalProperties":true},"Stats":{"type":"object","description":"Platform totals and recent payouts (same as mannas.fun's stats).","properties":{},"additionalProperties":true},"Live":{"type":"object","properties":{"trades":{"type":"array","items":{"type":"object","properties":{"tx":{"type":"string"},"trader":{"type":"string"},"nickname":{"type":["string","null"]},"quote_amount":{"type":"number"},"ts":{"type":"string","format":"date-time"},"symbol":{"type":"string"},"coin_id":{"type":"string"},"chain":{"type":"string"},"quote_symbol":{"type":"string"},"side":{"type":"string","enum":["buy","sell"]}},"required":["tx","trader","nickname","quote_amount","ts","symbol","coin_id","chain","quote_symbol","side"]},"description":"The latest 50 trades of Manna coins"},"launches":{"type":"array","items":{"type":"object","properties":{"coin_id":{"type":"string"},"chain":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"creator":{"type":"string"},"nickname":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"}},"required":["coin_id","chain","symbol","name","creator","nickname","created_at"]},"description":"The latest 20 launches"}},"required":["trades","launches"]},"AiModel":{"type":"object","properties":{"id":{"type":"string","description":"e.g. anthropic/claude-sonnet-4.5"},"object":{"type":"string","const":"model"},"owned_by":{"type":"string"},"credit":{"type":"string","description":"The credit family that pays: claude, gpt, gemini, grok"}},"required":["id","object","owned_by","credit"]},"AiError":{"type":"object","description":"OpenAI-style error (/chat/completions, /balance)","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"}},"required":["message"]}},"required":["error"]},"AnthropicError":{"type":"object","description":"Anthropic-style error (/messages)","properties":{"type":{"type":"string","const":"error"},"error":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"}},"required":["type","message"]}},"required":["type","error"]}},"responses":{"BadRequest":{"description":"Bad request: `validation_error` (details lists each field), `bad_request`, or `idempotency_key_required`.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"validation_error":{"summary":"validation_error","value":{"error":{"code":"validation_error","message":"Some fields are missing or invalid","status":400,"request_id":"req_k2Xo1fN8bq0aYw","details":[{"path":"side","message":"Invalid option: expected one of \"buy\"|\"sell\""}]}}},"bad_request":{"summary":"bad_request","value":{"error":{"code":"bad_request","message":"A buy needs amount (native coin) or amount_usd, not both","status":400,"request_id":"req_k2Xo1fN8bq0aYw"}}},"idempotency_key_required":{"summary":"idempotency_key_required","value":{"error":{"code":"idempotency_key_required","message":"Send an Idempotency-Key header (a UUID works) so a retry can never trade twice.","status":400,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"Unauthorized":{"description":"`missing_api_key` (this endpoint needs a key) or `invalid_api_key` (malformed, unknown or revoked). A bad key is never treated as anonymous.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"missing_api_key":{"summary":"missing_api_key","value":{"error":{"code":"missing_api_key","message":"This endpoint needs an API key: Authorization: Bearer sk-manna-…  Make one at mannas.fun/developers.","status":401,"request_id":"req_k2Xo1fN8bq0aYw"}}},"invalid_api_key":{"summary":"invalid_api_key","value":{"error":{"code":"invalid_api_key","message":"That API key isn't valid or was revoked.","status":401,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"Forbidden":{"description":"`insufficient_scope`, `ip_not_allowed` (the key's IP allowlist), `trade_cap_exceeded` (over the key's per-trade cap) or `daily_cap_exceeded` (over its rolling 24-hour cap).","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"insufficient_scope":{"summary":"insufficient_scope","value":{"error":{"code":"insufficient_scope","message":"This key doesn't have the \"trade\" scope.","status":403,"request_id":"req_k2Xo1fN8bq0aYw","details":{"required":"trade","granted":["read"]}}}},"ip_not_allowed":{"summary":"ip_not_allowed","value":{"error":{"code":"ip_not_allowed","message":"This key can't be used from this IP address. Its allowlist is set at mannas.fun/developers.","status":403,"request_id":"req_k2Xo1fN8bq0aYw"}}},"trade_cap_exceeded":{"summary":"trade_cap_exceeded","value":{"error":{"code":"trade_cap_exceeded","message":"This key trades at most $100 at a time. Change its caps at mannas.fun/developers.","status":403,"request_id":"req_k2Xo1fN8bq0aYw","details":{"max_trade_usd":100}}}},"daily_cap_exceeded":{"summary":"daily_cap_exceeded","value":{"error":{"code":"daily_cap_exceeded","message":"This key reached its daily trading cap. It resets 24 hours after the first trade of the window, or raise it at mannas.fun/developers.","status":403,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"NotFound":{"description":"`not_found`","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"not_found":{"summary":"not_found","value":{"error":{"code":"not_found","message":"No Manna coin with that id","status":404,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"Conflict":{"description":"`one_tap_disabled` (account mode needs one-tap trading switched on at mannas.fun), `idempotency_in_progress` (the first request with this Idempotency-Key is still running) or `conflict`.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"one_tap_disabled":{"summary":"one_tap_disabled","value":{"error":{"code":"one_tap_disabled","message":"One-tap trading isn't switched on for this account. Switch it on at mannas.fun (Me, One-tap trading), then try again.","status":409,"request_id":"req_k2Xo1fN8bq0aYw"}}},"idempotency_in_progress":{"summary":"idempotency_in_progress","value":{"error":{"code":"idempotency_in_progress","message":"A request with this Idempotency-Key is still running. Check /v1/account/actions before trying again.","status":409,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"Gone":{"description":"`gone`: the build expired. Build again.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"gone":{"summary":"gone","value":{"error":{"code":"gone","message":"This build expired: build again","status":410,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"PayloadTooLarge":{"description":"`payload_too_large`: the body (or the uploaded image) is too large.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"payload_too_large":{"summary":"payload_too_large","value":{"error":{"code":"payload_too_large","message":"Body too large","status":413,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"Unprocessable":{"description":"Understood but can't be done: `no_route`, `unsupported`, `trade_failed`, `launch_failed` or `idempotency_mismatch`. A `trade_failed` carries `details.maybe_sent`: when true the transaction may still land.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"no_route":{"summary":"no_route","value":{"error":{"code":"no_route","message":"No route for this token on Robinhood right now","status":422,"request_id":"req_k2Xo1fN8bq0aYw"}}},"unsupported":{"summary":"unsupported","value":{"error":{"code":"unsupported","message":"Coins paired with another token trade through account mode (/v1/trade/execute) or mannas.fun for now","status":422,"request_id":"req_k2Xo1fN8bq0aYw"}}},"trade_failed":{"summary":"trade_failed","value":{"error":{"code":"trade_failed","message":"Slippage exceeded: the price moved. Try again or raise slippage_bps.","status":422,"request_id":"req_k2Xo1fN8bq0aYw","details":{"action_id":"4821","maybe_sent":false}}}},"launch_failed":{"summary":"launch_failed","value":{"error":{"code":"launch_failed","message":"Not enough SOL for the launch","status":422,"request_id":"req_k2Xo1fN8bq0aYw","details":{"action_id":"4822","steps":["Checking balances"]}}}},"idempotency_mismatch":{"summary":"idempotency_mismatch","value":{"error":{"code":"idempotency_mismatch","message":"This Idempotency-Key was already used with a different request. Use a new key for a new request.","status":422,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"TooManyRequests":{"description":"`rate_limited`: wait `Retry-After` seconds. The X-RateLimit-* headers describe the window that blocked you. The account-wide launch-build limit (30 an hour) answers 429 without these headers: try again later. `daily_quota_exceeded`: today's credits are used up (X-Quota-* headers; `Retry-After` runs to 00:00 UTC). `capacity_exceeded`: on an exceptionally busy day, calls without a key and then free-tier reads and quotes are paused (`Retry-After: 300`); trades and launches keep working.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"rate_limited":{"summary":"rate_limited","value":{"error":{"code":"rate_limited","message":"Too many requests. Try again in 12s.","status":429,"request_id":"req_k2Xo1fN8bq0aYw","details":{"bucket":"read"}}}},"daily_quota_exceeded":{"summary":"daily_quota_exceeded","value":{"error":{"code":"daily_quota_exceeded","message":"This account used its 20,000 credits for today (this call costs 5). The quota resets at 00:00 UTC.","status":429,"request_id":"req_k2Xo1fN8bq0aYw","details":{"limit":20000,"used":19998,"cost":5,"reset":1792540800}}}},"capacity_exceeded":{"summary":"capacity_exceeded","value":{"error":{"code":"capacity_exceeded","message":"Manna's API is very busy today, so calls without a key are paused.","status":429,"request_id":"req_k2Xo1fN8bq0aYw","details":{"caller":"anon"}}}}}}}},"InternalError":{"description":"`internal_error`: quote the request id if you contact us.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"internal_error":{"summary":"internal_error","value":{"error":{"code":"internal_error","message":"Something went wrong on our side. Quote the request id if you contact us.","status":500,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"BadGateway":{"description":"`upstream_error`: a data source behind this endpoint failed. Retry shortly.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"upstream_error":{"summary":"upstream_error","value":{"error":{"code":"upstream_error","message":"Request failed","status":502,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}},"ServiceUnavailable":{"description":"`service_unavailable`: a dependency is busy or not configured (no price right now, a chain not live yet, the rate limiter briefly down for money-moving calls). Retry shortly.","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"service_unavailable":{"summary":"service_unavailable","value":{"error":{"code":"service_unavailable","message":"Try again in a moment","status":503,"request_id":"req_k2Xo1fN8bq0aYw"}}}}}}}},"headers":{"X-Request-Id":{"description":"This request's id (req_…). Also in every error body.","schema":{"type":"string"}},"X-RateLimit-Limit":{"description":"Requests allowed in the current window (the longest window of the bucket, or the one that blocked you)","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests left in the bucket's main (longest) window. The burst window can still answer 429 first; Retry-After then says when to try again.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"When that window resets, unix seconds","schema":{"type":"integer"}},"X-Quota-Limit":{"description":"Today's credits: the account's daily quota (all its keys share it), or the IP's without a key","schema":{"type":"integer"}},"X-Quota-Remaining":{"description":"Credits left today","schema":{"type":"integer"}},"X-Quota-Reset":{"description":"When the quota resets (the next 00:00 UTC), unix seconds","schema":{"type":"integer"}},"X-Quota-Cost":{"description":"Credits this call cost","schema":{"type":"integer"}},"X-Cache":{"description":"HIT when a public read or quote came from the shared cache (10-15 seconds for reads, 4 for quotes); it still costs its credits","schema":{"type":"string","enum":["HIT","MISS"]}},"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer"}},"Idempotent-Replayed":{"description":"Present (true) when this is the stored answer of an earlier request with the same Idempotency-Key","schema":{"type":"string","enum":["true"]}}}}}