GET Market Info
- NT8
- Tradovate
Retrieve market session info NT8
Returns real-time session status for an instrument, including whether the market is currently open or closed, the current or next session boundaries in UTC and exchange local time, and a countdown to the next state change. This is useful for algos that need to know whether the market is in session before placing orders, or UIs that display session timers.
Endpoint
GET /v1/api/market/info
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
instrument | string | Conditional | Full NT8 instrument name (e.g., "ES 09-26"). Required when root is omitted. |
root | string | Conditional | Supported NT8 instrument root (e.g., "ES"). Resolves the current front-month instrument and is required when instrument is omitted. |
Provide at least one of instrument or root. If both are provided, instrument takes precedence.
Code examples
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/market/info"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
params = {"instrument": "ES 09-26"}
try:
response = requests.get(url, headers=headers, params=params)
print(f"Response Code: {response.status_code}, Response Text: {response.text}")
except Exception as e:
print(f"An error occurred: {e}")
const token = 'my-secret-token';
const params = new URLSearchParams({ instrument: "ES 09-26" });
const url = `https://app.crosstrade.io/v1/api/market/info?${params}`;
fetch(url, {
method: "GET",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
}
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
TOKEN="my-secret-token"
curl -X GET "https://app.crosstrade.io/v1/api/market/info?instrument=ES%2009-26" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
Response
- 200
{
"success": true,
"timestamp": "2026-03-18T20:46:29.0248281Z",
"instrument": "ES 09-26",
"timeZone": "Central Standard Time",
"status": {
"isOpen": true,
"state": "Open"
},
"session": {
"label": "Current Session",
"utcStart": "2026-03-17T22:00:00.0000000Z",
"utcEnd": "2026-03-18T21:00:00.0000000Z",
"localStart": "2026-03-17 17:00:00",
"localEnd": "2026-03-18 16:00:00",
"countdown": "00:13:30",
"action": "Until Close",
"secondsRemaining": 810.9751719
},
"upcoming": {
"utcStart": "2026-03-18T22:00:00.0000000Z",
"utcEnd": "2026-03-19T21:00:00.0000000Z"
}
}
Platform nuances
When the market is closed, the session object reflects the next upcoming session with "label": "Next Session" and "action": "Until Open".
Passing root resolves the current front-month NT8 instrument before calculating session status. Passing neither instrument nor root returns a missing-field error.
WebSocket API
This request can also be made over the WebSocket API. Query parameters are passed inside args. Use instrument for an exact contract or root for front-month resolution.
{
"action": "rpc",
"id": "my-request-id",
"api": "MarketInfo",
"args": {
"instrument": "ES 09-26"
}
}
Tradovate
There is no MarketInfo equivalent on the /v1/api/tv surface; for Tradovate reference data use /v1/api/tv/contracts/find, /v1/api/tv/contracts/suggest, and /v1/api/tv/exchanges. See the Tradovate API overview for the full surface.