- Live API Reference
- Flow Analytics
- Open Interest Simulator
Open Interest Simulator API
Raw OI simulator state: official, simulated, and effective open interest, plus intraday delta and the simulator's confidence weight.
Endpoint
X-Api-Key)
Rate Limited: Yes
Plan: Alpha+
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
symbol |
path | string | required | - | Underlying symbol |
expiry |
query | date | all expiries | Filter chain to a single expiry (yyyy-MM-dd). Omit to aggregate across all expiries. Invalid values return 400 invalid_expiry. |
Request
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/flow/oi/SPY"import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/flow/oi/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
resp.raise_for_status()
data = resp.json()
print(f"Official OI: {data['official_oi']:,}")
print(f"Effective OI: {data['effective_oi']:,}")
print(f"Intraday delta: {data['intraday_oi_delta']:,}")const resp = await fetch(
"https://lab.flashalpha.com/v1/flow/oi/SPY",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const data = await resp.json();
console.log(`Official OI: ${data.official_oi.toLocaleString()}`);
console.log(`Effective OI: ${data.effective_oi.toLocaleString()}`);
console.log(`Intraday delta: ${data.intraday_oi_delta.toLocaleString()}`);Try it live
Runs on live market data and uses 1 request from your daily quota.
Response
{
"symbol": "SPY",
"as_of": "2026-10-30T13:45:49.7452098Z",
"expiry": null,
"official_oi": 18161399,
"simulated_oi": 18186080,
"intraday_oi_delta": 24681,
"oi_delta_confidence": 0.43,
"effective_oi": 18187654,
"contracts_total": 12318,
"contracts_with_flow": 1382,
"endpoint_version": "2026.09.30",
"data_as_of": {
"node": "fa5",
"equity_feed": "2026-10-30T13:45:49.435Z",
"equity_options_feed": "2026-10-30T13:45:48Z",
"index_feed": "2026-10-30T13:45:47.104Z",
"index_options_feed": "2026-10-30T13:45:45Z",
"futures_feed": "2026-10-30T13:45:48.621Z",
"futures_options_feed": "2026-10-30T13:45:49.081Z",
"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 |
|---|---|---|
official_oi | number | Sum of morning OPRA-broadcast OI across the chain |
simulated_oi | number | official + intraday_oi_delta aggregated (unclamped, surfaces overshoot) |
intraday_oi_delta | number | Sum of the simulator's signed per-contract delta. Never reconstructed from (effective - official) - that loses magnitude when a per-contract value overshot zero and got clamped |
oi_delta_confidence | number | Per-trade confidence weight applied by the upstream simulator (currently 0.43) |
effective_oi | number | Sum of per-contract max(0, official + delta) - what the analytics endpoints actually consume |
contracts_with_flow | number | Number of contracts where intraday_delta != 0 |
symbol | string | Underlying symbol |
as_of | string | Timestamp of the data (ISO 8601, UTC) |
expiry | string | null | The expiry filter from the request, null when it was omitted |
contracts_total | number | Contracts total |
endpoint_version, data_as_of | string, object | Response envelope, see Response envelope. |
effective_oi can differ from max(0, simulated_oi) because the clamp is applied per-contract before aggregation.
Errors
| Status | Error | When |
|---|---|---|
400 | invalid_expiry | expiry is not a valid yyyy-MM-dd date. |
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. |
404 | no_data | No data for the symbol. |
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. |
About Flow OI
Flow OI exposes the raw simulator state that powers the rest of the /v1/flow/* family. official_oi matches the morning OPRA-broadcast OI used by the settled /v1/exposure/* endpoints. effective_oi is the per-contract clamped quantity the live analytics consume, and simulated_oi is the unclamped aggregate, which can deviate when sell pressure overshoots a contract's OI to zero. The intraday_oi_delta is the true signed sum from the simulator and intentionally cannot be reconstructed from (effective - official) - use this field if you're building your own analytics on top of the simulator.
Common Use Cases
- Build custom analytics - drive your own GEX/DEX or pin-risk variants off
effective_oi, the same per-contract clamped quantity the live Flow endpoints consume - Audit and reconcile - surface the gap between
official_oi,simulated_oi, andeffective_oito catch overshoot or clamping artefacts before they reach exposure numbers - Read directional flow - the sign of
intraday_oi_deltashows whether the day is net opening or net closing interest, the input to opening-vs-closing bias - Weight by confidence - scale signal size by
oi_delta_confidenceand de-rate the read when the simulator is less certain about the intraday delta - Gauge session breadth -
contracts_with_flow / contracts_totalis a rough activity-heat measure for how much of the chain is repositioning - Power research workflows - pair with historical exposure snapshots to study how intraday OI flow predicts end-of-day positioning
Related
Related reading
- Opening vs closing bias: the options flow OI simulator - how signed intraday OI deltas distinguish opening from closing interest
- Effective open interest: live GEX from flow - the methodology that turns effective OI into live exposure
Complementary endpoints
- OI Diff - day-over-day open-interest changes by strike
- Flow Live Bundle - the raw real-time tape feeding the simulator
- Flow GEX - live flow-adjusted gamma built on this effective OI
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