Options · Exposure, levels, volatility and OI
Options levels history
/v1/options/levels/historyoptionsLevelsHistoryThe gamma flip, call wall, put wall, largest absolute gamma strike, largest cell strike and net gamma exposure at each bucket of a session, with the underlying price, from the retained minute timelines. Buckets without a valuation are omitted. Sessions older than the retained timelines are not available. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/levels/history" \
-H "Authorization: Bearer $ORDERMAP_API_KEY" \
--data-urlencode underlying_symbol=SPXWconst params = new URLSearchParams({
underlying_symbol: "SPXW",
});
const res = await fetch(`https://api.ordermap.si/v1/options/levels/history?${params}`, {
headers: { Authorization: `Bearer ${process.env.ORDERMAP_API_KEY}` },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data, meta } = await res.json();
console.log(data, meta.coverage);Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.
Parameters
10 parameters, 1 required.
| Parameter | Type and limits | Description |
|---|---|---|
underlying_queryrequired | stringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$ | Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... |
datequeryoptional | stringdate | Trading date (YYYY-MM-DD). Default: the most recent session. |
sessionqueryoptional | stringrthgthdefault rth | Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which. |
contract_queryoptional | stringcallput | Calls or puts. Omit for both. |
date_queryoptional | stringdate | Only this expiration. |
min_queryoptional | integermin 0max 3650 | Minimum days to expiration (0 = expires on the trading date). |
max_queryoptional | integermin 0max 3650 | Maximum days to expiration. |
intervalqueryoptional | string5m15m30m1hdefault 5m | Bucket length: 5m, 15m, 30m or 1h (the gamma flip needs at least 5m). |
unitqueryoptional | stringper_percentper_dollarrawdefault per_percent | Scale of the net exposure. |
modelqueryoptional | stringclassic_oiflow_adjusteddefault classic_oi | Dealer positioning model. |
Response
| Status | Meaning | Body |
|---|---|---|
200 | Successful response. | Schema below |
400 | Invalid, unknown or repeated parameters, or an invalid cursor. | Error object |
401 | Missing or invalid API key. | Error object |
403 | The plan, dataset release or account state does not allow this request. | Error object |
422 | The request is valid but no data exists for it. | Error object |
429 | Rate limit, burst limit or cooldown; wait Retry-After seconds.Retry-After | Error object |
500 | Internal error. | Error object |
503 | Data temporarily unavailable; retry after Retry-After seconds.Retry-After | Error object |
504 | The request timed out. | Error object |
Authenticated responses carry the X-RateLimit-* headers (see rate limits); 429 and 503 add Retry-After.
200 response body
dataarray<object>required8 fields insidecall_wallnumber | nullrequiredCall wall.gamma_flipnumber | nullrequiredGamma flip (model-derived).largest_absolute_gamma_strikenumber | nullrequiredStrike of the largest absolute gamma.largest_cell_strikenumber | nullrequiredStrike of the largest strike-by-expiration cell.net_exposurenumber | nullrequiredNet modeled gamma exposure.put_wallnumber | nullrequiredPut wall.timestampintegerunix-msrequiredValuation time. Unix epoch milliseconds (UTC).underlying_pricenumber | nullrequiredUnderlying price.
metaobjectrequiredMeta object
Example response
{
"data": [
{
"call_wall": 6050,
"gamma_flip": 5934.5,
"largest_absolute_gamma_strike": 6000,
"largest_cell_strike": 6000,
"net_exposure": -1200000000,
"put_wall": 5950,
"timestamp": 1792161000000,
"underlying_price": 6021.4
}
],
"meta": {
"as_of": 1760659200123,
"coverage": {
"complete": true
},
"delay_ms": 0,
"delayed": false,
"request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
"source": "opra"
}
}Values are illustrative. Missing values are null, never 0.