Developers menu

Developers / LIVE / Level history of a day

Markdown copy

Level history of a day

One day's price, flip, call wall, put wall and net gamma as columns and rows: SPX and ES one row per 10 seconds, tickers, NQ and RTY one per five-minute book.

GET/api/v1/history
Plan LIVEKey scope liveLimit 120 a minute per key; the last 90 days, older with DATASETVersion 1.0.0Since 2026-09-30

This endpoint serves

Plan: LIVE. LIVE: today's session every second, alerts, ASK, the levels API and the platform integrations, and 5 LAB credits a month. Every finished session is free in REPLAY. Pricing.

Parameters

NameWhat it doesDefaultError
symrequiredquery · stringOne symbol: SPX, ES, NQ, RTY (or MES, MNQ, M2K), a dated contract such as ESH27, or a ticker from /api/v1/symbols.missing_sym
dayquery · stringYYYY-MM-DD, within the last 90 days; older with the DATASET licence.the running or most recent sessionbad_day, history_too_old
contractquery · stringFutures: a dated contract in the two weeks before a roll, e.g. ESH27. The levels move by that contract's own basis.the front quarterlycontract_not_live
errorsquery · 200200: an error answers 200 with the same body and the real status in X-FirmTape-Status, for clients that cannot read a status.
keyquery · stringLegacy: the key in the address, for platforms that cannot send headers. Prefer the header.

Response

Columns and rows.

FieldMeaningUnit
symstringThe symbol.
daystringThe ET trading day.
book"volume"Always volume.
step10s | 5m10s or 5m.
unitstringNet gamma's unit.
unit_textstringThe unit in words.
columnsarrayt, price, flip, call_wall, put_wall, net_gamma.
rowsarrayOne row per step: the ET time, then the columns' values (index points; net gamma in unit).
contractstring | nullFutures: the contract.
basisobjectFutures: the basis as it stood at each row.
basis.indexstringThe index.
basis.rulestringHow the basis is made.
basis.firstnumber | nullBasis at the first row.index points
basis.lastnumber | nullBasis at the last row.index points
basis.notestringIn words.

Errors

StatusCodeWhat to do
400missing_sym, bad_dayA parameter is wrong. Pass sym, one symbol or a comma list.
401no_key, bad_keyNo key, or an unknown or revoked one. Send Authorization: Bearer <key> with a key of the product's scope.
403live_required, history_too_oldNo LIVE plan, or a day older than 90 days without DATASET. Start or renew LIVE; pricing names the page.
404unknown_symbol, no_data, no_basis, contract_not_liveNo such symbol, or no series for that day. Pick one from GET /api/v1/symbols.
429rate_limited, too_many_placesOver a limit. Wait Retry-After seconds; poll with If-None-Match, a 304 is free.

Every code: Errors.

Caching

Answers carry an ETag: send it back as If-None-Match and an unchanged reading answers 304 with no body, not counted against the limit.

Changes

  • 2026-10-05 The last 90 days for an account key; older days answer history_too_old unless the account holds DATASET.
  • 2026-09-30 Added.

OpenAPI operation getHistory in /docs/developers/openapi.json.

Measurements of dealer positioning, never a forecast or a trade call. This page is built from FirmTape's public contract, the same files the OpenAPI document is built from; the tests hold them against the route code. Markdown: /docs/developers/live/history.md.