Zero-DTE Flow Series API - Intraday 0DTE Time Series - FlashAlpha Lab API
Lab API Series

Zero-DTE Flow Series API

An intraday time series of today's 0DTE flow, one bar per sampled interval, for charting headline metrics (net GEX/DEX, gamma flip, walls, magnet, pin score/probability, regime, ATM IV, charm) and cumulative dealer hedge-flow over the session.

Endpoint

GET /v1/flow/zero-dte/series/{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). Trimmed and upper-cased.
bar query no 30s Bar size. Allowed: 30s, 1m, 5m, 15m. Anything else returns 400 invalid_bar. Raw storage is 30s; larger sizes are downsampled last-in-bucket.
minutes query no 60 Lookback window in minutes. Clamped to 1-390 (one full RTH session).
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/flow/zero-dte/series/SPY?bar=1m&minutes=120"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/flow/zero-dte/series/SPY",
    params={"bar": "1m", "minutes": 120},
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(len(data["bars"]))
const resp = await fetch(
  "https://lab.flashalpha.com/v1/flow/zero-dte/series/SPY?bar=1m&minutes=120",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(data.bars.length);

Response

{
  "symbol": "SPY",
  "expiration": "2026-06-05",          // today (ET); the 0DTE expiry being sampled
  "as_of": "2026-06-05T18:45:12Z",     // server time the response was built (UTC)
  "bar_size": "1m",                    // echoes the requested bar
  "bars": [
    {
      "t": "2026-06-05T18:44:00Z",     // bar timestamp (UTC, snapped to :00/:30 ET upstream)
      "spot": 590.42,
      "net_gex": 1842000000,
      "net_dex": 48200000000,
      "gamma_flip": 588.50,            // nullable
      "call_wall": 595.0,              // nullable
      "put_wall": 585.0,               // nullable
      "magnet": 590.0,                 // nullable
      "pin_score": 82,                 // 0-100
      "pin_probability_pct": 64.1,     // nullable
      "regime": "positive_gamma",
      "atm_iv": 0.123,                 // nullable
      "charm_dollars_per_hour": -3856000, // nullable
      "hedge_flow_call_cumulative": 18432000,  // $-units, since session open
      "hedge_flow_put_cumulative": -9210000,
      "hedge_flow_cumulative_all": 9222000     // call + put cumulative
    }
    // ... one entry per downsampled bucket in the window, ascending by t
  ]
}

There is no separate no_zero_dte / session_closed envelope here. When the symbol has no 0DTE samples today, the endpoint still returns 200 with the normal wrapper and an empty bars array.

Key Response Fields

Field Type Description
expirationstringToday's 0DTE expiry being sampled (ET)
as_ofstringServer time the response was built (UTC)
bar_sizestringEchoes the requested bar size
bars[].tstringBar timestamp (UTC, snapped to :00/:30 ET upstream)
bars[].spotnumberUnderlying spot at the bar
bars[].net_gexnumberNet gamma exposure
bars[].net_dexnumberNet delta exposure
bars[].gamma_flipnumber/nullGamma flip level
bars[].call_wallnumber/nullCall wall level
bars[].put_wallnumber/nullPut wall level
bars[].magnetnumber/nullMagnet level
bars[].pin_scoreintegerPin score, 0-100
bars[].pin_probability_pctnumber/nullPin probability percent
bars[].regimestringGamma regime label
bars[].atm_ivnumber/nullAt-the-money implied volatility
bars[].charm_dollars_per_hournumber/nullCharm in dollars per hour
bars[].hedge_flow_call_cumulativenumberCumulative call hedge-flow ($-units) since session open
bars[].hedge_flow_put_cumulativenumberCumulative put hedge-flow ($-units) since session open
bars[].hedge_flow_cumulative_allnumberCall + put cumulative hedge-flow

Errors

Status Description
400invalid_bar - bar was not one of 30s / 1m / 5m / 15m
403tier_restricted - caller is below the Growth plan

About

The series endpoint returns an intraday time series of today's 0DTE flow - one bar per sampled interval - for charting headline metrics and cumulative dealer hedge-flow over the session.

Bars are read from the raw sampler tier (snapped to :00/:30 ET), windowed to the last minutes, then downsampled to the requested bar size by keeping the last sample in each bucket, so cumulative values stay current.

Common Use Cases

  • Chart net_gex, net_dex, and gamma_flip over today's session to see the dealer-positioning landscape evolve bar by bar
  • Track how call_wall, put_wall, and magnet migrate intraday to anticipate where price gets pulled or capped as the day plays out
  • Plot hedge_flow_cumulative_all against spot to watch dealer hedging pressure build and confirm whether flow is reinforcing or fighting the move
  • Monitor pin_score and pin_probability_pct climbing as expiry approaches to time a pin or breakout fade
  • Detect regime transitions between positive and negative gamma, the bar where volatility behaviour is most likely to change
  • Overlay charm_dollars_per_hour and atm_iv to gauge how fast positioning is decaying into the close

Related reading

Complementary endpoints

Ready to build?

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