API
A public, read-only API. No keys, per-IP rate limits, cached at the edge. Stable and boring on purpose, so other people can build on it.
| Endpoint | Returns |
|---|---|
GET /markets |
Every index: level, TWAP, status, 24h and 30d change, open interest, cap usage, spread |
GET /markets/{id} |
One index with constituents, weights and methodology |
GET /markets/{id}/levels?since= |
Posted levels since a time |
GET /quotes/{tuple}?since= |
Every raw venue quote for one item |
GET /positions/{owner} |
A wallet's positions and receipts |
GET /reserve |
Balance, target, floor, exposure by market, bad debt |
GET /burns |
Every burn with its swap and burn transactions |
GET /stats |
Protocol totals |
GET /backtest/{id}?from=&to= |
A replay of any index over any window |
Times are Unix milliseconds, UTC. Money is USD. Levels carry four decimals.
Recompute today's KNIFE level
Fetch the index and its constituents.
GET /markets/KNIFEKeep each item's
tupleId,weightandcompositeAtRebalance, and the methodology'srebalanceLevel.For each item, fetch its raw quotes from the last 30 minutes.
GET /quotes/knife:507:418:FN?since=<now − 30 min>For each item, take the latest quote from each venue that is under 30 minutes old, and take the median of their
priceUsd. Fewer than 3 means the item is stale.Compute the raw level:
level = rebalanceLevel × Σ weight × (composite ÷ compositeAtRebalance)Average the raw level over the last 15 minutes. That is the posted TWAP, and it matches
GET /markets/KNIFEto four decimals.