Stoke

Open API

Every coin, trade, holder, quote and payout on Stoke, as public JSON with links to check each one on-chain.

Everything on Stoke is readable by anyone, without going through this site. Every coin, its pool, trades, holders and quotes, and the protocol's own numbers and payouts are public JSON. No key, CORS open, cached a few seconds. Every object carries links: the coin's page, the next request to make, and Solscan for each account and transaction, so anything here can be checked on-chain.

Base URL: https://usestoke.xyz/api/v1. Open it for a list of every endpoint, each with a working example.

Endpoints

MethodPathWhat it returns
GET/poolsEvery coin's pool: price, market cap, fee and its split, fees paid, liquidity, curve progress, volume and links.
GET/pools/{mint}One pool, read fresh from the chain, with its fee zones, its hook, anti-snipe window and holder rewards.
GET/pools/{mint}/tradesRecent trades, newest first, each with its transaction. Pages back with a cursor.
GET/pools/{mint}/holdersThe holder count and the top 25 accounts, with the curve or pool and vaults labelled.
GET/pools/{mint}/quoteWhat a buy or sell returns right now, with fees, fee zones and the coin's hook.
POST/pools/{mint}/tradeBuilds an unsigned buy or sell for a wallet to sign.
GET/hooksThe hooks a creator can add to a coin at launch, each with its program and whether it's listed or paused.
GET/protocolVolume, fees and where they went, the protocol's income and treasury, and every address behind it.
GET/payoutsHourly holder payouts, each with its transactions.
Try it
curl https://usestoke.xyz/api/v1/pools
curl https://usestoke.xyz/api/v1/pools/{mint}
curl "https://usestoke.xyz/api/v1/pools/{mint}/quote?side=buy&amount=0.5"
curl https://usestoke.xyz/api/v1/protocol

Every pool has a links object, so a client never has to build a URL:

LinkWhere it points
pageThe coin's page on the site.
api, trades, holders, quote, tradeThis pool's endpoints.
image, metadataThe coin's image and its metadata JSON.
website, twitter, telegramThe coin's own links, set by its creator at launch (null when not set; only http(s) links are kept).
solscan.token, .pool, .launch, .creatorEach account on Solscan.

Trades link their transaction and trader, holders link each owner, payouts link every transaction, and /protocol links every program, settings account and wallet behind Stoke.

Pools

status is curve while a coin is on its bonding curve and graduated once it trades in its own locked pool. feeBps is the fee the creator picked (25–250). fees.split is where every fee goes (30% creator, 30% holders, 40% the coin's reserves, 0% protocol), and fees.earnedSol is what each has been paid so far. fees.earnedSol.protocol is what the protocol took before it stopped taking a share on 2026-11-08.

Liquidity is reported the way it works: on the curve, virtualSol (built-in depth that sets the price) plus realSol (buyers' SOL the curve holds); after graduation, lockedSol and lockedTokens, which can never be removed. /pools/{mint} adds zones (null when the coin has none): its fee zones in SOL market cap (fixed at launch) and in USD at today's price, whether they're still on, and the zone fee a sell pays right now.

hook is true on /pools for a coin launched with a hook. On /pools/{mint} it's the hook itself (null when the coin has none): its name and program, the creator's settings and the same in words (rules), whether Stoke has paused it, whether it's still active and when it endsAt, and what it does to a trade right now (now.buyFeeBps, now.sellFeeBps, now.maxBuySol; null where it changes nothing).

Trades

/pools/{mint}/trades?limit=50 reads the pool's latest limit transactions (1–200) and returns the trades in them, newest first: side, trader, SOL, tokens, price after the trade, and whether it was on the curve or in the pool. To page back, follow next.url (it sets before to the oldest transaction read). next is null at the start of the coin's history.

Quotes

/pools/{mint}/quote?side=buy&amount=0.5 quotes a buy of 0.5 SOL; side=sell&amount=1000000 quotes a sell of a million tokens. It computes the trade exactly as the programs do, on the curve or in the pool. Optional: slippageBps (default 300) for minOut, and wallet, because a creator's sells are fee-free up to what they bought at launch.

FieldMeaning
outTokens for a buy, SOL for a sell, after every fee.
minOutout less slippageBps: the minimum to accept.
feeBpsThe fee this trade pays: the coin's, its hook's, a fee zone's on a sell, or 0 on a creator's fee-free sell.
zoneFeeBps, antiSnipeBpsThe fee zone or anti-snipe tax in play (0 when none).
hookFeeBpsThe fee the coin's hook sets for this trade (null: no hook, or it leaves this trade as it is). A trade the hook refuses returns 400 with the reason.
averagePriceSol, priceImpactPctThe trade's average price, and how far it is from the current price, fees included.
completesCurveThis buy graduates the coin: out is the curve's part, and the rest fills in the new pool, so it receives at least this.
cappedByCurveSolA curve pays sells from the SOL buyers have put in (liquidity.realSol), never more. This sell asks for more than that: out is all of it, and selling fewer tokens returns the same.

Building trades

POST /pools/{mint}/trade builds an unsigned transaction for any wallet: against the curve or the pool, whichever the coin is on. Nothing is signed or sent for you; each transaction is simulated first.

Request and response
POST https://usestoke.xyz/api/v1/pools/{mint}/trade
{ "side": "buy",  "wallet": "<pubkey>", "sol": 0.5,  "slippageBps": 300 }
{ "side": "sell", "wallet": "<pubkey>", "pct": 100,  "slippageBps": 300 }

→ { "txs": [{ "label": "Buy 0.5 SOL of $COIN", "tx": "<base64 versioned transaction>" }] }

Sign each transaction with the wallet and send them in order. Every trade, from any app, runs through the coin's hook, so its fee and rules always apply.

Protocol and payouts

/protocol is what the protocol page shows: total volume and fees, what went to creators, holders and reserves, the protocol's income (launch fees only), the treasury's balance, and every address behind Stoke, read from the chain where it can be. /payouts lists each hourly holder payout: what every coin's holders' share withdrew and every payment sent, each with its transaction.

Limits and caching

  • 300 requests a minute per IP. Trades, holders, quotes and building trades read the chain on each call, so those allow 60 a minute.
  • Over the limit returns 429 with Retry-After. Errors are JSON: { "error": "…" }.
  • Responses are cached for a few seconds (pools 5s, holders 15s, protocol 15s, payouts 30s; quotes aren't cached).
  • Amounts are plain numbers: SOL in SOL, tokens in whole tokens (6 decimals). Times are Unix seconds or ISO 8601.
  • v1 can gain fields; existing fields keep their names and meaning.
Building on Stoke, or need something the API doesn't have yet? Message @use_stoke on X. For the programs, accounts and events behind it, see Stoke v1 for terminals.