If you're searching for a 0DTE options flow API, a same-day dealer-hedging feed, an intraday gamma heatmap you can pull from code, or a SpotGamma HIRO / Skylit Heatseeker alternative with a real REST surface, this is the reference. Everything lives under one base path — GET /v1/flow/zero-dte/ on https://lab.flashalpha.com — behind a single X-Api-Key header.
Read this first. The flow family is built on a model. Dealer hedge-flow, the live GEX shift, and the setup/probability layers are estimates derived from effective open interest and aggressor-classified trades — not a window into any dealer's actual book. The JSON below uses placeholder numbers. Read the signs, trends, and probabilities as a relative, decision-grade read, not exact order flow.
Why a live 0DTE flow family exists
Classic same-day analytics are computed from settled open interest — the prior session's end-of-day OPRA book. For a contract expiring in two weeks that's fine; one day of flow barely moves the aggregate. For a contract expiring today it's the wrong input. 0DTE traders open and close all day, and that flow concentrates OI and gamma at strikes that didn't look special at 9:30. A settled-OI snapshot is anchored to yesterday's book and tends to go stale by ~10:30 ET — right when the session gets interesting.
The fix is a simulation-aware effective open interest: settled OPRA OI plus an intraday simulator delta (model confidence 0.43). The /v1/flow/* family is computed independently of the settled /v1/exposure/* family, so it shows the regime, the pin, and the dealer hedge shift moving before the next settled print exists.
The family at a glance
Six endpoints, one base path. The first three are decision-ready signals on Growth; the last three are model-input granularity on Alpha.
| Endpoint | What it answers | Plan |
|---|---|---|
snapshot/{symbol} |
Live 0DTE regime, favored setup, pin & range odds | Growth+ |
series/{symbol} |
How that regime moved through the session | Growth+ |
hedge-flow/{symbol} |
Are dealers buying or selling to stay hedged, bar by bar? | Growth+ |
heatmap/{symbol} |
Where is gamma/delta/flow concentrating, strike by strike, over time? | Alpha+ |
strike-flow/{symbol} |
Which strikes see signed aggressor delta-dollars right now? | Alpha+ |
leaderboard |
Which symbols have the hottest 0DTE flow across the market? | Alpha+ |
Supported symbols: any name with a same-day expiry — the daily majors SPY, SPX, QQQ, IWM, plus weekly Mon/Wed/Fri OPEX names on their expiry days. Outside a 0DTE session every endpoint degrades gracefully, so your poller never special-cases the weekend.
1. Snapshot — the decision layer
GET /v1/flow/zero-dte/snapshot/{symbol} (Growth+) is the one most traders start and end with. It recomputes the full regime on effective OI and adds four decision-grade blocks on top of the raw body: flow_direction, headline, setup, probabilities. Pass ?expiry=YYYY-MM-DD to point at a 1DTE/2DTE expiry.
{
"symbol": "SPY", "underlying_price": 600.42, "market_open": true,
"flow_direction": {
"label": "amplifying", "live_net_gex": 1.42e9, "flow_gex_pct_shift": 0.753,
"description": "Today's flow reinforced dealers' long-gamma position — the pin toward 600 is strengthening."
},
"headline": {
"narrative": "Pinning toward 600.00 (positive_gamma). Pin score 71/100. 64% pin prob.",
"trade_angle": "pin_trade", "severity": "watch",
"promoted": { "magnet": 600.00, "pin_score": 71, "pin_probability_pct": 0.64, "regime": "positive_gamma" }
},
"setup": {
"primary": {
"display_name": "Iron Fly", "confidence": "high",
"conditions_met": ["spot within 0.3% of magnet", "regime = positive_gamma", "pin_score > 65"],
"strikes_hint": { "short_call_strike": 601, "short_put_strike": 600, "long_call_strike": 603, "long_put_strike": 598 }
},
"anti_setups": [{ "display_name": "Long Premium / Lotto", "thesis": "Avoid — positive gamma + tight walls = unlikely >1σ move into close" }]
},
"probabilities": {
"pin": { "value": 0.64, "calibration_method": "heuristic_v1" },
"range_1sigma": { "value": 0.6827, "low": 598.38, "high": 602.46 }
}
}
Read each block:
-
flow_direction— has today's flow reinforced or weakened the dealer regime vs settled?amplifying/dampening/neutral/no_flow/regime_flip(the one to watch — net GEX changed sign). -
headline— the one-line dashboard pill.trade_angleis pin / range / breakout / low-signal;severityescalates info → watch → alert. -
setup— a rules-engine read of the textbook 0DTE plays the state supports:primary+alternatives+ explicitanti_setups. Every verdict ships itsconditions_met/conditions_failedso you can audit it. -
probabilities— calibrated odds, not raw scores.pin.valueis the probability price closes near the magnet; range_1σ/2σ are the odds of closing in band. Each tags itscalibration_method.
Outside a session the rich body is replaced by a small degraded envelope (body: null, session_closed: true), so always guard before reading body.
from flashalpha import FlashAlpha
fa = FlashAlpha("YOUR_KEY")
snap = fa.flow_zero_dte_snapshot("SPY")
if snap.get("body") is None:
print(snap.get("message", "no 0DTE session"))
else:
h, s = snap["headline"], snap["setup"]["primary"]
print(h["narrative"])
print(f" setup={s['display_name']} ({s['confidence']}) angle={h['trade_angle']}")
print(f" pin prob={snap['probabilities']['pin']['value']:.0%} flow={snap['flow_direction']['label']}")
2. Series — chart the session
GET .../series/{symbol}?bar=30s|1m|5m|15m&minutes=1-390 (Growth+) returns the same regime metrics as a time series, one row per bar: spot, net GEX/DEX, gamma flip, walls, magnet, pin score & probability, regime, ATM IV, charm-dollars-per-hour, and cumulative dealer hedge-flow split into calls/puts/combined. This is the endpoint behind an intraday "0DTE positioning" chart.
3. Hedge-flow — dealer pressure, bar by bar
GET .../hedge-flow/{symbol}?side=all|calls|puts (Growth+) is the signed delta-dollars dealers are inferred to be transacting each bar to stay hedged, plus a running cumulative. A run of same-signed, accelerating bars alongside a same-signed price move is the fingerprint of a gamma squeeze building. Split legs with side=calls vs side=puts to separate upside call-chasing from downside protection-driven hedging.
4–5. Heatmap & strike-flow — the per-strike picture
heatmap/{symbol} (Alpha+) is the strike-by-time value matrix — the grid SpotGamma TRACE and Skylit Heatseeker render — returned as JSON. strikes_grid is the y-axis; each bar's values is parallel by index, so you get values[bar][strike]. Pick the lens with metric (gex/dex/vex/chex/oi/signed_flow) and mode=raw (level) or mode=delta (where new positioning is landing).
strike-flow/{symbol} (Alpha+) gives the signed aggressor flow underneath: per bar, three parallel arrays — signed_delta_dollars, signed_gamma_dollars, contracts — against the same strikes_grid. This is the model input the hedge-flow and heatmap layers aggregate from.
6. Leaderboard — the hottest names
GET .../leaderboard?metric=heat|pin_risk|abs_flow|charm_intensity&n=1-100 (Alpha+) ranks the whole 0DTE landscape by one metric, so you scan the market for names worth a snapshot call. heat = hedge-flow normalized by net GEX (the "something's happening here" sort).
One session, end to end
-
Open (9:30–10:00 ET) —
leaderboardwithmetric=heatto find where flow is concentrated, thensnapshotthe top names.headline.trade_anglesays pin / range / breakout. -
Setup (10:00–12:00) — when
setup.primaryhitshighconfidence with noconditions_failed,strikes_hinthands you the legs. If your idea is inanti_setups, the model is telling you conditions are against it. -
Midday (12:00–14:30) — poll
hedge-flowandflow_direction.amplifying+ rising cumulative = dealers chasing, fade-the-range gets riskier.dampeningsupports the condor/fly thesis. -
Power hour (14:30–16:00) —
severityhitsalertas a pin tightens or spot tests the flip. Tighten the poll interval;pin.valueandcharm_intensityare most informative in the final hour.
vs HIRO, Heatseeker, Unusual Whales
The space is dominated by dashboards. FlashAlpha ships the same class of signal as a developer-first API and adds a trader-product layer (headline / setup / probabilities) the raw feeds don't: signed dealer hedge-flow time series (HIRO's read), the strike-by-time heatmap as JSON (TRACE/Heatseeker's grid), a numeric pin score + calibrated odds, a rules-engine setup classifier, a cross-symbol leaderboard, and SDKs in Python/JS/C#/Go/Java. The data is FlashAlpha's own — not resold from any of those vendors.
Pricing
| Plan | Price | Snapshot / Series / Hedge-Flow | Heatmap / Strike-Flow / Leaderboard | Rate limit |
|---|---|---|---|---|
| Free | $0 | No | No | 5/day |
| Basic | from $63/mo | No | No | 100/day |
| Growth | from $239/mo | Yes | No | 2,500/day |
| Alpha | from $1,199/mo | Yes | Yes | Unlimited |
Below the required plan returns 403 tier_restricted with current and required plan names. Try any endpoint in the playground before writing code:
flashalpha.com
Top comments (0)