Flow Live Bundle API - One-Call Flow Analytics | FlashAlpha
  1. 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 Plan: Alpha+

Parameters

Name In Type Required Default Description
symbol path string required - Underlying symbol
expiry query date all expiries Filter chain to a single expiry (yyyy-MM-dd). Omit to aggregate across all expiries. Invalid values return 400 invalid_expiry.
polarity query enum convention convention (default, unchanged) or flow. flow re-signs the bundle's aggregate gamma (live_gex) by the session dealer-inventory change inferred from the classified tape, Lee-Ready style; DEX and the dealer-risk block stay convention-signed. Bad value returns 400 invalid_polarity. See flow-signed GEX.

Request

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"}
)
resp.raise_for_status()
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" } }
);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
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}`);

Try it live

Runs on live market data and uses 1 request from your daily quota.

GET

Response

{
  "symbol": "SPY",
  "as_of": "2026-10-30T13:45:46.3677713Z",
  "underlying_price": 760.37,
  "expiry": null,
  "contracts": 12318,
  "contracts_with_flow": 1380,
  "official_oi": 18161399,
  "simulated_oi": 18186045,
  "intraday_oi_delta": 24646,
  "oi_delta_confidence": 0.43,
  "effective_oi": 18187619,
  "live_gex": -15619418952,
  "live_gex_delta": -14630791,
  "live_gamma_flip": 769.8723,
  "gamma_flip_status": "available",
  "live_call_wall": 800,
  "live_put_wall": 760,
  "live_max_pain": 765,
  "live_pin_risk": 9,
  "flow_adjusted_dealer_risk": {
    "settled_net_gex": -15604788161,
    "live_net_gex": -15619418952,
    "flow_gex_adjustment": -14630791,
    "flow_gex_pct_shift": -0.000938,
    "settled_net_dex": -28805203513,
    "live_net_dex": -29043560206,
    "flow_dex_adjustment": -238356693,
    "flow_dex_pct_shift": -0.008275,
    "total_abs_delta_contracts": 90836,
    "flow_direction": "neutral",
    "description": "Flow has not materially shifted dealer GEX since open (-0.1% < 5% threshold)."
  },
  "endpoint_version": "2026.09.30",
  "data_as_of": {
    "node": "fa5",
    "equity_feed": "2026-10-30T13:45:46.705Z",
    "equity_options_feed": "2026-10-30T13:45:45Z",
    "index_feed": "2026-10-30T13:45:46.132Z",
    "index_options_feed": "2026-10-30T13:45:45Z",
    "futures_feed": "2026-10-30T13:45:45.68Z",
    "futures_options_feed": "2026-10-30T13:45:27.486Z",
    "flow_feed": "2026-10-30T13:45:00Z",
    "oi_feed": "2026-10-29T20:00:00Z",
    "macro_feed": "2026-10-29T21:00:20Z"
  }
}

Sending request…

See this endpoint on live data

Send this exact request and the real response shows up here, right next to the example.

Response Fields

live_gex_delta is the GEX change that intraday flow accounts for (equal to flow_adjusted_dealer_risk.flow_gex_adjustment); 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_deltanumberGEX change from intraday flow, equal to flow_adjusted_dealer_risk.flow_gex_adjustment. Net DEX is flow_adjusted_dealer_risk.live_net_dex
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)
expirystring | nullThe expiry filter from the request, null when it was omitted
gamma_flip_statusstringavailable when gamma_flip is a certified level; any other value means the level is unverified or missing. See GEX.
endpoint_version, data_as_ofstring, objectResponse envelope, see Response envelope.

Fields of flow_adjusted_dealer_risk

Field Type Description
flow_adjusted_dealer_risk.settled_net_gexnumberFlow adjusted dealer risk: settled net GEX
flow_adjusted_dealer_risk.live_net_gexnumberFlow adjusted dealer risk: live net GEX
flow_adjusted_dealer_risk.flow_gex_adjustmentnumberFlow adjusted dealer risk: flow GEX adjustment
flow_adjusted_dealer_risk.flow_gex_pct_shiftnumberFlow adjusted dealer risk: flow GEX (%) shift
flow_adjusted_dealer_risk.settled_net_dexnumberFlow adjusted dealer risk: settled net DEX
flow_adjusted_dealer_risk.live_net_dexnumberFlow adjusted dealer risk: live net DEX
flow_adjusted_dealer_risk.flow_dex_adjustmentnumberFlow adjusted dealer risk: flow DEX adjustment
flow_adjusted_dealer_risk.flow_dex_pct_shiftnumberFlow adjusted dealer risk: flow DEX (%) shift
flow_adjusted_dealer_risk.total_abs_delta_contractsnumberFlow adjusted dealer risk: total abs delta contracts
flow_adjusted_dealer_risk.flow_directionstringFlow adjusted dealer risk: flow direction
flow_adjusted_dealer_risk.descriptionstringPlain-English description

Errors

Status Error When
400invalid_expiryexpiry is not a valid yyyy-MM-dd date.
400invalid_polaritypolarity is not convention or flow.
401-Missing or invalid X-Api-Key. The body is empty; check the status code before parsing JSON.
403tier_restrictedYour plan is below Alpha. The body includes current_plan and required_plan.
404no_dataNo data for the symbol.
429Quota exceededDaily quota used up. Retry-After gives the seconds until the reset at 00:00 UTC. Rejected requests (including 403) count toward the quota.

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 with FlashAlpha?

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

No credit card required Setup in 60 seconds Secure & reliable