.meme
Loading is taking longer. Reload page
← Mooning
BUILD ON MOONING

Mooning API

Discover public Solana launches and build wallet-signed creation and trading flows with the same checks used by Mooning.

API base URLhttps://mooning.meme/api/public/v1
Public reads

No API key is needed. Only publicly listed Mainnet launches are returned.

Wallet control

Sign a one-time message to authenticate. Transactions are signed and submitted by the user's wallet.

Verified state

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.

MethodPathWhat it does
GET/tokensPublic 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}/tradesConfirmed trades recorded by Mooning. limit up to 100; use nextBefore as the next page's before cursor.
GET/pairsQuote assets supported by the current launch contract.
GET/statsPublic 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.

  1. POST /auth/challenge with {"wallet":"YOUR_SOLANA_ADDRESS"}.
  2. Sign the returned data.message bytes with the wallet. POST /auth/verify with id and a base58 signature.
  3. Send the returned token in Authorization: Bearer YOUR_TOKEN. Upload the logo using multipart form data.
  4. POST /launches with name, ticker and image (the upload ID). description is optional. This creates a draft only. Supply settings to select a liquidity policy and pool; omitted settings use the 85 SOL Burn & Earn plan.
  5. POST /launches/{id}/prepare with {}. Decode the returned base64 transaction, review and sign it with the creator wallet, submit it to Solana, wait for confirmation, then POST /launches/{id}/confirm with its signature.
  6. For trading, GET /launches/{id}/quote?side=buy&amount=0.01, then POST /launches/{id}/trades/prepare with {"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.

MethodPathWhat it does
POST/auth/challengeRequest a one-time message for a Solana wallet.
POST/auth/verifyVerify the wallet signature; receive a 24-hour bearer token.
POST/mediaAuthorize 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/launchesCreate 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}/preparePrepare the launch transaction for the creator to sign and submit.
GET/launches/{id}/quoteGet a live curve trade estimate using side=buy|sell, amount and optional slippageBps.
POST/launches/{id}/trades/preparePrepare a buy or sell transaction for the wallet to sign and submit.
POST/launches/{id}/confirmAfter network confirmation, send {signature} to verify the launch or trade and update Mooning.

Limits and coverage

Rate limits

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.

Authentication

The challenge expires in 5 minutes. Bearer tokens expire after 24 hours. Store them server-side when possible; never put them in URLs.

Trade history

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.