StonkFun: public HTTP launch API logoStonkFun: public HTTP launch API
Prepare returns an unsigned payment transaction. Sign it locally. Submit. Poll the payment signature. Never pay twice.
devrels.xyz/a/303StonkFun is a Solana launch venue with a public HTTP API. Read market data and launch tokens. There is no API key and nothing to sign up for. A launch is authorised by the creator wallet signing the fee payment. The platform never asks for, accepts, or stores a private key. No endpoint signs on your behalf.
Base URL https://www.stonkfun.xyz/api/public/v1. OpenAPI at /api/public/v1/openapi.json. Docs live at stonkfun.xyz/developers. X: @launchonsf.
Launch
Two calls. POST /launches/prepare returns an unsigned payment transaction. Sign it with the creator wallet. Hand it to POST /launches/submit with the same logo bytes. A processing status means the launch is on chain. Poll GET /launches/{paymentSignature} until completed. Never pay twice. A second payment creates a second token. If the bundle does not land, submit answers service_unavailable with charged: false. Get a fresh quote from prepare.
Pick a quote from GET /pairs?launchable=true and pass it as quoteMint. Pairs include tokenized stocks (xStocks), pre-IPO stocks (PreStocks), currencies, leveraged tokens, SOL, or a custom mint. Read GET /stats before offering a launch button: config.paidLaunchesEnabled and config.launchLabEnabled say which path is live.
const API = "https://www.stonkfun.xyz/api/public/v1"
const prepared = await fetch(API + "/launches/prepare", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
creatorWallet,
quoteMint,
name: "My Token",
symbol: "MYTKN",
mode: "standard",
}),
}).then((r) => r.json())
// Sign prepared.data.paymentTransaction locally.
// POST /launches/submit with signedQuote + signedTransaction.
// If status is processing, poll GET /launches/{paymentSignature}.
// Never pay twice.Modes
mode: "standard" is a fee coin. Default pool is 1%. Fees split 50/50, so the creator earns 0.5% of every trade. Optional feeTier: "2%" opens a 2% pool. Creator earns 1.5%. Platform keeps 0.5%. Claim from the token page or over this API.
mode: "reward" is a 1% pool plus a transfer tax paid to holders. 1% by default, or 3% at launch, in the paired token, on every transfer, on any venue. No creator fee position. Optional airdropPercent holds back up to 50% of supply for holders of the quote token. Snapshot is frozen by prepare, before the mint exists. Optional devBuyPercent or devBuySol, never both, up to 50% of supply as the pool's first trade in the same atomic bundle.
Build your own
Skip prepare and submit. Construct the launch against Raydium LaunchLab. Two reads: GET /pairs and GET /launchlab/pricing. Bake the platform id into the pool. StonkFun scans attributed pools every minute and adopts matches. Use raise.raw from pricing. Do not pass the SDK's 85 SOL constant as totalFundRaisingB on an 8-decimal xStock. There is no launch fee on this path. Watch GET /tokens/{mint} until launchpad: "launchlab". Land a standard launch first before a taxed one. Wrong tax shape withholds for nobody.
Claim
Fee coins: GET /tokens/{mint}/fees, then POST /tokens/{mint}/fees/claim/prepare, sign, POST .../claim/submit. Prepare expires in 90 seconds. LaunchLab launches have no Fee Key NFT. The platform forwards the creator share automatically. Reward coins answer 403 on claim.
Reads
GET /tokens with sort, mode, status, quoteMint, category. Page size 1-100, default 25. Also /tokens/{mint}, burns, rewards, airdrop, backing (pump launches only). GET /launches, /pairs, /rewards, /revenue, /revenue/history, /stats. Unversioned GET /api/public/total-assets is identity only: mint, name, symbol, decimals, logo.
Every response carries X-RateLimit-Remaining and X-RateLimit-Reset. A 429 adds Retry-After.
| Surface | Per minute per IP |
|---|---|
| Reads, both submits, status | 300 |
POST /launches/prepare | 25 |
POST /tokens/{mint}/fees/claim/prepare | 20 |
Errors are { error: { code, message } }. Branch on code: invalid_request 400, forbidden 403, not_found 404, conflict 409, rate_limited 429, internal 500, service_unavailable 503. For a launch, 409 means the payment landed. Never retry or re-pay.
Keep reading
Partner API for listing products and launching creator coins — your poolCreator signs, launcher pays costs, Orynth broadcasts.
Fees fund a public sub-wallet perp — not an idle curve vault. Founder ADP the Great; X @PerpsPadfun; API docs open.
Six executable programs. StonkFun operator wallet is not a program. bonk.fun is a LaunchLab platform UI. Keep the SDK/API v3 piece.
Get new articles in your inbox
Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.
