Replay — every snapshot in a window (up to 15 minutes, 5 symbols)
Every snapshot between from and to (inclusive) for up to 5 symbols, at the stored resolution — one per second where 1-second history exists (meta.resolution: "1s"), otherwise one per minute. Each frame's values[i] is the net exposure at axes[frame.axis].strikes[i], summed over that axis's expirations — the same number /v1/historical reports as strikes[i].value for that instant. Axes are listed once and referenced by id; a new axis appears only when the visible strikes or expirations change (the strike window follows spot). Plain JSON numbers; responses are gzip-compressed when the request sends Accept-Encoding: gzip.
Cost: 25 credits per call.
Request
- Base URL: https://api.skylit.ai
- URL: https://api.skylit.ai/v1/historical/range
- Auth: HTTP bearer
Query parameters
One ticker, or a comma-separated list for a single cross-asset call (e.g. SPY or SPXW,SPY,QQQ). Each is returned as an element of data.symbols. At most 10 distinct symbols (more → 400 invalid_parameter). Unknown symbols in a list are omitted; if none is available → 404 symbol_not_found.
Index options are served per option root, and the roots hold different contracts. SPXW is the PM-settled S&P 500 options (every daily and weekly expiration, 0DTE included), the board the Skylit app's Trinity view uses. SPX is only the AM-settled monthlies, so it has no 0DTE or weekly gamma and reads very differently from SPXW. The same split applies to NDXP / NDX and RUTW / RUT. To match the app's Trinity or read 0DTE, request SPXW,SPY,QQQ.
RFC3339 start of the window (inclusive). Up to 365 days back.
RFC3339 end of the window (inclusive). At most 15 minutes after from, not in the future.
Which Greek exposure to return per strike.
Maximum number of strikes around spot to return: an integer from 1 to 1000, or all for every strike the snapshot lists (SPXW lists about 730). Values above 1000 return 400 invalid_parameter; they are never silently reduced. Values below 1 are treated as 1. The single-symbol stream (/v1/stream?symbol=) accepts at most 400 and no all.
How many of the nearest expirations to net into each strike's value: an integer from 1 to 60, or all. Values above 60 return 400 invalid_parameter. Ignored when expirations is set.
Net each strike over exactly these expirations (YYYY-MM-DD, comma-separated) — one for a single-expiration heatmap (2026-05-22) or several for a custom set (2026-05-22,2026-06-19). Supersedes maxExpirations, and reaches any expiration the snapshot has, not just the nearest ones. Requested dates the symbol does not have are ignored; the expirations array in the response lists what was actually used. If none of them match, the response is 404 with code: expiration_not_found and the available dates in the message. On /v1/heatmap, expirations that have already expired are not available (they are trimmed from the live snapshot) — replay them with /v1/historical instead.
Response
Every snapshot in the window, per symbol.
Example response
{
"meta": {
"attribution": {
"text": "Powered by Skylit"
},
"resolution": "1s"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.