Flow GEX API
Live gamma exposure: net total, sign label, gamma flip, and per-strike profile recomputed on effective OI.
ES=F or NQ=F and URL-encode the = as %3D - e.g. /v1/flow/gex/ES%3DF. Flow analytics recompute on intraday effective OI; options-on-futures are priced with Black-76 ($50/pt ES, $20/pt NQ). CME futures and flow are Growth-tier. See the futures hub.
Endpoint
X-Api-Key)
Rate Limited: Yes
Growth plan+
Parameters
| Name | In | Required | Default | Description |
|---|---|---|---|---|
symbol |
path | yes | - | Underlying symbol |
expiry |
query | no | all expiries | Filter chain to a single expiry (yyyy-MM-dd). Omit to aggregate across all expiries |
polarity |
query | no | convention |
convention (default, calls +, puts -, unchanged) or flow. flow signs each strike's gamma by the measured net dealer position from quote-rule NBBO aggressor classification, Lee-Ready style (dealer_pos = sells − buys), so net_gex > 0 = dealers net long gamma. Requires Alpha plan+. Adds per-strike call_net_customer/put_net_customer and call_dealer_pos/put_dealer_pos. Bad value returns 400 invalid_polarity. See flow-signed GEX. |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/gex/SPY"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/gex/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"Live net GEX: ${data['live_net_gex']:,.0f} ({data['live_net_gex_label']})")
print(f"Live gamma flip: {data['live_gamma_flip']}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/gex/SPY",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`Live net GEX: $${data.live_net_gex.toLocaleString()} (${data.live_net_gex_label})`);
console.log(`Live gamma flip: ${data.live_gamma_flip}`);
Response
{
"symbol": "SPY",
"as_of": "2026-05-12T18:42:10Z",
"underlying_price": 597.505,
"expiry": "2026-05-15",
"live_net_gex": 3120000000,
"live_net_gex_label": "positive",
"live_gamma_flip": 595.50,
"strikes": [
{
"strike": 595.0,
"call_gex": 13800000,
"put_gex": 9600000,
"net_gex": 23400000,
"call_oi": 16200,
"put_oi": 12700,
"call_volume": 320,
"put_volume": 240,
"call_oi_change": 1200,
"put_oi_change": -150
}
]
}
Key Response Fields
| Field | Type | Description |
|---|---|---|
symbol | string | Underlying symbol |
as_of | string | ISO 8601 timestamp |
underlying_price | number | Current price of underlying |
live_net_gex | number | Sum of net_gex across strikes, computed on effective OI |
live_net_gex_label | string | positive or negative |
live_gamma_flip | number | Strike where the cumulative live profile crosses zero |
strikes | array | Per-strike GEX, OI, and volume on effective OI |
strikes[].call_oi_change / put_oi_change | number | Day-over-day delta from prior settled snapshot (nullable) |
About Flow GEX
Flow GEX is the live counterpart to /v1/exposure/gex. The settled endpoint uses morning OPRA-broadcast OI and stays frozen all session; this endpoint runs the exact same gamma-exposure math on the OI simulator's effective open interest, so the per-strike profile, net total, and gamma flip all drift intraday as positioning fills, exits, and rolls. Use it when you need a dealer-gamma snapshot that actually reflects mid-session reality.
Flow Polarity: Dealer-Position Signing
By default GEX is convention-signed (calls positive, puts negative), which describes the market's structural gamma but never says which side dealers are actually on. Add ?polarity=flow to sign each strike's gamma by the measured dealer position from quote-rule NBBO aggressor classification, Lee-Ready style (dealer_pos = sells − buys), so net_gex > 0 means dealers are net long gamma (pinning, volatility suppression) and net_gex < 0 means net short gamma (volatility amplification). Convention mode is Growth plan+; polarity=flow requires Alpha plan+. Omit the parameter and the response is unchanged.
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/gex/SPY?polarity=flow"
In flow mode the response adds a top-level "polarity": "flow" plus the per-strike call_net_customer/put_net_customer (customer buys minus sells) and call_dealer_pos/put_dealer_pos (dealer inventory, -net_customer) diagnostics. Strikes with no classified trades contribute 0. It uses no open interest, no opening-fraction constant, and no decay heuristics, and it works historically via ?at=. Full explainer: flow-signed GEX: are dealers actually long or short gamma?
Common Use Cases
- Gate strategy on
live_net_gex_label- switch to mean-reversion playbooks when it readspositiveand trend/breakout playbooks when it flipsnegative, all on live effective OI rather than the morning snapshot - Alert when
live_gamma_flipcrosses spot - diff the live flip strike againstunderlying_priceand fire the moment dealers shift from dampening to amplifying moves - Render a live GEX-by-strike heatmap - plot
strikes[].net_gexacross the chain to expose the walls and pockets that act as intraday support/resistance - Size hedging pressure from
live_net_gex- a larger absolute net GEX implies tighter dealer hedging and smaller realized ranges, so calibrate stops and targets to the magnitude - Spot repositioning via
call_oi_change/put_oi_change- per-strike day-over-day OI deltas reveal where new gamma is being built or unwound since the settled snapshot - Diff against settled GEX - contrast per-strike call/put GEX with
/v1/exposure/gexto quantify how far intraday flow has moved the dealer book
Related
Related reading
- Flow vs exposure endpoints: which GEX API to use - when to reach for live flow GEX vs the settled exposure endpoint
- Effective open interest: live GEX from flow - how the OI simulator produces the effective OI this endpoint runs on
Complementary endpoints
- Gamma Exposure (GEX) - the settled morning baseline to diff this live profile against
- Live Flow Levels - the flip and walls distilled out of this same live profile
- Flow Summary - a one-call digest of live positioning across the flow endpoints
- Live Flow DEX - directional dealer positioning to pair with live gamma
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.