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.

POST/v1/options/tool/net-flow
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:

  • NET_PREMIUM: callSum / putSum are total option premium in cents.
  • NET_VOLUME: callSum / putSum are total contract count.

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).

Multi-day range with explicit bucket

Request · NET_VOLUME + timeRange
{
  "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.

200 OK · application/json
{
  "data": {
    "1747137600000": {
      "callSum": 18420150,
      "putSum": 10283725,
      "stockPrice": 213.45
    },
    "1747137900000": {
      "callSum": 22134075,
      "putSum": 9541240,
      "stockPrice": 213.78
    }
  }
}

Per-bucket fields:

  • callSum, putSum: the per-leg total for the bucket. Units depend on dataMode: cents for NET_PREMIUM, contracts for NET_VOLUME.
  • stockPrice: underlying price at the bucket close. Only present when the request filters to exactly one ticker.

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.

Filter expression · trade side narrow

Request · filterExpression
{
  "dataMode": "NET_PREMIUM",
  "sessionDate": "2026-05-13",
  "filterExpression": {
    "conjunction": "AND",
    "filters": [
      { "field": "ticker", "operation": "=", "values": ["AAPL", "NVDA"] },
      { "field": "tradeSideCode", "operation": "=", "values": ["AA", "A"] }
    ]
  }
}

See Field Reference for the type and allowed values of every filterable field, and Filter Expression for the full DSL grammar.

Where to go next