Flow Live Bundle API - One-Call Flow Analytics - FlashAlpha Lab API
Lab API Flow Live Bundle

Flow Live Bundle API

One-call convenience bundle: simulator state, live levels, pin risk, live GEX/DEX totals, and the full flow-adjusted dealer-risk join.

Endpoint

GET /v1/flow/live/{symbol}
Auth required (X-Api-Key) Rate Limited: Yes Alpha 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
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/flow/live/SPY"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/flow/live/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"Live GEX: ${data['live_gex']:,.0f}")
print(f"Pin risk: {data['live_pin_risk']}/100")
print(f"Direction: {data['flow_adjusted_dealer_risk']['flow_direction']}")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/flow/live/SPY",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`Live GEX: $${data.live_gex.toLocaleString()}`);
console.log(`Pin risk: ${data.live_pin_risk}/100`);
console.log(`Direction: ${data.flow_adjusted_dealer_risk.flow_direction}`);

Response

{
  "symbol": "SPY",
  "as_of": "2026-05-12T18:42:10Z",
  "underlying_price": 597.505,
  "expiry": "2026-05-15",
  "contracts": 5240,
  "contracts_with_flow": 1820,
  "official_oi": 14820000,
  "simulated_oi": 14832450,
  "intraday_oi_delta": 12450,
  "oi_delta_confidence": 0.43,
  "effective_oi": 14835100,
  "live_gex": 3120000000,
  "live_gex_delta": -480000000,
  "live_gamma_flip": 595.50,
  "live_call_wall": 600.0,
  "live_put_wall": 595.0,
  "live_max_pain": 597.0,
  "live_pin_risk": 72,
  "flow_adjusted_dealer_risk": {
    "settled_net_gex": 2850000000,
    "live_net_gex": 3120000000,
    "flow_gex_adjustment": 270000000,
    "flow_gex_pct_shift": 0.094,
    "settled_net_dex": -450000000,
    "live_net_dex": -480000000,
    "flow_dex_adjustment": -30000000,
    "flow_dex_pct_shift": -0.066,
    "total_abs_delta_contracts": 18420,
    "flow_direction": "amplifying",
    "description": "Flow has amplified dealer GEX by 9.4% since open. 1820 contracts saw 18,420 contract-units of repositioning."
  }
}

Key Response Fields

live_gex_delta is net DEX (the field is flattened from the underlying dex calculator); all other fields carry the same meaning as the dedicated endpoints.

Field Type Description
symbolstringUnderlying symbol
as_ofstringISO 8601 timestamp
underlying_pricenumberCurrent price of underlying
contracts / contracts_with_flownumberChain size and how many contracts have moved (see Flow OI)
official_oi / simulated_oi / effective_oinumberSame as Flow OI
intraday_oi_delta / oi_delta_confidencenumberSimulator's signed per-contract delta and confidence weight
live_gexnumberNet dealer GEX on effective OI (matches Flow GEX)
live_gex_deltanumberNet DEX on effective OI (flattened from the underlying dex calculator)
live_gamma_flip / live_call_wall / live_put_wall / live_max_painnumberSame as Flow Levels
live_pin_risknumberComposite pin-risk score (see Flow Pin Risk)
flow_adjusted_dealer_riskobjectFull settled-vs-live join with direction label and human description (see Flow Dealer Risk)

About Flow Live Bundle

The Live Bundle materialises the live chain once on the server and returns OI simulator state, live levels, pin risk, live GEX/DEX totals, and the full flow-adjusted dealer-risk join in one response. It's cheaper than calling each /v1/flow/* endpoint individually and removes any cross-endpoint drift from microsecond-level updates between calls. Use it whenever you'd otherwise be fanning out five or six flow requests per symbol per refresh.

Common Use Cases

  • Render a flow dashboard in one call - hydrate OI state, live levels, pin risk, and live GEX/DEX from a single bundle response per symbol per tick instead of fanning out
  • Rank a watchlist - poll the bundle across symbols and sort by pin_risk, flow_direction, or the dealer live-GEX shift to surface the most active names
  • Guarantee snapshot consistency - every field is computed on the same materialised chain, so live GEX and live pin risk can't drift apart between microsecond updates
  • Stretch a daily request budget - collapse ~6 /v1/flow/* hits into one bundle call to stay under plan quotas while refreshing more often
  • Back a caching layer - cache the bundle once server-side and serve the OI, levels, pin-risk, and GEX/DEX views to multiple downstream consumers without re-fetching
  • Drive flow-confirmed entries - read flow_direction and the dealer-risk join together so an alert only fires when positioning and levels agree

Related reading

Complementary endpoints

  • Flow Summary - the one-line headline when you don't need the full bundle
  • Flow Signals - scored unusual prints to pair with the bundle's positioning view
  • Live Flow GEX - the standalone live dealer-gamma component on its own
  • Live Flow DEX - the standalone live dealer-delta component on its own

Ready to build?

Get your free API key and start pulling live options data in 30 seconds.