Stoke v1 for terminals
Programs, the pool API, pricing, events and trading: everything to list Stoke v1 coins.
Stoke v1 is Stoke's pool: a Uniswap v4-style hooked pool on Solana. Every coin launches on a bonding curve with virtual liquidity and graduates, inside the buy that completes it, into its own pool with locked liquidity. This page is everything a terminal or aggregator needs to list Stoke v1 coins and let its users trade them.
Programs
| What | Address |
|---|---|
| PoolManager (pools, swaps, vaults) | 3EK8eA2473durhf2oKJzYk827GN56DHEZRMnSbuuBngm |
| Launch hook (curve, fees, graduation) | CAcC7pz43rLg14jAE8iR3w3sgXcd2GGtoeFWUBB1SGVq |
| Coin token program | Token-2022 (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb), 6 decimals, metadata extension |
| Quote | Wrapped SOL (So11111111111111111111111111111111111111112) |
Pool API
Public, read-only JSON, CORS open, refreshed every few seconds. The full reference is the open API; for listing pools you need:
GET https://usestoke.xyz/api/v1/pools: every pool: mint, name, symbol, icon, creator, thelaunchandpoolaccounts,status(curveorgraduated), price in SOL and USD, market cap, fee and its split, liquidity, curve progress, volume andlinks(the coin's page, its own website and socials, and Solscan for each account).GET https://usestoke.xyz/api/v1/pools/{mint}: one pool, read fresh, with its fee zones.GET https://usestoke.xyz/api/v1/pools/{mint}/trades,/holdersand/quote?side=buy&amount=0.5: its trades, holders, and a quote computed exactly as the programs do.
Liquidity is reported the way it works: on the curve, virtualSol (built-in depth that sets the price from the first trade, 240 SOL) plus realSol (buyers' SOL the curve holds and pays sellers from); after graduation, lockedSol and lockedTokens in the pool, which can never be removed.
Trading
POST https://usestoke.xyz/api/v1/pools/{mint}/trade (also at /api/trade/{mint}) builds an unsigned transaction for any wallet, against the curve or the pool, whichever the coin is on. Body: { "side": "buy", "wallet": "<pubkey>", "sol": 0.5, "slippageBps": 300 } or { "side": "sell", "wallet": "<pubkey>", "pct": 100, "slippageBps": 300 }. It returns { "txs": [{ "label", "tx" }] }: base64 versioned transactions for the wallet to sign and send, in order. Each is simulated first.
To build swaps yourself, call the PoolManager's swap on the coin's pool with the launch hook's accounts appended, exactly as the hook publishes them for the pool (PDA ["hook-accounts", pool] under the launch hook: an 8-byte magic, a count, then pubkey + writable flag each). Coins with fee zones publish a third account, their zones account (writable); swaps without it fail. Every trade, from any app, runs through the hook, so fees and rules always apply.
Pricing
On the curve
Constant product on the launch account's virtual reserves: k = virtual_quote × virtual_token, price = virtual_quote / virtual_token SOL per raw token. A buy of x lamports pays the fee first (x × fee_bps / 10,000), then receives virtual_token − ⌈k / (virtual_quote + x − fee)⌉ tokens. Every coin opens at about 206 SOL of market cap and graduates when the curve has raised 400 SOL (about 1,467 SOL of market cap).
After graduation
A v4-style concentrated-liquidity pool (full-range liquidity plus a buy-side floor position, both owned by the hook). Price comes from the pool's sqrt_price (Q64.64). The pool's own LP fee is 0; the coin's fee is taken by the hook in SOL.
Rules every trade follows
| Rule | Detail |
|---|---|
| Fee | Set per coin by its creator at launch, 0.25%–2.5% of the SOL side; 30% creator, 30% holders (paid hourly), 40% the coin's reserves (real SOL in the curve, then the locked pool). No protocol share. |
| Anti-snipe | Buys in the coin's first 3 slots (about a second) pay 90%; those tokens are burned. The creator's launch buy is exempt. Sells are never taxed. |
| Locked liquidity | Every position belongs to the hook, which has no instruction to remove one. |
| Creator sells | Fee-free up to what the creator bought at launch. |
| Coin hooks (optional, per coin) | A program the creator added at launch, called before every trade: it can refuse the trade or set its fee, up to 10% (with a fee zone, a sell pays the higher). Its three accounts are in the pool's published hook accounts: pass them like the rest. `hook: true` in the pool API marks these coins, and quotes include the hook. |
| Fee zones (optional, per coin) | Market cap bands where sells pay a higher fee, up to 10%: a sell pays the highest zone fee its price passes through (start to end). Off for good once the coin holds above its top zone for 5 minutes. While on, exact-output sells are refused. `feeZones: true` in the pool API marks these coins. |
Events
Anchor events in program logs (Program data:, base64; the first 8 bytes are sha256("event:Name")):
| Event | When | Fields |
|---|---|---|
| Launched | A coin launches | launch, mint, creator, pool, raise_target, snipe_fee_bps, snipe_slots, launch_fee, fee_bps |
| CurveTrade | Every curve trade | mint, trader, is_buy, quote, tokens, fee, snipe, burned, virtual_quote, virtual_token, real_quote, real_token |
| Graduated | The buy that completes the curve | mint, pool, liquidity, quote, tokens |
| PoolFee | Every trade after graduation | mint, trader, is_buy, fee (the PoolManager's swap event carries the amounts) |
| HolderRewardsWithdrawn | Hourly holder payouts | mint, amount |
| FeeZonesSet | A coin launches with fee zones | mint, zones (from_mcap, to_mcap in lamports of SOL market cap, sell_fee_bps) |
| FeeZonesOff | A coin's zones switch off for good | mint, mcap |