- Live API Reference
- Flow Analytics
- Flow DEX
Flow DEX API
Live delta exposure: net total and per-strike profile, computed on effective OI.
Endpoint
X-Api-Key)
Rate Limited: Yes
Plan: Growth+
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. |
ES=F or NQ=F and URL-encode the = as %3D - e.g. /v1/flow/dex/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 plan. See the futures hub.
Request
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/dex/SPY"import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/dex/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
resp.raise_for_status()
data = resp.json()
print(f"Live net DEX: ${data['live_net_dex']:,.0f}")const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/dex/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 net DEX: $${data.live_net_dex.toLocaleString()}`);Try it live
Runs on live market data and uses 1 request from your daily quota.
Response
{
"symbol": "SPY",
"as_of": "2026-10-30T13:45:43.8290563Z",
"underlying_price": 760.425,
"expiry": null,
"live_net_dex": -30692234816,
"strikes": [
{
"strike": 50,
"call_dex": 5036089,
"put_dex": -175043.24,
"net_dex": 4861045
},
{
"strike": 55,
"call_dex": 149360.62,
"put_dex": -3324.12,
"net_dex": 146036.5
}
],
"endpoint_version": "2026.09.30",
"data_as_of": {
"node": "fa5",
"equity_feed": "2026-10-30T13:45:43.822Z",
"equity_options_feed": "2026-10-30T13:45:43Z",
"index_feed": "2026-10-30T13:45:43.102Z",
"index_options_feed": "2026-10-30T13:45:42Z",
"futures_feed": "2026-10-30T13:45:28.31Z",
"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
| Field | Type | Description |
|---|---|---|
symbol | string | Underlying symbol |
as_of | string | ISO 8601 timestamp |
underlying_price | number | Current price of underlying |
live_net_dex | number | Net delta exposure across strikes, computed on effective OI |
strikes | array | Per-strike call DEX, put DEX, and net DEX on effective OI |
expiry | string | null | The expiry filter from the request, null when it was omitted |
strikes[].strike | number | Strike price |
strikes[].call_dex | number | Call delta exposure (USD) |
strikes[].put_dex | number | Put delta exposure (USD) |
strikes[].net_dex | number | Net delta exposure (USD) |
endpoint_version, data_as_of | string, object | Response envelope, see Response envelope. |
Errors
| Status | Error | When |
|---|---|---|
400 | invalid_expiry | expiry is not a valid yyyy-MM-dd date. |
401 | - | Missing or invalid X-Api-Key. The body is empty; check the status code before parsing JSON. |
403 | tier_restricted | Your plan is below Growth. The body includes current_plan and required_plan. |
404 | no_data | No data for the symbol. |
429 | Quota exceeded | Daily 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 DEX
Flow DEX is the live counterpart to /v1/exposure/dex. The settled version uses morning OPRA-broadcast OI and stays frozen all day; this endpoint runs the same delta-exposure math on the OI simulator's effective open interest, so net DEX and the per-strike profile keep moving as positioning shifts. Use it to track directional dealer hedging pressure in real time.
Common Use Cases
- Read directional bias off
live_net_dex- track the sign and magnitude intraday and flag the moment net DEX flips, marking a shift in net dealer directional positioning - Estimate hedging flow with GEX - combine
live_net_dexwith live net GEX to size the share volume dealers must trade to stay delta-neutral as spot moves - Detect skew from per-strike DEX - compare
strikes[].call_dexvsstrikes[].put_dexto surface call-skewed (upside-chasing) or put-skewed (downside-hedged) positioning - Locate the directional center of gravity - scan
strikes[].net_dexfor the strikes carrying the heaviest directional exposure that price tends to gravitate around - Diff against settled DEX - contrast net and per-strike DEX with
/v1/exposure/dexto see where directional positioning has actually moved since the open - Confirm GEX signals - use the DEX direction to corroborate a regime read from Live Flow GEX before committing to a directional trade
Related
Related reading
- Flow vs exposure endpoints: which GEX API to use - when to reach for live flow vs the settled exposure endpoints
- Effective open interest: live GEX from flow - the effective-OI methodology this DEX is recomputed on
Complementary endpoints
- Delta Exposure (DEX) - the settled morning baseline to diff this live DEX against
- Live Flow GEX - live gamma to pair with directional delta exposure
- Live Flow Levels - walls and flip that frame where directional pressure builds
- Flow Summary - a one-call digest of live positioning across the flow endpoints
Unlock DEX, VEX and CHEX with Basic
Everything in Free, plus:
- DEX, VEX and CHEX exposure
- Full max pain
- ETF & index symbols SPY, QQQ, SPX, VIX
Go full-chain with Growth
Everything in Basic, plus:
- Full-chain GEX Every expiration
- 0DTE analytics
- Exposure summary & AI narrative
- CME futures & live screener
Add history and vol surfaces with Alpha
Everything in Growth, plus:
- Historical API replay Since 2017
- SVI vol surfaces
- VRP analytics
- Greeks surfaces Vanna, charm, volga and speed grids