Net Flow
Overview
Net Flow returns aggregated call and put magnitude for a slice of the options chain, bucketed over time. The metric is selected by dataMode: NET_PREMIUM (cents) or NET_VOLUME (contracts). Each bucket carries callSum, putSum, and the underlying stockPrice when the request narrows to a single ticker.
curl -X POST https://api.quantdata.us/v1/options/tool/net-flow \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "dataMode": "NET_PREMIUM", "sessionDate": "2026-05-13", "filter": { "ticker": "AAPL" } }'
Required: dataMode
dataMode is required. Two values:
Selecting the time window
Net Flow accepts sessionDate, timeRange, or neither. The two are mutually exclusive; if both are omitted, the most recent trading session is used. aggregationPeriod sets the bucket size and defaults to a span-appropriate value (see Conventions for the resolution table).
{ "dataMode": "NET_VOLUME", "timeRange": { "startTime": "2026-05-12T13:30:00Z", "endTime": "2026-05-14T20:00:00Z" }, "aggregationPeriod": "15m", "filter": { "tickers": ["AAPL", "NVDA"] } }
Response shape
datais an object keyed by each bucket's start time (Unix epoch milliseconds). The entries are ordered by timestamp in ascending order.
{ "data": { "1747137600000": { "callSum": 18420150, "putSum": 10283725, "stockPrice": 213.45 }, "1747137900000": { "callSum": 22134075, "putSum": 9541240, "stockPrice": 213.78 } } }
Filters
Convenience filter fields: tickers, expirationDates, expirationDateRange, strikePrices, strikePriceRange, moneyTypes, tradeSideCodes. All are optional. The filterExpression DSL is also accepted and can be combined with filter; both are evaluated as AND.
{ "dataMode": "NET_PREMIUM", "sessionDate": "2026-05-13", "filterExpression": { "conjunction": "AND", "filters": [ { "field": "ticker", "operation": "=", "values": ["AAPL", "NVDA"] }, { "field": "tradeSideCode", "operation": "=", "values": ["AA", "A"] } ] } }