Flow Signals Summary API
Net bullish vs bearish premium, opening vs closing premium, and the top-10 highest-scoring signals - in one cheap call you can fan across a watchlist for a smart-money tilt read.
Endpoint
X-Api-Key)
Rate Limited: Yes
Alpha plan+
Parameters
| Name | In | Required | Default | Description |
|---|---|---|---|---|
symbol |
path | yes | - | Underlying symbol |
windowMinutes |
query | no | 240 |
Look-back window in minutes (1-10080) |
expiry |
query | no | all expiries | Filter the chain to a single expiry (yyyy-MM-dd) |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/signals/NVDA/summary?windowMinutes=240"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/signals/NVDA/summary",
params={"windowMinutes": 240},
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"Signals: {data['signal_count']}")
print(f"Net directional: ${data['net_directional_premium']:,.0f}")
print(f"Opening / Closing: ${data['opening_premium']:,.0f} / ${data['closing_premium']:,.0f}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/signals/NVDA/summary?windowMinutes=240",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`Signals: ${data.signal_count}`);
console.log(`Net directional: $${data.net_directional_premium.toLocaleString()}`);
Response
{
"symbol": "NVDA",
"as_of": "2026-05-21T16:30:45Z",
"window_minutes": 240,
"expiry": null,
"underlying_price": 900.25,
"signal_count": 12,
"bullish_premium": 18250000.0,
"bearish_premium": 6400000.0,
"net_directional_premium": 11850000.0,
"opening_premium": 21300000.0,
"closing_premium": 3350000.0,
"top_signals": [
{
"ts": "2026-05-21T15:58:12Z",
"expiry": "2026-05-23",
"strike": 950.0,
"right": "C",
"side": "buy",
"price": 12.40,
"size": 1500,
"premium": 1860000.0,
"dte": 7,
"structure": "sweep",
"aggressor": "above_ask",
"open_close_bias": "opening_bias",
"open_close_confidence": 0.43,
"contract_net_oi_delta": 4200,
"intent": "bullish",
"score": 87,
"conviction": "high",
"tags": ["sweep", "opening", "whale", "golden"],
"score_breakdown": {
"premium": 22, "size_vs_oi": 18, "aggressor": 14,
"sweep": 12, "opening_bias": 9, "tenor": 12
},
"enrichment": {
"iv": 0.62,
"delta": 0.28,
"gamma": 0.0041,
"iv_vs_atm": 0.08,
"moneyness": "OTM",
"estimated_delta_notional": 37810500.0,
"hypothetical_gex_impact_if_opening": 4984267.88
}
}
]
}
Top-level fields
| Field | Type | Description |
|---|---|---|
symbol / as_of | string | Symbol and ISO 8601 request timestamp |
window_minutes | number | Echo of the requested look-back window |
expiry | string, nullable | Echo of the requested expiry filter (null when aggregating across all expiries) |
underlying_price | number | Spot at request time (0 when the settled chain snapshot is unavailable) |
signal_count | number | Full count of signals in the window (not capped at 10) |
bullish_premium | number | Sum of premium across signals classified intent=bullish |
bearish_premium | number | Sum of premium across signals classified intent=bearish |
net_directional_premium | number | bullish_premium − bearish_premium |
opening_premium | number | Sum of premium across signals where open_close_bias = opening_bias |
closing_premium | number | Sum of premium across signals where open_close_bias = closing_bias |
top_signals | array | Up to 10 highest-scoring signals - same shape as /v1/flow/signals/{symbol} |
About the Summary
The summary is the watchlist-scale version of /v1/flow/signals. The full feed is great for a single name, but quickly gets expensive when you want a tilt read on 50 symbols. The summary aggregates the same scored signals into five headline premium roll-ups and embeds only the 10 highest-scoring signals so the response stays tight.
The net_directional_premium tells you whether bullish or bearish flow dominated the window. The opening_premium vs closing_premium split tells you whether positioning is being established or unwound - a high net-directional with a high opening share is the cleanest tilt read.
Common Use Cases
- Watchlist tilt scanner - fan across a universe, rank by
net_directional_premium / underlying_pricefor size-adjusted bullishness - Sector flow dashboard - roll up signal-summary calls across a sector ETF's holdings to spot rotation
- Premium decomposition - diff
opening_premiumvsclosing_premiumto separate fresh positioning from unwinds - Lightweight gate before the full feed - poll the summary cheaply, then call
/v1/flow/signalsonly whensignal_countornet_directional_premiumcrosses a threshold - Daily summary report - end-of-day snapshot with
windowMinutes=390(full session) for a one-line-per-name flow tilt
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.