Replay — every snapshot in a window (up to 15 minutes, 5 symbols)
https://api.skylit.ai/v1/historical/rangeEvery 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.
Authorization
Authorization: Bearer <your API key>Required. A missing header returns 401; an invalid, revoked or expired key returns 403.
Query parameters
symbolsstringrequiredOne ticker, or a comma-separated list for a single cross-asset call (e.g.
SPYorSPY,SPX,QQQ). Each is returned as an element ofdata.symbols. At most 10 distinct symbols (more →400invalid_parameter). Unknown symbols in a list are omitted; if none is available →404symbol_not_found.fromstringdate-timerequiredRFC3339 start of the window (inclusive). Up to 365 days back.
tostringdate-timerequiredRFC3339 end of the window (inclusive). At most 15 minutes after
from, not in the future.metricstringdefaultgammaWhich Greek exposure to return per strike.
gammavannamaxStrikesdefault92Maximum number of strikes around spot to return: an integer from 1 to 1000, or
allfor every strike the snapshot lists (SPXW lists about 730). Values above 1000 return400 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 noall.maxExpirationsdefault5How many of the nearest expirations to net into each strike's
value: an integer from 1 to 60, orall. Values above 60 return400 invalid_parameter. Ignored whenexpirationsis set.expirationsstringNet 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). SupersedesmaxExpirations, and reaches any expiration the snapshot has, not just the nearest ones. Requested dates the symbol does not have are ignored; theexpirationsarray in the response lists what was actually used. If none of them match, the response is404withcode: expiration_not_foundand 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/historicalinstead.
Responses
- 200
Every snapshot in the window, per symbol.
- 400
Request validation failed.
- 401
Missing API key (
unauthorized), sent by the gateway. - 403
Unknown, revoked or expired key (
forbidden, from the gateway), or an admin-suspended account (account_suspended). - 404
Unknown symbol, no data available, or none of the requested
expirationsexist for the symbol (code: expiration_not_found). - 429
Per-minute rate limit exceeded.
- 503
Heatmap data is temporarily unavailable.
Response fields
dataobjectrequiredfromstringdate-timerequiredtostringdate-timerequiredsymbolsobject[]required
metaobjectrequiredmetricstringrequiredgammavannaresolutionstringrequiredTime resolution of the data served: "1s" when every symbol came from 1-second data, "1m" when any came from minute-resolution history.
1s1mmodestringrequiredlivehistoricalcachedbooleanrequiredTrue if served from the in-process cache.
Last updated