Open Interest Diff API
Day-over-day open-interest deltas: per-contract changes (today's OI minus the prior trading day's OI), the top-N changes sorted by absolute magnitude, and call/put aggregate totals.
Endpoint
X-Api-Key)
Rate Limited: Yes
Growth plan+
Parameters
| Name | In | Required | Default | Description |
|---|---|---|---|---|
symbol |
path | yes | - | Underlying symbol |
topN |
query | no | 10 |
Clamped to [1, 100] |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/exposure/oi-diff/SPY?topN=5"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/exposure/oi-diff/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"},
params={"topN": 5}
)
data = resp.json()
print(f"Net call OI change: {data['total_call_oi_change']:,}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/exposure/oi-diff/SPY?topN=5",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log("Net call OI change: " + data.total_call_oi_change.toLocaleString());
Response
{
"symbol": "SPY",
"underlying_price": 597.50,
"as_of": "2026-05-30T15:30:00Z",
"prior_snapshot_available": true,
"total_call_oi_change": 124000,
"total_put_oi_change": -38000,
"top_oi_changes": [
{ "strike": 600.0, "type": "C", "expiry": "2026-06-18", "today_oi": 35000, "prior_oi": 30000, "oi_change": 5000 }
]
}
Key Response Fields
| Field | Description |
|---|---|
prior_snapshot_available | false when no prior-day OI data has been written to the source table yet; total_*_oi_change are then 0 and top_oi_changes is empty. |
total_call_oi_change | Sum of per-contract deltas across all call contracts that have a prior-day match. |
total_put_oi_change | Same for puts. |
top_oi_changes[] | Sorted by |oi_change| descending. Each row carries the contract's strike, type, expiry, today's OI, prior OI, and the signed delta. |
Errors
| Status | Description |
|---|---|
403 | Requires Growth plan or higher |
404 | Symbol not found or no data |
About
The OI diff endpoint reports day-over-day open-interest changes per contract, filling the gap behind the top_oi_changes: [] placeholder in /v1/exposure/narrative. It computes today's OI minus the prior trading day's OI for each contract, returns the top-N rows by absolute magnitude, and reports call and put aggregate change totals.
Contracts present today with no prior-day entry are excluded from the top-N because no delta is computable. The prior-day OI lookup currently points at a stub source; once the ExposureStrikeSnapshots writer pipeline ships, prior_snapshot_available flips to true and deltas populate with no client change. For point-in-time historical OI diffs, use historical.flashalpha.com with two ?at= calls (today's date and the prior trading day).
Common Use Cases
- Spot overnight positioning shifts - the per-contract OI delta shows where dealers added or unwound exposure since yesterday, the first read on a fresh build
- Rank the biggest builds and unwinds -
top_oi_changessurfaces the largest absolute OI moves so you can focus on the strikes that actually moved positioning - Gauge net call vs put flow - the aggregate change totals separate call-side from put-side OI growth to read directional bias in new positioning
- Confirm GEX shifts have a cause - pair an OI build at a strike with that strike's gamma to tell a real wall forming from a same-day repricing artifact
- Filter computable contracts only - rows with no prior-day entry are excluded, so the delta set is limited to contracts where a true day-over-day change exists
- Run point-in-time historical diffs - until
prior_snapshot_availableflips true, use two?at=calls onhistorical.flashalpha.comfor exact two-date OI deltas
Related
Related reading
- Opening vs closing bias: the OI simulator - how OI changes resolve into opening vs closing trade intent
- Effective open interest: live GEX from flow - deriving live GEX from intraday OI estimates rather than settled snapshots
Complementary endpoints
- Gamma Exposure (GEX) - turn the OI build into the resulting gamma walls and flip
- Exposure Sheet - the full per-strike greek sheet the OI change feeds into
- Flow OI simulator - the live, flow-aware OI estimate versus this settled diff
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.