- Live API Reference
- Trade Flow Data
- Stocks
- Cumulative Flow
Stocks Cumulative Net Flow API
Running cumulative net stock flow with per-minute net volume, running cumulative, VWAP, and trade count.
Endpoint
X-Api-Key)
Rate Limited: Yes
Plan: Alpha+
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
symbol |
path | string | required | - | Stock symbol |
minutes |
query | integer | 240 | Window size, clamped to 1..10080. Non-numeric values return a 400 problem-details body. |
Request
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/stocks/SPY/cumulative?minutes=240"import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/stocks/SPY/cumulative",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
resp.raise_for_status()
data = resp.json()
print(f"Cumulative net shares: {data['points'][-1]['cumulative']:,}")const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/stocks/SPY/cumulative",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const data = await resp.json();
console.log("Cumulative net shares: " + data.points[data.points.length-1].cumulative.toLocaleString());Try it live
Runs on live market data and uses 1 request from your daily quota.
Response
{
"symbol": "SPY",
"minutes": 240,
"count": 240,
"points": [
{
"ts": "2026-10-30T09:44:00Z",
"netVolume": 207,
"cumulative": 207,
"vwap": 762.5057,
"tradeCount": 8
},
{
"ts": "2026-10-30T09:45:00Z",
"netVolume": -425,
"cumulative": -218,
"vwap": 762.3422,
"tradeCount": 16
}
],
"endpoint_version": "2026.09.30",
"data_as_of": {
"node": "fa5",
"equity_feed": "2026-10-30T13:46:03.297Z",
"equity_options_feed": "2026-10-30T13:46:02Z",
"index_feed": "2026-10-30T13:46:02.132Z",
"index_options_feed": "2026-10-30T13:45:59Z",
"futures_feed": "2026-10-30T13:45:51.589Z",
"futures_options_feed": "2026-10-30T13:45:51.596Z",
"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 | Uppercase stock symbol |
minutes | integer | Requested/effective minute window |
count | integer | Number of points returned |
points[] | array | Cumulative flow points: ts, netVolume, cumulative, vwap, tradeCount |
points[].ts | string | Bucket timestamp (UTC) |
points[].netVolume | number | Buy volume minus sell volume |
points[].cumulative | number | Running total since the start of the window |
points[].vwap | number | Volume-weighted average price |
points[].tradeCount | number | Number of trades |
endpoint_version, data_as_of | string, object | Response envelope, see Response envelope. |
Errors
| Status | Error | When |
|---|---|---|
400 | - | A query value has the wrong type, or a required value is missing. The body is an RFC 7807 problem-details object with errors.<param>. |
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 Alpha. The body includes current_plan and required_plan. |
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. |
502 | - | Upstream flow data source unavailable. |
About
Per-minute net share volume joined with a running cumulative across the window. Drop straight into a single-line accumulation/distribution chart, or use the cumulative path to spot intraday inflection points.
Common Use Cases
- Plot a single-line accumulation/distribution chart - feed
points[].cumulativestraight into a line series to visualize running net share flow across the window - Spot flow-vs-price divergence - compare the slope of
cumulativeagainst thevwappath to flag when price rises while net flow rolls over (or vice versa) - Attribute pressure by session - diff
cumulativebetween timestamps to isolate morning vs afternoon directional bias from the per-minutenetVolume - Catch intraday inflections - detect sign flips and slope changes in
cumulativeto mark where accumulation turns to distribution - Compare correlated tickers - overlay each symbol's
cumulativepath for a pairs/relative-flow read - Confirm participation - weight inflections by
tradeCountso thin-volume wiggles do not trigger false signals
Related
Related reading
- Build a dealer-positioning / flow monitor - fold this cumulative net-flow line into a live multi-symbol monitor
Complementary endpoints
- Stocks History - the per-minute buckets (with OHLC) behind this cumulative path
- Stocks Summary - the single-shot net-volume total for the same buffer
- Stocks Bars - OHLCV + flow bars to chart price alongside the cumulative line
- Options Cumulative - the matching running net-flow path for the options tape
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