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
| Method | Path | What it returns |
|---|---|---|
| GET | /pools | Every 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}/trades | Recent trades, newest first, each with its transaction. Pages back with a cursor. |
| GET | /pools/{mint}/holders | The holder count and the top 25 accounts, with the curve or pool and vaults labelled. |
| GET | /pools/{mint}/quote | What a buy or sell returns right now, with fees, fee zones and the coin's hook. |
| POST | /pools/{mint}/trade | Builds an unsigned buy or sell for a wallet to sign. |
| GET | /hooks | The hooks a creator can add to a coin at launch, each with its program and whether it's listed or paused. |
| GET | /protocol | Volume, fees and where they went, the protocol's income and treasury, and every address behind it. |
| GET | /payouts | Hourly holder payouts, each with its transactions. |
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/protocolLinks
Every pool has a links object, so a client never has to build a URL:
| Link | Where it points |
|---|---|
| page | The coin's page on the site. |
| api, trades, holders, quote, trade | This pool's endpoints. |
| image, metadata | The coin's image and its metadata JSON. |
| website, twitter, telegram | The coin's own links, set by its creator at launch (null when not set; only http(s) links are kept). |
| solscan.token, .pool, .launch, .creator | Each 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.
| Field | Meaning |
|---|---|
| out | Tokens for a buy, SOL for a sell, after every fee. |
| minOut | out less slippageBps: the minimum to accept. |
| feeBps | The 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, antiSnipeBps | The fee zone or anti-snipe tax in play (0 when none). |
| hookFeeBps | The 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, priceImpactPct | The trade's average price, and how far it is from the current price, fees included. |
| completesCurve | This buy graduates the coin: out is the curve's part, and the rest fills in the new pool, so it receives at least this. |
| cappedByCurveSol | A 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.
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
429withRetry-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.