GEX (v2)

Api V2 Gex Strike-Profile-Timeseries Get

Aligned per-bucket Strike-Profile timeseries used by the rewind chart.

Returns window_units time buckets ASCENDING (most recent last) for symbol at the requested timeframe. Each bucket carries:

  • the underlying OHLC inside the bucket (from underlying_quotes);
  • the bucket's gamma_flip from the representative gex_summary row;
  • call_wall / put_wall computed live for the bucket from the same (expiration-filtered, summed-by-strike) gamma rows the bucket's bars render, against the bucket's own close — via the canonical :func:src.analytics.walls.compute_call_put_walls helper (single source of record). expirations=all yields the cross-expiration aggregate walls (matches /api/gex/summary); a specific set yields walls scoped to that set's gamma alone;
  • pin_strike / pin_confidence as of the bucket's close, from the representative gex_summary row. Unlike the walls and the flip these are NOT scoped by expirations: the pin is 0DTE-by-construction and whole-chain by definition, so it reads the same in every expiration scope (matching the live surfaces, where the pin does not move with the Expiry selector). Both are null when the bucket has no active pin and on rows written before the pin columns shipped — draw no line, never a zero;
  • every strike's gamma exposure in the same dollar-GEX units /api/gex/by-strike uses (γ × OI × 100 × S² × 0.01), evaluated against the bucket's own close so the surface matches each bucket's candlestick.

expirations=all sums strike gamma / OI across all expirations per (bucket, strike). A comma-separated list of YYYY-MM-DD dates restricts the strikes payload to that set (summed across the set). For a specific set the bucket gamma_flip is recomputed from the summed-by-strike gamma (the aggregate spot-shift flip can't be rebuilt for a subset); all keeps the canonical gex_summary flip. Names in the strikes payload follow the request shape (call_gamma / put_gamma / net_gamma) but the values are the dollar-GEX quantities, not raw gamma — see the per-row docstring on StrikeProfileStrike. Any unparseable entry is a 400.

delay_minutes ends the window at the newest bucket at least that old (see src/api/delayed_read.py).

get/api/v2/gex/strike-profile-timeseries

Request

  • Base URL: https://api.zerogex.io (the document declares no server; this is the origin it was published from)
  • URL: https://api.zerogex.io/api/v2/gex/strike-profile-timeseries
  • Auth: HTTP bearer

Query parameters

symbolstring
timeframe'1min' | '5min' | '15min'
window_unitsinteger
expirationsstring

'all' to aggregate strikes across every expiration (same basis as the live /api/gex/by-strike with Expiry All), or a comma-separated list of YYYY-MM-DD expiration dates to restrict the strikes payload to that set (summed across the set).

delay_minutesinteger

Serve the newest data that is at least this many minutes old instead of the latest. 0, the default, is the live read.

Response

Successful Response

Changes

No recorded changes to this operation across all 1 revision of this API.