Solaris AISolaris AI FlowDocs
Node ReferenceDeFi

StonkFun

Launchpad for coins paired with anything (tokenized stocks, pre-IPO tokens, currencies, SOL): discovery feeds, holder rewards, burns and buybacks, launching a coin, and claiming creator fees.

View as Markdown

The StonkFun node talks to the StonkFun Developer API. StonkFun is a Solana launchpad where every coin is priced against a quote token instead of SOL: tokenized stocks (SPYx, NVDAx, TSLAx), pre-IPO tokens (OPENAI, ANTHROPIC), currencies, leveraged tokens, SOL, or any custom mint. Coins launch on a Raydium LaunchLab bonding curve and graduate to a Raydium CPMM pool once they reach the platform's graduation market cap. Use a coin's mint with the Jupiter or Relay quote and swap operations; execution depends on the selected venue returning an available route for the pair and amount.

No API key is needed. The API is open behind a per-IP rate limit (300 requests per minute on reads, 25 per minute on launch prepare). The two operations that move funds, launchToken and claimFees, sign with your connected wallet: StonkFun builds an unsigned transaction, Solaris AI signs it through your embedded wallet, and the signed bytes go back to StonkFun. No private key ever leaves the platform, and both operations carry a Dry run switch that stops before any signature.

Prerequisites

  • Read operations: nothing.
  • launchToken and claimFees: a connected wallet with server-side signing authorized. A live launch pays the StonkFun launch fee in SOL (about 0.29 SOL when this page was written, plus any dev buy and airdrop fee). A claim only pays the network fee.

What to build with it

  • New-launch alerts: a cron trigger every 5 minutes, a Code node that returns new Date(Date.now() - 5 * 60 * 1000).toISOString() (triggers do not expose a last-run time), listLaunches with since set to that value plus mode or a creator wallet filter, then a Telegram or Discord message per row. Filter listTokens by quoteMint to watch only coins paired with one stock.
  • Graduation watch: listTokens with status set to aboutToGraduate, sorted by market cap, into a condition on graduationProgress, then a Jupiter or Relay swap on the mint. Graduated coins trade on Raydium CPMM.
  • Creator autopilot: launch a coin from Solaris AI with launchToken, then a scheduled claimFees that collects the creator share whenever the quote amount crosses a threshold, followed by a Jupiter or Relay swap from the quote token into SOL.
  • Holder digest: getTokenRewards and getTokenBurns for the coins you hold, plus getRevenue for the STONK buyback and burn feed, summarized by an AI node once a day.

Operations

Discover

