Zero-DTE Flow Snapshot API - Live 0DTE Dealer Positioning - FlashAlpha Lab API
Lab API Snapshot

Zero-DTE Flow Snapshot API

Current live 0DTE dealer-positioning shape for a symbol, computed on effective OI (settled + intraday simulator delta), returning the full zero-DTE exposure response plus a flow_direction block describing how flow has shifted dealer GEX since open.

Endpoint

GET /v1/flow/zero-dte/snapshot/{symbol}
Auth required (X-Api-Key) Rate Limited: Yes Growth plan+

Parameters

Name In Required Default Description
symbol path yes - Underlying symbol (e.g. SPY, SPX, QQQ, IWM)
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/flow/zero-dte/snapshot/SPY"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/flow/zero-dte/snapshot/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(data["flow_direction"]["label"])
const resp = await fetch(
  "https://lab.flashalpha.com/v1/flow/zero-dte/snapshot/SPY",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(data.flow_direction.label);

Response

The response is the same JSON shape as /v1/exposure/zero-dte/{symbol} (regime, exposures, expected_move, pin_risk, hedging, decay, vol_context, flow, levels, liquidity, strikes) PLUS an extra flow_direction block. The flow_direction block is shown below.

{
  "symbol": "SPY",
  "underlying_price": 522.34,
  "as_of": "2026-05-27T15:30:12Z",
  "market_open": true,
  // ...all ZeroDteResponse fields...
  "flow_direction": {
    "label": "amplifying",           // no_flow | neutral | amplifying | dampening | regime_flip
    "settled_net_gex": -1.2e9,
    "live_net_gex": -1.45e9,
    "flow_gex_adjustment": -2.5e8,
    "flow_gex_pct_shift": 0.208,     // null when settled GEX is 0
    "contracts_with_flow": 412,
    "total_abs_delta_contracts": 18432,
    "description": "Flow has amplified dealer GEX by 20.8% since open. ..."
  }
}

Two degraded shapes also return 200 OK so clients can switch on the flags. When the symbol has no 0DTE expiry today: { "symbol": "TSLA", "no_zero_dte": true, "next_zero_dte_expiry": "2026-05-29", "message": "..." }. When the market is closed: { "symbol": "SPY", "session_closed": true, "last_session": "2026-05-23", "message": "..." }.

Key Response Fields

Field Type Description
flow_direction.labelstringOne of no_flow, neutral, amplifying, dampening, regime_flip
flow_direction.settled_net_gexnumberNet GEX from the morning settled OI
flow_direction.live_net_gexnumberNet GEX on effective (settled + intraday) OI
flow_direction.flow_gex_adjustmentnumberLive minus settled net GEX (the flow contribution)
flow_direction.flow_gex_pct_shiftnumber/nullPercent shift in GEX from flow; null when settled GEX is 0
flow_direction.contracts_with_flowintegerNumber of contracts that saw intraday flow
flow_direction.total_abs_delta_contractsintegerTotal absolute intraday delta contracts
flow_direction.descriptionstringHuman-readable summary of the flow shift

Errors

Status Description
403tier_restricted - caller's plan is below Growth
404symbol_not_found - symbol is unknown or has no live data

About

The Zero-DTE Flow snapshot gives a live, intraday-aware view of today's 0DTE dealer-positioning landscape. It is computed on effective OI - settled open interest plus the simulator's intraday delta - so the response reflects how dealer GEX has shifted since open.

This differs from /v1/exposure/zero-dte/, which uses the morning OPRA broadcast and goes stale by 10:30 AM ET. The added flow_direction block summarizes whether intraday flow is amplifying, dampening, or flipping the morning regime.

Common Use Cases

  • Read the live 0DTE regime from live_net_gex without the 10:30 AM staleness of the settled exposure endpoint, switching strategy on its sign
  • Check flow_direction.label to see whether intraday flow is amplifying, dampening, or producing a regime_flip of dealer GEX, and gate trade-with versus fade decisions on it
  • Quantify the flow contribution with flow_gex_adjustment and flow_gex_pct_shift to judge how far the morning settled view has drifted
  • Lean on the embedded pin_risk block alongside the live regime to find the magnet strike price is most likely to settle into at the close
  • Confirm the move budget with the expected_move block before sizing same-day directional or premium-selling structures
  • Branch on the no_zero_dte and session_closed flags to handle off-session requests or symbols with no 0DTE expiry today

Related reading

Complementary endpoints

Ready to build?

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