Options Cumulative Net Flow API - Running Net Volume | FlashAlpha
  1. Cumulative Flow

Options Cumulative Net Flow API

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

Endpoint

GET /v1/flow/options/{symbol}/cumulative
Auth required (X-Api-Key) Rate Limited: Yes Plan: Alpha+

Parameters

Name In Type Required Default Description
symbol path string required - Underlying symbol
minutes query integer 240 Window size, clamped to 1..10080. Non-numeric values return a 400 problem-details body.
expiry query date - Filter to a single expiration cycle, yyyy-MM-dd. Omit to include all expiries. Invalid values return 400 invalid_expiry. An expiry with no data returns an empty result, not an error.

Request

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/flow/options/SPY/cumulative?minutes=240"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/flow/options/SPY/cumulative",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
resp.raise_for_status()
data = resp.json()
print(f"Cumulative net: {data['points'][-1]['cumulative']:,}")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/flow/options/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: " + 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",
  "expiry": null,
  "minutes": 240,
  "count": 240,
  "points": [
    {
      "ts": "2026-10-29T18:28:00Z",
      "netVolume": 3289,
      "cumulative": 3289,
      "vwap": 1.2473,
      "tradeCount": 1775
    },
    {
      "ts": "2026-10-29T18:29:00Z",
      "netVolume": 2636,
      "cumulative": 5925,
      "vwap": 1.2772,
      "tradeCount": 1447
    }
  ],
  "endpoint_version": "2026.09.30",
  "data_as_of": {
    "node": "fa4",
    "equity_feed": "2026-10-30T13:45:50.795Z",
    "equity_options_feed": "2026-10-30T13:45:50Z",
    "index_feed": "2026-10-30T13:45:50.104Z",
    "index_options_feed": "2026-10-30T13:45:47Z",
    "futures_feed": "2026-10-30T13:45:42.97Z",
    "futures_options_feed": "2026-10-30T13:45:43.095Z",
    "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 underlying symbol
minutesintegerRequested/effective minute window
countintegerNumber of points returned
points[]arrayCumulative flow points: ts, netVolume, cumulative, vwap, tradeCount
expirystring | nullEcho of the ?expiry= filter, or null when no filter was applied
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
400invalid_expiryexpiry is not a valid yyyy-MM-dd date.
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 option volume joined with a running cumulative across the window. This is the easiest way to plot a single-line directional-flow chart and spot the inflection points where buying pressure flipped to selling.

Common Use Cases

  • Plot a single-line cumulative-flow chart - draw cumulative over ts to show net directional pressure building or unwinding across the session
  • Find the inflection point - watch where per-minute netVolume flips sign and cumulative rolls over to mark the moment buyers handed off to sellers
  • Build a divergence signal - compare the cumulative slope against the underlying's price trend to flag flow leading or fading the move
  • Attribute flow by session - difference cumulative across timestamps to weigh morning versus afternoon net flow
  • Screen for stretched tapes - flag symbols whose cumulative has drifted far from zero as mean-reversion or continuation candidates
  • Confirm with VWAP and activity - read vwap and tradeCount alongside each point to check the cumulative move is backed by real volume

Related reading

Complementary endpoints

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