StonkFun
StonkFun launches coins on Raydium LaunchLab priced in tokenised stocks, pre-IPO stocks, currencies or SOL. Trading them goes through the trade endpoint like any other coin: leave pool out and the mint is routed by itself, or force it with pool: "stonkfun". The live streams tag them STONKFUN.
Trading
A StonkFun coin is priced in its quote asset, not in SOL, and the trade endpoint follows that: on a buy, amount is how much of the quote to spend (0.5 of an xStock, 100 CARDS), the wallet must already hold that much plus the 0.25% fee, and the fee is taken in the quote. A sell pays out in the quote and the fee comes out of the proceeds. The response says which asset with quoteMint and feeMint. Quotes that are Token-2022 mints with a transfer fee (the xStocks) are handled; the buyer needs SOL only for the network fee.
Launching one, and claiming a launched coin's creator fees, goes through StonkFun's own hosted flow: their service quotes the launch, you sign one payment transaction, and StonkFun mints and lists the coin. These endpoints wrap that flow so a bot talks to one API. Neither side asks for a key or a private key.
Quote assets
GET https://sol.shrine.trade/api/stonkfun/pairs
Everything a launch may be priced in, with launchable and launchLabReady flags. Pass category=xstock (or prestock, currency, …) to narrow it. quoteMint in a launch must come from this list.
Launch
POST https://sol.shrine.trade/api/stonkfun/launch
{
"publicKey": "<creator wallet>",
"quoteMint": "XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W",
"name": "My Coin",
"symbol": "COIN",
"mode": "standard",
"devBuySol": 0.5,
"logo": "data:image/png;base64,…"
}
| Field | Notes |
|---|---|
mode | standard: a 1% pool fee of which the creator earns half, or feeTier: "2%" for a 2% pool where the creator earns 1.5%. reward: a 1% pool plus a transfer tax paid to holders, no creator fee. |
devBuyPercent / devBuySol | The dev buy as a share of supply or in SOL. One of the two. |
logo | A data URL. Send the same bytes again on submit. |
airdropPercent, airdropTier | Optional airdrop to the quote asset's top holders (top100 … top5000). |
The answer carries payment (the launch fee plus your dev buy, in SOL, and the address it goes to), paymentTransaction (base64, unsigned), signedQuote and expiresAt. Sign paymentTransaction with the creator wallet within ten minutes and submit:
POST https://sol.shrine.trade/api/stonkfun/launch/submit
{ "signedQuote": "…", "signedTransaction": "<base64 signed payment>", "logo": "data:image/png;base64,…" }
The answer is { "status": "processing" | "completed", "mint": "…", "paymentSignature": "…" }. Poll GET /api/stonkfun/launch/{paymentSignature} until completed. Never pay twice: a second payment is a second coin.
StonkFun's launch fee is set by them (about 0.29 SOL at the time of writing, shown in payment.feeSol); shrine takes nothing on a launch.
Claim creator fees
POST https://sol.shrine.trade/api/stonkfun/claim-fees with { "publicKey": "<creator wallet>", "mint": "<coin>" } returns an unsigned transaction, valid for 90 seconds, an intentId, and what is claimable in the quote and the coin. Only the wallet holding the coin's fee key can claim, so anyone else gets a refusal. Sign it and submit:
POST https://sol.shrine.trade/api/stonkfun/claim-fees/submit with { "publicKey", "mint", "intentId", "signedTransaction" }. Resubmitting a claim that already went through returns the original signature with alreadySubmitted: true.
Limits
StonkFun rate-limits its flow per IP: 25 launch quotes and 20 claim quotes a minute, 300 other calls. Those apply on top of ours. Their answers pass through unchanged, data wrapper included, so an error from their side names the field or limit that was hit.