Everything on this site is built on these endpoints, and all of them are public: JSON over HTTPS, no key needed. Use them for bots, dashboards, alerts or your own front end. Please keep it under a few requests per second.
Getting started
Every example uses $HOST; the copy button fills in this site's address. Responses are JSON. Errors come back with a 4xx or 5xx status and an error message.
Try it
curl "$HOST/api/tokens?sort=trending&limit=3"
API keys
Not needed today: every endpoint is public, and a few writes have their own limits (a payout request, once a minute per wallet). Keys for higher limits and webhooks are planned; when they ship you'll create and revoke them here.
Tell the indexer about a transaction you just sent so it shows up at once. The server re-reads it from the chain; nothing in the request is trusted.
Request
curl -X POST "$HOST/api/ingest" -H "content-type: application/json" -d '{"signature":"<sig>"}'
Payouts
Coins with a keeper module (Keep it, Holder payouts, Buyback & burn, Stock basket) have their fees claimed and routed every round. Every movement is written here.
Payouts waiting for a wallet: too small to send in their round, or waiting for a token account.
wallet
the wallet
Request
curl "$HOST/api/rewards?wallet=<wallet>"
POST/api/rewards/claim
Send a wallet what it's owed now. Always pays the wallet itself; the keeper pays the network fee. Once a minute per wallet.
Request
curl -X POST "$HOST/api/rewards/claim" -H "content-type: application/json" -d '{"wallet":"<wallet>"}'
Live events
The same feed that drives the KRYVEX world. Kinds: launch.created, trade, curve.progress, curve.complete, pool.graduated, fees.claimed, keeper.round, burn, passport.registered, launch.hidden, launch.shown.
GET/api/events/stream
Server-sent events: one `event: <kind>` per world event; the SSE id resumes with Last-Event-ID.
after
event id to start after
mint
only one coin
Request
const es = new EventSource("$HOST/api/events/stream");
es.addEventListener("trade", (m) => console.log(JSON.parse(m.data)));
es.addEventListener("keeper.round", (m) => console.log(JSON.parse(m.data)));
GET/api/events
The polling version: events after an id, oldest first, or the latest few.
after
event id
latest
the most recent N
mint
only one coin
limit
page size
Request
curl "$HOST/api/events?latest=20"
Notes
Coins have 6 decimals and a fixed supply of 1,000,000,000. Pair-token amounts use the pair's decimals (SOL 9, USDC 6).
Prices in priceSol are in the coin's pair token (the name is historical); priceUsd is in dollars.
Transactions from /api/trade expire after about a minute. Build, sign and send right away.
The ledger's rows without sig are bookkeeping (KRYVEX's share held by the keeper, or a skipped step with its reason).