Futures · Bars, trades and book
Futures bars
/v1/futures/barsfuturesBarsBars from one-minute history coarsened to 1m, 2m, 3m, 5m, 10m, 15m, 30m, 1h, or built per trading session for 1d (a daily bar covers the Globex session that starts at 18:00 Eastern Time the evening before its trading_date; a request returns the sessions that overlap the range, at most 22 per page). start_time is inclusive and end_time exclusive on bar starts; end_time defaults to now and start_time to 24 hours before it (30 days for 1d, or your plan's history depth when shorter). Bars are available for the most recent 90 days. A bar is complete once all of its minutes have been received; the last bar of a live range is still forming. History for a range is loaded on first use: the route answers 503 data_pending with Retry-After and succeeds when you retry. Page with cursor_id; the contract resolved on the first page is kept for the following pages.
Example request
curl -sS --get "https://api.ordermap.si/v1/futures/bars" \
-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/bars?${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
7 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. |
intervalqueryoptional | string1m2m3m5m10m15m30m1h1ddefault 1m | Bar size. |
start_queryoptional | integerunix-msmin 946684800000max 4102444800000 | First bar start to return (inclusive). |
end_queryoptional | integerunix-msmin 946684800000max 4102444800000 | End of the range (exclusive). |
limitqueryoptional | integerdefault 1000min 1max 5000 | 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>required9 fields insideclosenumberrequiredClose.completebooleanrequiredEvery minute of the bar has been received.contractstringrequiredDated contract.highnumberrequiredHigh.lownumberrequiredLow.opennumberrequiredOpen.start_timeintegerunix-msrequiredStart of the bar. Unix epoch milliseconds (UTC).trading_datestring | nulldaterequiredTrading date of a daily bar; null for intraday bars.volumeinteger | nullrequiredContracts traded.
metaobjectrequiredMeta objectpaginationobjectrequiredPagination object
Example response
{
"data": [
{
"close": 6021.5,
"complete": true,
"contract": "ESZ6",
"high": 6022,
"low": 6019.75,
"open": 6020.25,
"start_time": 1792159200000,
"trading_date": null,
"volume": 4821
}
],
"meta": {
"as_of": 1760659200123,
"coverage": {
"complete": true
},
"delay_ms": 0,
"delayed": false,
"request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
"source": "cme"
},
"pagination": {
"count": 1,
"has_more": false,
"limit": 1000,
"next_cursor_id": null,
"next_url": null
}
}Values are illustrative. Missing values are null, never 0.