Mooning API
Discover public Solana launches and build wallet-signed creation and trading flows with the same checks used by Mooning.
https://mooning.meme/api/public/v1No API key is needed. Only publicly listed Mainnet launches are returned.
Sign a one-time message to authenticate. Transactions are signed and submitted by the user's wallet.
A launch or trade appears after its signature is confirmed and checked against the Mooning contract.
Try the API
Read public data. No wallet connection or API key required.
curl 'https://mooning.meme/api/public/v1/tokens?pageSize=5'Run a request to see the live JSON response.Read data
Responses use {"data": ...}. Listings are paginated. The market fields are saved snapshots and can lag activity outside Mooning.
| Method | Path | What it does |
|---|---|---|
| GET | /tokens | Public coins. Search with q; filter with status=curve|near|graduated, creator, sort=newest|progress, page and pageSize (max 50). |
| GET | /tokens/{id} | Public coin by Mooning ID or mint address. |
| GET | /tokens/{id}/trades | Confirmed trades recorded by Mooning. limit up to 100; use nextBefore as the next page's before cursor. |
| GET | /pairs | Quote assets supported by the current launch contract. |
| GET | /stats | Public coin counts and current curve target. |
Create and trade
Authenticate with a Solana wallet, upload a logo, create a draft, prepare the launch transaction, sign and send it on Mainnet, then confirm the signature. Trading follows the same prepare, sign, send and confirm sequence.
- POST
/auth/challengewith{"wallet":"YOUR_SOLANA_ADDRESS"}. - Sign the returned
data.messagebytes with the wallet. POST/auth/verifywithidand a base58 signature. - Send the returned token in
Authorization: Bearer YOUR_TOKEN. Upload the logo using multipart form data. - POST
/launcheswithname,tickerandimage(the upload ID).descriptionis optional. This creates a draft only. Supplysettingsto select a liquidity policy and pool; omitted settings use the 85 SOL Burn & Earn plan. - POST
/launches/{id}/preparewith{}. Decode the returned base64transaction, review and sign it with the creator wallet, submit it to Solana, wait for confirmation, then POST/launches/{id}/confirmwith its signature. - For trading, GET
/launches/{id}/quote?side=buy&amount=0.01, then POST/launches/{id}/trades/preparewith{"side":"buy","amount":"0.01","slippageBps":100,"minimumRaw":"FROM_QUOTE"}. Sign, submit, and confirm as above.
The creator or trader pays Solana network costs. Never send seed phrases or private keys to this API. The prepared transaction must be reviewed before signing. A prepare request can be unavailable when a contract or service is not configured for the chosen settings.
| Method | Path | What it does |
|---|---|---|
| POST | /auth/challenge | Request a one-time message for a Solana wallet. |
| POST | /auth/verify | Verify the wallet signature; receive a 24-hour bearer token. |
| POST | /media | Authorize direct media upload with JSON action=authorize, kind, mime and size. POST the file to the returned Pinata signedUrl, then register it with action=complete, ticket and fileId. Returns an image ID. |
| POST | /launches | Create a public draft with name, ticker, image ID, and optional description and settings. |
| GET | /launches/{id} | Read a draft or launch owned by the signed-in wallet. |
| POST | /launches/{id}/prepare | Prepare the launch transaction for the creator to sign and submit. |
| GET | /launches/{id}/quote | Get a live curve trade estimate using side=buy|sell, amount and optional slippageBps. |
| POST | /launches/{id}/trades/prepare | Prepare a buy or sell transaction for the wallet to sign and submit. |
| POST | /launches/{id}/confirm | After network confirmation, send {signature} to verify the launch or trade and update Mooning. |
Limits and coverage
Public reads: 1200 requests/minute per client IP. Live quotes: 600/minute per client IP. Trade preparation and confirmation: 300/minute each per wallet. Draft creation and launch preparation: 30/minute each per wallet. Logo uploads: 60/minute per wallet. Sign-in: 60/minute per IP and 30 challenges/minute per wallet. No daily request quota. Each limit has its own counter. A 429 response includes Retry-After; wait before retrying.
The challenge expires in 5 minutes. Bearer tokens expire after 24 hours. Store them server-side when possible; never put them in URLs.
The trades endpoint contains transactions confirmed through Mooning. It is not a complete index of external pool trading.
Write endpoints reuse Mooning's launch and transaction validation. Their successful responses have the same JSON shape as the website endpoints; errors return an error message. Public read responses use data.