Any session your plan reaches.
/v1/sessions/v1/sessions/{date}The finished sessions your plan can read, each with how many names have levels and what the day holds; or, for one session, the names it holds by product. Start here before any history request.
fromstringdefault allBounds on the sessions listed, YYYY-MM-DD, inclusive.
tostringdefault allBounds on the sessions listed, YYYY-MM-DD, inclusive.
datestringrequired/v1/sessions/{date}: a session from the list.
sessions[].datedateA finished session, oldest first.
sessions[].namesintegerNames with levels recorded that day.
sessions[].resolutionstringThe session's finest step. A request finer than this is answered at this step.
sessions[].holdsobjectWhat the day holds: levels, grids, flow, trades, playback, answers, closing, each true (held), false (short) or null (not checked that day).
countintegerdatedateThe session.
holdsobjectThe catalog row's holds (levels, grids, flow, trades, playback, answers, closing).
names.levelsstring[]Names with recorded levels, sorted.
names.playbackstring[]Names with a Replay.
names.closingstring[]Names with a closing entry.
countsobjectThe length of each list.
/v1/symbols/{symbol}/history/levelsKey levels through one session, or through a range of finished sessions, down to the second where it was recorded.
symbolstringrequiredThe ticker: SPY, SPX, NDX, AAPL …
datestringdefault todayOne session, YYYY-MM-DD.
intervalintegerdefault 5Minutes between rows, 1 to 30.
resolutionenumdefault 1m1s, 5s, 15s, 30s, 1m, 5m, 15m, 30m.
fromstringA range of finished sessions instead of date, 31 at most, oldest first. to defaults to the last finished session.
tostringA range of finished sessions instead of date, 31 at most, oldest first. to defaults to the last finished session.
datedateThe session (one-session answer).
from, to, sessions[]dateRange answer: the bounds asked for and the sessions the rows come from, oldest first (a session with no levels recorded for the symbol is left out).
interval_minutesintegerminutesInterval applied.
rows[].as_oftimestamprows[].spotnumberUSDrows[].expirationsintegerExpirations the levels were computed over.
rows[].key_levelsobjectUSDgamma_flip, call_wall, put_wall, max_pain, vol_trigger, momentum_wall.
countinteger/v1/symbols/{symbol}/history/flowRunning premium and signed volume by leg through a session, down to the second where available; or through a range of sessions.
symbolstringrequiredThe ticker: SPY, SPX, NDX, AAPL …
datestringOne session, YYYY-MM-DD.
intervalintegerdefault 5Seconds between rows, 5 to 300.
resolutionenumdefault 1m1s, 5s, 15s, 30s, 1m, 5m, 15m, 30m.
buckets0 | 1default 01 adds one-minute buckets by leg, side and moneyness; one session only.
fromstringA range of finished sessions instead of date, 31 at most, oldest first. to defaults to the last finished session.
tostringA range of finished sessions instead of date, 31 at most, oldest first. to defaults to the last finished session.
date, interval_seconds, countfrom, to, sessions[]daterows[].as_ofstringUTCrows[].spotnumberUSDrows[].call_premium, put_premiumnumberUSDrows[].signed_call_premium, signed_put_premiumnumberUSDrows[].bullish_premium, bearish_premiumnumberUSDrows[].signed_call_volume, signed_put_volumeintegercontracts/v1/symbols/{symbol}/history/heatmapCall, put and net GEX per strike at each step of a session, for one expiration or the nearest few; down to the second where available, in windows of up to 15 minutes.
symbolstringrequiredThe ticker: SPY, SPX, NDX, AAPL …
datestringOne session, YYYY-MM-DD.
interval1 | 2 | 3 | 4 | 5 | 10 | 15 | 30default 5Minutes per snapshot: 1, 2, 3, 4, 5, 10, 15 or 30.
resolutionenumdefault 1m1m … 30m for the per-expiration grid; 1s … 30s for the strike profile where available.
startstringSub-minute resolutions: the window's start, RFC 3339 or HH:MM:SS New York. Required with them.
endstringAt most 15 minutes after start. Default start plus 15 minutes.
expirationstringOne expiration, YYYY-MM-DD. Default the nearest few, summed.
modeenumdefault rawraw, or difference from the previous snapshot.
strikesintegerdefault 45Strikes nearest spot, 5 to 100.
date, interval_minutes, mode, countexpirationstring \| nullexpirationsstring[]snapshots[].as_ofstringUTCsnapshots[].spotnumberUSDsnapshots[].rows[].strikenumberUSDsnapshots[].rows[].call_gex, put_gex, net_gexnumberUSD per 1% movesnapshots[].rows[].delta, vanna, charmnumbershares; shares per vol point; shares per daysnapshots[].data_as_of, snapshots[].carriedtimestamp, boolean/v1/symbols/{symbol}/history/replayA finished session as it played: each minute's spot, key levels, walls and net-GEX strike profile, stamped with the moment of the state it shows; or the per-minute surfaces with the closing aggregate.
symbolstringrequiredThe ticker: SPY, SPX, NDX, AAPL …
datestringdefault requiredA finished session before today, YYYY-MM-DD. Required unless from and to are given.
partenumdefault levelslevels or surfaces.
expirationsintegerdefault 1The nearest N the answer was computed over, 1 to 50.
fromstringA range of finished sessions, part=levels only, 31 at most.
tostringA range of finished sessions, part=levels only, 31 at most.
resolutionenumdefault 1mpart=levels: 1s, 5s, 15s, 30s, 1m … 30m.
datedaterows[].as_oftimestampThe moment of the state the row shows, UTC: the as_of of the same row on history/levels. A chart shows a row from the first candle that opens at or after it.
rows[].spotnumberUSDSpot at that minute.
rows[].key_levelsobjectUSDgamma_flip, call_wall, put_wall, max_pain, vol_trigger, momentum_wall, as on /levels.
rows[].major_wallnumberUSDThe strike with the largest absolute net GEX at that minute.
rows[].walls.calls[], rows[].walls.puts[]array{"strike": USD,: the largest positive (calls) and negative (puts) net GEX strikes, up to three each.
rows[].profile[]array{"strike": USD,: net dealer GEX at every strike with exposure, ascending by strike.
countintegerRows, normally 390 or 391 per session.
from, to, sessions[], queued[]dateRange answer: the bounds asked for, the sessions the rows come from (oldest first) and the sessions in the range not ready yet.
closing.totalsobjectpart=surfaces only: the session's closing totals, the same fields and units as totals on /levels (net_gex, call_gex, put_gex, net_volume_gex, gex_ratio, delta_exposure, vanna_exposure, charm_exposure, atm_iv).
closing.strikes[]arraypart=surfaces only: the per-strike aggregate at the close, the same row shape and units as /strikes.
/v1/symbols/{symbol}/history/chainEvery contract of a finished session with its quote, IV and Greeks at each interval: a manifest line, then one snapshot line per interval. The file a backtest replays.
symbolstringrequiredThe ticker: SPY, SPX, NDX, AAPL …
datestringrequireddefault requiredA finished session, YYYY-MM-DD.
intervalenumdefault 5m1m, 5m, 10m, 15m, 30m.
/v1/symbols/{symbol}/history/oiOpen interest per contract as published for a session's morning, with the volume traded in that session.
symbolstringrequiredThe ticker: SPY, SPX, NDX, AAPL …
datestringdefault todayA kept session, YYYY-MM-DD.
expirationstringdefault allOne expiration.
symbol, daterows[].osistringThe contract's OSI symbol.
rows[].expirationdaterows[].strikenumberUSDrows[].rightstringC or P.
rows[].open_interestintegercontractsAs published for the session's morning.
rows[].volumeintegercontractsTraded during the session (the whole session for a finished one, so far for today).
countintegerRows, ordered by expiration, strike, calls before puts. Contracts without an open-interest record are left out.
total_open_interestintegercontractsSum over the rows.