Options · Order flow
Options flow overnight
/v1/options/flow/overnightoptionsFlowOvernightPrints from the overnight session that precedes a trading date (20:15 ET the evening before to 09:25 ET), for the index options that trade overnight: SPX, SPXW, XSP, VIX, VIXW, RUT and RUTW. Rows have the shape of /v1/options/trades. Requires the Pro plan; overnight data is retained for the most recent session only. Underlying prices overnight are model references, not official index prints. Rows are newest first; next_cursor_id pages back through the session and stays valid across restarts for 24 hours. Only prints retained by the platform can be served: roughly the last five sessions, and overnight prints only for the most recent session. Requesting an older session starts a load and answers 503 data_pending with retry_after_ms. A print cancelled after it was served is not recalled, and prints backfilled behind a cursor's position can be missed by a walk in progress; re-read the session for a complete view.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/flow/overnight" \
-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/flow/overnight?${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);
// Paginated: repeat with cursor_id set to pagination.next_cursor_id until it is null.Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.
Parameters
24 parameters, none required.
| Parameter | Type and limits | Description |
|---|---|---|
underlying_queryoptional | stringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$ | Option root or family: SPX returns the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... Give this or underlying_symbols. |
underlying_queryoptional | array<string>comma-separated in one parameter1 to 10 itemseach at most 128 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$ | Several underlyings in one request, comma separated, at most 10 (for example SPX,SPY,QQQ). Use either underlying_symbol or underlying_symbols. |
datequeryoptional | stringdate | Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date. |
start_queryoptional | integerunix-msmin 946684800000max 4102444800000 | Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session. |
end_queryoptional | integerunix-msmin 946684800000max 4102444800000 | End of the window (exclusive). |
contract_queryoptional | stringcallput | Calls or puts. Omit for both. |
date_queryoptional | stringdate | Only contracts expiring on this date. |
min_queryoptional | integermin 0max 3650 | Minimum days to expiration (0 = expires on the trading date). |
max_queryoptional | integermin 0max 3650 | Maximum days to expiration. |
min_queryoptional | numbermin 0max 1000000000000 | Minimum premium in US dollars of a print (price x size x multiplier). |
max_queryoptional | numbermin 0max 1000000000000 | Maximum premium in US dollars of a print. |
min_queryoptional | integermin 1max 1000000000 | Minimum print size in contracts. |
max_queryoptional | integermin 1max 1000000000 | Maximum print size in contracts. |
trade_queryoptional | array<string>comma-separated in one parametersweepblocksplitsinglegoldenmultilegcrossfloorauctioniso1 to 10 items | Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed. |
sidequeryoptional | array<string>comma-separated in one parameterabove_askat_asknear_askaskmidnear_bidat_bidbidbelow_bidunknown1 to 10 items | Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid. |
sentimentqueryoptional | array<string>comma-separated in one parameterbullishbearishneutralunknown1 to 4 items | Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable). |
otm_queryoptional | boolean | Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded. |
include_queryoptional | boolean | Include multi-leg (complex order) prints. Default true. |
unusual_queryoptional | boolean | Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask. |
min_queryoptional | number> 0max 1000000 | Lowest strike in dollars. |
max_queryoptional | number> 0max 1000000 | Highest strike in dollars. |
exchangequeryoptional | array<string>comma-separated in one parameternomamexcboeisearcaphlxboxmrcygmnic2miaxemldbxbzxedgxperlmemx1 to 17 items | Comma-separated exchanges the print executed on: nom, amex, cboe, ise, arca, phlx, box, mrcy, gmni, c2, miax, emld, bx, bzx, edgx, perl, memx. |
limitqueryoptional | integerdefault 100min 1max 500 | Maximum rows to return. |
cursor_queryoptional | stringat most 1024 characters | Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page. |
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>required31 fields insideasknumber | nullrequiredBest ask at execution; null when no valid quote was available.bidnumber | nullrequiredBest bid at execution; null when no valid quote was available.condition_codeintegerrequiredNumeric trade condition code.contract_typestringrequiredCall or put.callputdate_of_expirystringdaterequiredExpiration date.day_volumeintegerrequiredContracts traded in this contract so far on the trading date, as counted by the platform.days_to_expiryintegerrequiredCalendar days from the trading date to expiration.deltanumber | nullrequiredDelta at execution.exchangestringrequiredExecuting exchange, for example cboe, or unmapped_<code> for a venue without a name.exchange_codeintegerrequiredNumeric exchange code of the options price reporting authority.flagsarray<string>requiredCondition flags: iso (intermarket sweep), auction, cross, floor, complex (multi-leg order), tied, implied, ext_hours, late, cancelled, aggressor_hint, post_cash_close, vol_gt_oi (day volume above open interest), size_gt_oi (print size above open interest), no_side.isoauctioncrossfloorcomplextiedimpliedext_hourslatecancelledaggressor_hintpost_cash_closevol_gt_oisize_gt_oino_sidegroup_idstring | nullrequiredIdentifier of the sweep or split this print belongs to; null for a single print.idstringrequiredIdentifier of the print: root:expiry:strike x 1000:right:date:sequence. Stable; treat it as opaque.implied_volatilitynumber | nullrequiredImplied volatility solved at execution.is_blockbooleanrequiredA block: at least 100 contracts and $50,000 premium, or $250,000 premium, or a large auction, cross or floor print.is_goldenbooleanrequiredA golden sweep: a sweep of at least $1,000,000 premium.is_unusualbooleanrequiredVolume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.open_interestinteger | nullrequiredOpen interest of the contract at the start of the trading date.otm_percentnumber | nullrequiredHow far out of the money the strike is, in percent of the underlying price; negative when in the money.premiumnumberrequiredPremium in US dollars: price x size x multiplier.pricenumberrequiredExecution price per share.sentimentstringrequiredDirection implied by the side: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) or unknown.bullishbearishneutralunknownsessionstringrequiredSession of the print.rthgthcurbothersidestringrequiredAggressor class of the print against the quote it was classified with: above_ask (through the ask), at_ask, near_ask (inside the spread, above the mid zone), mid, near_bid, at_bid, below_bid, or unknown when the quote was missing or invalid.above_askat_asknear_askmidnear_bidat_bidbelow_bidunknownside_confidencenumberrequiredConfidence of the side classification, 0 to 1; lower when the quote was stale or the order was a complex one.sizeintegerrequiredContracts traded.strikenumberrequiredStrike in dollars.timestampintegerunix-msrequiredExecution time. Unix epoch milliseconds (UTC).trade_typestringrequiredPrint or order type. Sweeps and splits are inferred groupings of prints, not exchange-confirmed.sweepsplitsinglemultilegcrossfloorunderlying_pricenumber | nullrequiredUnderlying price at execution; null when unknown.underlying_symbolstringrequiredOption root of the contract, for example SPXW.
metaobjectrequiredMeta objectpaginationobjectrequiredPagination object
Example response
{
"data": [
{
"ask": 4.3,
"bid": 4.05,
"condition_code": 18,
"contract_type": "put",
"date_of_expiry": "2026-10-16",
"day_volume": 340,
"days_to_expiry": 0,
"delta": -0.18,
"exchange": "cboe",
"exchange_code": 5,
"flags": [],
"group_id": null,
"id": "SPXW:20261016:5950000:P:20261015:2207",
"implied_volatility": 0.142,
"is_block": true,
"is_golden": false,
"is_unusual": false,
"open_interest": 9020,
"otm_percent": 0.8,
"premium": 12300,
"price": 4.1,
"sentiment": "bullish",
"session": "gth",
"side": "near_bid",
"side_confidence": 0.9,
"size": 30,
"strike": 5950,
"timestamp": 1792142400250,
"trade_type": "single",
"underlying_price": 5998.5,
"underlying_symbol": "SPXW"
}
],
"meta": {
"as_of": 1760659200123,
"coverage": {
"complete": true
},
"delay_ms": 0,
"delayed": false,
"request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
"source": "opra"
},
"pagination": {
"count": 1,
"has_more": false,
"limit": 100,
"next_cursor_id": null,
"next_url": null
}
}Values are illustrative. Missing values are null, never 0.