The tape, as JSON
Public endpoints for the consolidated price. Keys for the rest.
60 requests per hour, no key. Enough to build a dashboard on.
600 requests per hour and the full spread history per token. Opens at launch.
Cached 60 seconds at the edge, with the measurement timestamp inside the payload.
GET /api/v1/stats
Registry size, how many tokens are priced, how many venues quote them, the widest spread right now.
{
"ts": "2026-09-08T09:00:12Z",
"in_registry": 194,
"with_pool": 44,
"above_floor": 38,
"venues": 12,
"widest_bps": 241.4,
"widest_symbol": "NVDA",
"open_dislocations": 2
}GET /api/v1/tape
The tape itself, one row per stock token.
params: state=quoted|all|in_line|wide|dislocated|no_quote · dex · q · min_spread · sort=vol|spread|liquidity|venues|symbol · page · limit
{
"items": [
{
"symbol": "NVDA",
"price_usd": 182.4013,
"spread_bps": 241.4,
"price_min": 180.2,
"price_max": 184.6,
"dex_min": "bankr-robinhood",
"dex_max": "pons-v2-dex",
"venues": 7,
"venues_seen": 11,
"liquidity_usd": 8183990.17,
"vol_h24": 35449817.4,
"depth_1pct": 20459.98,
"state": "dislocated"
}
],
"page": 1, "per_page": 50, "total": 38, "next": null
}GET /api/v1/stock/{ticker}
One token with every venue quoting it, including the pools excluded from the price and why.
{
"row": { "symbol": "GME", "price_usd": 28.11, "spread_bps": 188.2, "venues": 5, "state": "dislocated" },
"venues": [
{ "dex": "bankr-robinhood", "price_usd": 27.98, "deviation_bps": -46.2,
"liquidity_usd": 412300.5, "vol_h24": 1820400.0, "qualifies": true,
"address": "0x…" }
]
}GET /api/v1/spread/{ticker}/history
The spread of one token over time, rebuilt from the stored quotes of each poll.
params: hours (default 168, max 720)
{
"symbol": "GME", "hours": 168,
"points": [{ "ts": "2026-09-08T08:55:00Z", "price_usd": 28.09, "spread_bps": 172.4 }]
}GET /api/v1/venues
Every venue quoting at least one stock token, with its token count, liquidity and 24h volume.
{ "items": [{ "dex": "pons-v2-dex", "tokens": 21, "liquidity_usd": 5120400.0, "vol_h24": 18400200.0 }] }GET /api/v1/coverage
The three coverage numbers plus the venue table, in one call.
{ "in_registry": 194, "with_pool": 44, "above_floor": 38, "venues": [ … ] }GET /api/v1/log
The dislocation log, newest first.
params: symbol · open=1 · min_bps · page · limit
{
"items": [
{ "id": 41, "symbol": "AMC", "opened_at": "2026-09-08T14:02:11Z",
"closed_at": "2026-09-08T14:19:38Z", "peak_bps": 184.1,
"dex_low": "bankr-robinhood", "dex_high": "pons-v2-dex" }
],
"page": 1, "per_page": 50, "total": 41, "next": null
}Your keys
Key creation opens at launch. A key is shown once, is revocable, and carries a seven-day usage sparkline so you can see what your integration actually does. Until then every endpoint above works on the public tier without a key.