TAPE
Get alerts

The tape, as JSON

Public endpoints for the consolidated price. Keys for the rest.

Public tier

60 requests per hour, no key. Enough to build a dashboard on.

Keyed tier

600 requests per hour and the full spread history per token. Opens at launch.

Every response

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.