Futures · Order flow
Futures footprint
/v1/futures/footprintfuturesFootprintBars of a trading session built from prints, each with its price ladder of buy, sell and unknown volume, delta, point of control and value area, and buy/sell and stacked imbalances. Bars close by time, print count, volume or range (bar_type, target). Reads the live capture: a window it no longer holds answers 422 data_unavailable, and a window that would exceed 2,000 bars or 10,000 price rows is refused with 413 range_too_large (narrow the window or use larger bars or rows). meta.coverage.complete is false because a provider's completeness is never claimed.
Example request
curl -sS --get "https://api.ordermap.si/v1/futures/footprint" \
-H "Authorization: Bearer $ORDERMAP_API_KEY" \
--data-urlencode symbol=ESconst params = new URLSearchParams({
symbol: "ES",
});
const res = await fetch(`https://api.ordermap.si/v1/futures/footprint?${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
14 parameters, none required.
| Parameter | Type and limits | Description |
|---|---|---|
symbolqueryoptional | stringat most 3 characterspattern ^[A-Za-z0-9]{1,3}$ | Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response. |
contractqueryoptional | stringat most 6 characterspattern ^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$ | Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served. |
sessionqueryoptional | stringrthglobexgthcurbcombineddefault rth | Trading session to read. rth is 09:30 to 16:00 Eastern Time; globex the full 18:00 to 17:00 session; gth the overnight window (20:15 to 09:25); curb 16:15 to 17:00; combined gth plus rth. Futures trade through the night, so every session is available on every plan. |
datequeryoptional | stringdate | Trading date (YYYY-MM-DD) of the session; default the current or most recent one. |
start_queryoptional | integerunix-msmin 946684800000max 4102444800000 | Narrow the session to start at or after this time. |
end_queryoptional | integerunix-msmin 946684800000max 4102444800000 | Narrow the session to end at or before this time. |
bar_queryoptional | stringtimetrade_countvolumerangedefault time | What closes a bar: time (target seconds), trade_count (target prints), volume (target contracts; a print is never split) or range (target ticks between the bar's high and low). |
targetqueryoptional | integermin 1max 86400 | Bar size: seconds for time bars, prints for trade_count, contracts for volume, ticks for range. Default 60 seconds, 500 prints, 1,000 contracts, 10 ticks. |
row_queryoptional | integerdefault 1min 1max 1000 | Group prices into rows of this many ticks. |
imbalance_queryoptional | stringhorizontaldiagonaldefault horizontal | How imbalances compare volumes: horizontal (buy against sell at the same price) or diagonal (buy against the sell one row below). |
imbalance_queryoptional | numberdefault 3min 1max 1000 | Ratio at which one side counts as an imbalance. |
imbalance_queryoptional | integerdefault 10min 0max 1000000000 | Smallest volume that can be an imbalance. |
stacked_queryoptional | integerdefault 3min 2max 100 | Consecutive imbalanced rows that make a stacked imbalance. |
value_queryoptional | numberdefault 70min 1max 100 | Share of the volume the value area contains, in percent. |
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>required25 fields insidecellsarray<object>requiredVolume by price, lowest price first.14 fields insidebuy_imbalancebooleanrequiredBuy volume dominates by the imbalance rule.buy_volumeintegerrequiredContracts traded at the ask (aggressive buys).deltaintegerrequiredBuy minus sell contracts.in_value_areabooleanrequiredThe row is inside the bar's value area.is_pocbooleanrequiredThe row is the bar's point of control.pricenumberrequiredPrice (lowest price of the row when grouped).price_ticksstringrequiredPrice as an integer count of ticks, as a string.sell_imbalancebooleanrequiredSell volume dominates by the imbalance rule.sell_volumeintegerrequiredContracts traded at the bid (aggressive sells).stacked_buy_imbalancebooleanrequiredThe row is part of a stacked buy imbalance.stacked_sell_imbalancebooleanrequiredThe row is part of a stacked sell imbalance.total_volumeintegerrequiredAll contracts at the row.trade_countintegerrequiredPrints at the row.unknown_volumeintegerrequiredContracts whose side is unknown.
closedbooleanrequiredThe bar has closed.contractstringrequiredDated contract.deltaintegerrequiredBuy minus sell contracts in the bar.end_timeintegerunix-msrequiredEnd of the bar. Unix epoch milliseconds (UTC).pocnumber | nullrequiredPoint of control: the price with the most volume in the bar.start_timeintegerunix-msrequiredStart of the bar. Unix epoch milliseconds (UTC).trade_countintegerrequiredPrints in the bar.value_area_highnumber | nullrequiredUpper edge of the bar's value area.value_area_lownumber | nullrequiredLower edge of the bar's value area.volumeintegerrequiredContracts traded in the bar.
metaobjectrequiredMeta object
Example response
{
"data": [
{
"cells": [
{
"buy_imbalance": false,
"buy_volume": 612,
"delta": -92,
"in_value_area": true,
"is_poc": true,
"price": 6021.5,
"price_ticks": "24086",
"sell_imbalance": false,
"sell_volume": 704,
"stacked_buy_imbalance": false,
"stacked_sell_imbalance": false,
"total_volume": 1316,
"trade_count": 301,
"unknown_volume": 0
}
],
"closed": true,
"contract": "ESZ6",
"delta": -212,
"end_time": 1792159260000,
"poc": 6021.5,
"start_time": 1792159200000,
"trade_count": 1305,
"value_area_high": 6022,
"value_area_low": 6021,
"volume": 4821
}
],
"meta": {
"as_of": 1760659200123,
"coverage": {
"complete": true
},
"delay_ms": 0,
"delayed": false,
"request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
"source": "cme"
}
}Values are illustrative. Missing values are null, never 0.