GET/api/v1/markets/{ticker}/preview

Get market preview

Recorded window, YES price when the book moved, plus a slice of snapshots (top of book over time) and L2 market data (every book change). This is the UI path — not a full dump.

Auth required. No query parameters. The server owns the window, downsample, and cache.

Try it

Loading…

GET/api/v1/markets/KXBTC15M-26OCT051600-00/preview

What you get

  • coverage — first and last recorded print
  • path — ≤40 YES bid/ask points, only when chartable (bid range ≥ 0.04). Locked books are omitted.
  • sample — up to 8 snapshot rows (top of book over time)
  • l2_sample — up to 8 L2 rows (full books and updates)
  • cached — true when served from memory or S3
  • pending — true on a cold miss while L2 is rebuilt in the background. Poll this endpoint until it is false.

For a custom window up to 6 hours, use Get snapshots. For files, create an export with streams: ["snapshots"] or ["l2"].

curl
curl "https://kalshieye.com/api/v1/markets/KXBTC15M-26OCT051600-00/preview" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
200 response
{
  "ticker": "KXBTC15M-26OCT051600-00",
  "series": "KXBTC15M",
  "layer": "preview",
  "schema": 3,
  "chartable": true,
  "coverage": { "first_print_ts": 1728152700.0, "last_print_ts": 1728153600.0, "has_l2": true, "prints": 48 },
  "useful": { "start_ts": 1728152700.0, "end_ts": 1728153600.0, "reason": "full_window" },
  "path": [
    { "ts": 1728152700.0, "yes_best_bid": 0.36, "yes_best_ask": 0.37 }
  ],
  "sample": [
    { "ts": 1728153570.0, "yes_best_bid": 0.41, "yes_best_ask": 0.42 }
  ],
  "l2_sample": [
    { "ts": 1728153570.0, "type": "l2_anchor", "yes_bids": [[0.41, 12]] }
  ]
}