GET Quote
- NT8
- Tradovate
Live quote a specific instrument NT8
Uses the legacy account-scoped route to return current quotes from the NinjaTrader data feed. The endpoint accepts both single instruments and multiple instruments in a comma-separated list.
Endpoint
GET /v1/api/accounts/{account}/quote
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
account | string | Required | Name of account in NT8 |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
instrument | string | Required | URL-encoded instrument name (e.g., ES%2012-25), can also be CSV list |
Code examples
/v1/api/accounts/Sim101/quote?instrument=ESU5
/v1/api/accounts/Sim101/quote?instrument=ESU5,NQU5
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/accounts/Sim101/quote"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
params = {
"instrument": "NQ 12-25"
}
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: "NQ 12-25" });
const url = `https://app.crosstrade.io/v1/api/accounts/Sim101/quote?${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/accounts/Sim101/quote?instrument=NQ%2012-25" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
Response
- 200
- 400
{
"instrument": "ES 12-25",
"description": "E-mini S&P 500 Futures",
"type": "Future",
"bid": 5781.75,
"ask": 5782.25,
"last": 5782.0,
"open": 5792.25,
"high": 5798.75,
"low": 5773.5,
"close": 5792.0,
"volume": 574915,
"tickSize": 0.25,
"pointValue": 50.0,
"exchange": "Globex",
"expiration": "12/1/2025 12:00:00 AM",
"tradingHours": "CME US Index Futures ETH",
"quoteTime": "9/25/2025 9:51:03 AM",
"success": true
}
{
"error": "Invalid request"
}
Platform nuances
As of v1.12.0 this endpoint is considered legacy/deprecated. Please use the GET Quote endpoint from the market service, which does not require an account to be specified.
WebSocket API
This request can also be made over the WebSocket API. The account path parameter and query parameters are passed inside args.
{
"action": "rpc",
"id": "my-request-id",
"api": "GetQuote",
"args": {
"account": "Sim101",
"instrument": "ES 09-26"
}
}
Tradovate
There is no standalone quote endpoint on the /v1/api/tv surface; the accounts snapshot (GET /v1/api/tv/accounts/snapshot) carries per-position marks, and the Tradovate API overview lists the full read surface.
Use the documented Tradovate accounts snapshot when per-position marks satisfy the integration's needs.