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…
What you get
coverage— first and last recorded printpath— ≤40 YES bid/ask points, only whenchartable(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 S3pending— 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]] }
]
}