Stocks Cumulative Net Flow API - Running Net Share Volume | FlashAlpha
  1. Cumulative Flow

Stocks Cumulative Net Flow API

Running cumulative net stock flow with per-minute net volume, running cumulative, VWAP, and trade count.

Endpoint

GET /v1/flow/stocks/{symbol}/cumulative
Auth required (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.

GET

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
symbolstringUppercase stock symbol
minutesintegerRequested/effective minute window
countintegerNumber of points returned
points[]arrayCumulative flow points: ts, netVolume, cumulative, vwap, tradeCount
points[].tsstringBucket timestamp (UTC)
points[].netVolumenumberBuy volume minus sell volume
points[].cumulativenumberRunning total since the start of the window
points[].vwapnumberVolume-weighted average price
points[].tradeCountnumberNumber of trades
endpoint_version, data_as_ofstring, objectResponse 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.
403tier_restrictedYour plan is below Alpha. The body includes current_plan and required_plan.
429Quota exceededDaily 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[].cumulative straight into a line series to visualize running net share flow across the window
  • Spot flow-vs-price divergence - compare the slope of cumulative against the vwap path to flag when price rises while net flow rolls over (or vice versa)
  • Attribute pressure by session - diff cumulative between timestamps to isolate morning vs afternoon directional bias from the per-minute netVolume
  • Catch intraday inflections - detect sign flips and slope changes in cumulative to mark where accumulation turns to distribution
  • Compare correlated tickers - overlay each symbol's cumulative path for a pairs/relative-flow read
  • Confirm participation - weight inflections by tradeCount so thin-volume wiggles do not trigger false signals

Related reading

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

Ready to build with FlashAlpha?

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

No credit card required Setup in 60 seconds Secure & reliable