- Live API Reference
- Trade Flow Data
- Stocks
- Trade History
Stocks Flow Minute History API
Minute stock-flow buckets, newest first. Each bucket carries buy/sell/mid/net share volume, trade count, biggest trade, VWAP, and OHLC.
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 | 60 | 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/history?minutes=120"import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/stocks/SPY/history",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
resp.raise_for_status()
data = resp.json()
print(f"{data['count']} buckets over {data['minutes']} minutes")const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/stocks/SPY/history",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const data = await resp.json();
console.log(data.count + " buckets over " + data.minutes + " minutes");Try it live
Runs on live market data and uses 1 request from your daily quota.
Response
{
"symbol": "SPY",
"minutes": 120,
"count": 120,
"buckets": [
{
"ts": "2026-10-30T13:45:00Z",
"buyVolume": 2329,
"sellVolume": 4083,
"midVolume": 1506,
"netVolume": -1754,
"tradeCount": 121,
"biggestTrade": 1960,
"vwap": 760.1278,
"open": 760.122,
"close": 760.25,
"high": 760.4631,
"low": 760.05
},
{
"ts": "2026-10-30T13:44:00Z",
"buyVolume": 5569,
"sellVolume": 6261,
"midVolume": 23154,
"netVolume": -692,
"tradeCount": 978,
"biggestTrade": 2560,
"vwap": 760.2039,
"open": 760.105,
"close": 760.13,
"high": 760.5278,
"low": 760.02
}
],
"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 buckets returned |
buckets[] | array | Minute buckets: ts, buyVolume, sellVolume, midVolume, netVolume, tradeCount, biggestTrade, vwap, open, close, high, low |
endpoint_version, data_as_of | string, object | Response envelope, see Response envelope. |
Fields of buckets[]
| Field | Type | Description |
|---|---|---|
buckets[].ts | string | Bucket timestamp (UTC) |
buckets[].buyVolume | number | Volume classified as buyer-initiated |
buckets[].sellVolume | number | Volume classified as seller-initiated |
buckets[].midVolume | number | Volume printed at the mid |
buckets[].netVolume | number | Buy volume minus sell volume |
buckets[].tradeCount | number | Number of trades |
buckets[].biggestTrade | number | Largest single trade size |
buckets[].vwap | number | Volume-weighted average price |
buckets[].open | number | Open |
buckets[].close | number | Close |
buckets[].high | number | High |
buckets[].low | number | Low |
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
Minute-aggregated equity trade-flow buckets, newest first. Includes full minute OHLC so this stream can also act as a 1-minute candle feed with flow attribution baked in. Window is clamped to one week.
Common Use Cases
- Draw minute candles with a flow overlay - plot each bucket's
open/high/low/closeas a candle and shade bybuyVolumevssellVolumefor flow-attributed bars in one call - Track VWAP deviation - measure each bucket's
closeagainst itsvwapto build a rolling mean-reversion signal - Scan for volume spikes - flag buckets where
tradeCountorbiggestTradejumps above a rolling baseline to catch sudden participation - Chart cumulative imbalance - sum
netVolumeacross buckets for a session-long accumulation/distribution line - Feed a backtest - replay 1-minute equity flow buckets (window clamped to one week) alongside option flow for joint signal research
- Discount mid-heavy minutes - weigh
netVolumeagainstmidVolumeto avoid over-reading bars where most volume crossed at the mid
Related
Related reading
- Real-time options data: polling vs streaming - how often to poll a newest-first minute series for a live feed
Complementary endpoints
- Stocks Bars - multi-resolution OHLCV bars (oldest-first) for live chart consumers
- Stocks Cumulative - the running net-volume path over the same window
- Stocks Recent - the per-trade tape these minute buckets aggregate
- Options History - the matching minute-flow buckets 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