Skip to main content
Base URL: http://data.graylayer.tech All data endpoints require an x-api-key header. Timestamps are UTC RFC 3339 (e.g. 2026-03-26T12:00:00Z). Results are always sorted ts ascending; limit truncates after sort.

GET /health


GET /api/:exchange/tickers

List all tickers collected for an exchange. Use prefix to narrow results — useful when you know the series you want (e.g. KXBTC15M) but not every individual contract.
Response
Tickers are sorted alphabetically. If your key has ticker_prefixes, only matching tickers are returned regardless of what prefix you pass.

GET /api/:exchange/snapshots/:ticker

Get snapshot rows — full orderbook state at discrete points in time. Each row represents the complete book at that moment (not a delta). Multiple rows at the same ts represent different price levels.
Response
start_ts is clamped to your key’s max_data_age_days window. Anonymous access is always clamped to the last 1 day.

GET /api/:exchange/deltas/:ticker

Get delta rows — incremental changes to the orderbook. A positive quantity_delta means a level was added or increased; negative means it was reduced or removed. Reconstruct the full book by applying deltas to a snapshot.
Response
sequence is the exchange-assigned sequence number for ordering events within the same timestamp. quantity_delta is a signed decimal string — negative values mean that quantity was removed from that level.

Examples by exchange

Kalshi

Kalshi tickers follow patterns like KXBTC-25 (event series) or KXBTC15M-26MAR281530-50 (15-minute micro contracts).

Polymarket US

Polymarket tickers are market slugs — lowercase hyphenated strings matching the market URL on polymarket.com.
Snapshot response (Polymarket)
Delta response (Polymarket)

Gemini

Gemini has two classes of tickers:
  • Crypto spot pairs — e.g. BTCUSD, ETHUSD, SOLUSD
  • Prediction market contractsinstrumentSymbol values like GMKETSBTCUSD-20261231-T100000
Snapshot response (Gemini crypto spot)

Typical usage pattern

To reconstruct the book at a point in time and track it forward:
  1. Fetch a snapshot just before your target time to get the full book state
  2. Fetch deltas starting at that snapshot’s ts to replay changes forward
  3. Apply each delta: add quantity_delta to the existing quantity at (side, price); remove the level if quantity reaches zero
Same pattern works across all exchanges:

Cross-market queries

Compare the same question across exchanges:

Notes

  • Timestamps are UTC RFC 3339 (e.g. 2026-03-26T12:00:00Z)
  • side is "bid" or "ask"
  • quantity_delta can be negative (level removed or reduced)
  • Prices and quantities are decimal strings
  • Rows are always sorted ts ascending; limit truncates after sort
  • Send Accept-Encoding: gzip for smaller payloads — responses are gzip compressed
  • History begins from March 7, 2026