listTokens: live market data for every coin with a platform pool. Search matches name, symbol, or mint. Sort is marketCap (default), newest, or volume. Status narrows to new (still on the curve), aboutToGraduate (between the platform's about-to-graduate and graduation market caps, read them from getStats), or graduated. Fee Model narrows to standard or reward coins. Paired With takes a quote-token mint and returns only coins priced against it; Pair Category does the same by category (xstock, prestock, currency, leverage, collectible, solana, backpack, custom). Rows carry market.priceUsd, market.marketCapUsd, market.volume24hUsd, status, graduationProgress (0 to 1), and the quote object naming the pair. Pages are 1 to 100 rows, default 25.

getToken: live market data plus the launch record for one mint, under data.token and data.launch.

listLaunches: launch records newest first, including self-built LaunchLab launches the platform adopted. Filter by Creator Wallet, Fee Model, and Since (an ISO 8601 timestamp; only launches at or after it). This is the cron-friendly feed: pass a rolling window that matches the trigger interval as since (computed in a Code node, since triggers do not expose a last-run time) and every row is new. A since template that resolves to nothing fails the run rather than silently returning every launch ever made.

listPairs: the quote tokens a coin can be launched against, with category, decimals, tokenProgram (xStocks use Token-2022), launchable, and launchLabReady. Use it to find the mint for Paired With or Quote Mint on the other operations.

listAllTokens: a flat identity index of every platform token with no market data: address (the mint), name, symbol, decimals, tokenProgram, logoUrl, url, pool, quoteMint, quoteSymbol, creator, launchpad, and createdAt. It pages by Limit (1 to 500, the default) and Offset rather than page numbers, with Order oldest (default) or newest, and data.pagination.hasMore says whether another page exists. Use it to mirror the whole catalog; use listTokens when you need prices or graduation status.

Token

getTokenBurns: burn totals for a mint (totals.amountTokens, totals.valueUsdAtBurn, totals.burnCount) and the most recent burns with a source of buyback, flywheel, quote-revenue, reward, or auto. Limit is 1 to 100.

getTokenRewards: holder-reward distribution totals for a reward coin: distributedTokens in the quote token, payoutCount, holderCount, lastPayoutAt.

getTokenAirdrop: what a coin launched with. data.airdrop is null when there was no airdrop; otherwise it carries the carve-out percent, recipient count, and tier.

getTokenBacking: the USD permanently locked behind a Pump-launched coin, summed from the platform's own locked positions. Pump launches only: a Raydium or LaunchLab coin answers 400 rather than zero, so read launchpad from getToken first. When this page was written StonkFun reported Pump launches disabled, so no live coin answered it yet.

getClaimableFees: what the creator of a standard coin can claim right now, with no wallet involved. data.claimable holds base and quote amounts (each with symbol and amountTokens) and is null with a data.reason when nothing is claimable. data.creator is the wallet that can claim.

Platform

getStats: aggregate totals (tokens, graduated, reward launches, market cap, 24h volume, revenue, buybacks, burns) plus config, which carries the graduation thresholds (graduationMarketCapUsd, aboutToGraduateMarketCapUsd) and feature switches such as apiLaunchesEnabled and devBuysEnabled.

getRevenue: fee revenue, STONK buybacks (totalBuybackUsd, boughtBackTokens, lastBuybackAt), burns by source, and the most recent buyback transactions. Limit bounds the recent list.

getRevenueHistory: the whole daily history keyed by UTC day: dailyRevenue, dailyHoldersRevenue, and dailyProtocolRevenue in USD, plus a coverage block on how many rows were priced.

getRewards: lifetime holder payouts per reward coin, largest first, with distributedTokens, payoutCount, holderCount, and lastPayoutAt.

getLaunchLabPricing: curve sizing (curve.configId, curve.supply, curve.totalSellA, raise.raw) and the platform and curve-rule ids for a launch you build yourself against Raydium's LaunchLab program with a given Quote Mint. launchToken is the managed path; this read exists for workflows that construct the transaction themselves.

Creator

launchToken signs a live transaction. It prepares the launch, checks the wallet's SOL balance against the quoted payment, signs the fee payment with your wallet, submits it, and polls until the launch completes.

  • Token Name (up to 32 bytes), Symbol (up to 10 bytes), Quote Mint (from listPairs), and Logo are required. The logo is an https:// PNG, JPEG, or WebP URL that the node fetches and encodes at run time (up to 2 MB), or a data:image/…;base64 URI. An inline data URI is stored inside the workflow itself, so it must stay under 256 KB; host anything larger and paste the URL.
  • Mode is standard (default) or reward. Standard coins trade on a 1% pool whose creator share you claim with claimFees: 0.5% of every trade by default, or 1.5% with Pool Fee Tier set to 2%. Reward coins are Token-2022 mints with an immutable Transfer Tax of 1% (100) or 3% (300) paid to holders in the quote token on every transfer; there is no creator fee. A fee tier set on a reward launch, or a transfer tax set on a standard launch, is dropped because StonkFun rejects it.
  • Dev Buy is optional: a percent of supply (max 50) or a SOL amount, never both. It fills as the pool's first trade in the same atomic bundle as the launch, so it cannot be front-run, and its SOL cost is added to the payment.
  • Airdrop is reward mode only: carve out up to 50% of supply for holders of the quote token, reaching top100 (default) through top5000 of its holder ranking. The recipient list is frozen when the launch is prepared. An airdrop configured on a standard launch fails the run rather than launching without it.
  • Max Payment (SOL) is an independent spending ceiling for the whole payment (launch fee plus dev buy plus airdrop fee). The quoted recipient and amount arrive in the same response as the transaction, so this is the one limit the platform cannot move. It defaults to 1 SOL; a quote above it is refused, and a dry run reports it as paymentCapWarning. Raise it deliberately for a large dev buy. The node also checks that the quote adds up (fee plus dev buy plus airdrop fee equals the payment) before signing.
  • With Dry run on (the default for a freshly configured node), the node returns the quote (payment.sol, devBuy, airdrop, expiresAt) with status: "quoted" and never signs; nothing is charged. With it off, the output carries mint, paymentSignature, tokenUrl, and status.

Launches are all-or-nothing: payment, mint, pool, and liquidity land in one bundle or none of them do. A status of processing means the launch is on chain and the record is still being written; the node polls for about a minute and, if the record is still pending, returns processing with the paymentSignature so getLaunchStatus can finish the wait. Never pay twice: if the submit call fails after signing, the error names the payment signature to check with getLaunchStatus before running again. A service_unavailable answer with charged: false means the bundle did not land and nothing was paid; re-running fetches a fresh quote.

claimFees signs a live transaction. It reads what is claimable, has StonkFun prepare the claim (valid for 90 seconds), signs it with your wallet, and submits it. Fees land in your own token accounts for both tokens of the pair. Only the coin's creator wallet, the holder of its Fee Key NFT, can claim, so this works for coins launched from Solaris AI; when the connected wallet is not the creator the node fails and names the wallet that is. When nothing is claimable the node completes normally with claimed: false and a reason, so a scheduled claim loop stays green; put a Condition on {stonkfunResponse.data.claimed} in front of anything that should only run after a real claim. With Dry run on, it only reads claimable and also reports claimed: false. Submitting is idempotent: a retry of the same claim returns the original signature with alreadySubmitted: true.

Before signing either transaction, Solaris AI decodes what StonkFun built and refuses anything outside the expected shape: a launch payment must be exactly one SOL transfer from your wallet to the quoted recipient for the quoted amount, and a claim must be exactly Raydium's collect-fees instruction on the locking program for this coin's mint (plus compute-budget instructions capped at 0.01 SOL of priority fee, creation of the wallet's own token accounts for the pair's two mints only, harmless token-account instructions, and memo instructions) with no SOL movement and no token transfers or approvals. A submit reply that names no launch status is reconciled against the launch record once and otherwise reported as ambiguous, never as an on-chain launch. Neither operation is retried by the engine after a failure, because a retry after an ambiguous submit could pay twice; the error names the payment signature to check with getLaunchStatus instead.

getLaunchStatus: poll a launch by its Payment Signature until data.status reads completed; data.mint is the new token.

Configuration

FieldTypeRequiredDescription
querystringNolistTokens search over name, symbol, or mint
sortstringNolistTokens: marketCap (default) | newest | volume
statusstringNolistTokens: new | aboutToGraduate | graduated
modestringNoFee-model filter on the list operations; the launch's fee model on launchToken (default standard)
quoteMintstringPer opOptional filter on listTokens; required on getLaunchLabPricing and launchToken
categorystringNoPair category filter on listTokens and listPairs
mintstringToken opsCoin mint for getToken, getTokenBurns, getTokenRewards, getTokenAirdrop, getTokenBacking, getClaimableFees, claimFees
creatorstringNolistLaunches creator wallet filter
sincestringNolistLaunches ISO 8601 lower bound
launchable, launchLabReadybooleanNolistPairs flags
page, pageSizenumberNolistTokens, listLaunches; pageSize 1 to 100, default 25; templates accepted
limitnumberNogetTokenBurns, getRevenue, getRewards: 1 to 100, default 25. listAllTokens: 1 to 500, default 500 (StonkFun allows 1000, but that exceeds the 512 KB per-node output budget). Templates accepted
offset, ordernumber, stringNolistAllTokens row offset (default 0) and oldest (default) | newest
paymentSignaturestringgetLaunchStatusPayment signature from launchToken
name, symbol, logoUrlstringlaunchTokenName up to 32 bytes, symbol up to 10 bytes, logo URL or data URI
feeTierstringNolaunchToken standard mode: 1% (default) | 2%
rewardTaxBpsstringNolaunchToken reward mode: 100 (default) | 300
devBuyPercent, devBuySolnumberNolaunchToken dev buy, one or the other
airdropPercent, airdropTiernumber, stringNolaunchToken reward mode airdrop
maxPaymentSolnumberNolaunchToken spending ceiling for the whole payment; default 1 SOL
website, twitter, telegramstringNolaunchToken metadata links
dryRunbooleanNolaunchToken, claimFees: stop before signing

Output

Read operations return the standard envelope with StonkFun's data payload untouched and its meta.generatedAt timestamp:

{
  "success": true,
  "operation": "listTokens",
  "data": {
    "tokens": [
      {
        "mint": "6GmAFSYs4gk3FDao5FzzySQpPZaWsa4rUJHacpMpUNgx",
        "symbol": "STONK",
        "quote": { "mint": "XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W", "symbol": "SPYX", "category": "xstock" },
        "mode": "standard",
        "market": { "priceUsd": 0.2014, "marketCapUsd": 173496715.2, "volume24hUsd": 1873378.17 },
        "status": "graduated",
        "graduationProgress": 1,
        "createdAt": "2026-07-23T19:08:03.348Z"
      }
    ],
    "pagination": { "page": 1, "pageSize": 25, "total": 1, "totalPages": 1 }
  },
  "meta": { "generatedAt": "2026-09-09T23:19:41.046Z" }
}

Reference fields downstream with the response name (default stonkfunResponse), for example {stonkfunResponse.data.tokens[0].mint} after listTokens, {stonkfunResponse.data.launches[0].quote.symbol} after listLaunches, or {stonkfunResponse.data.paymentSignature} after launchToken.

On this page