GET Order
- NT8
- Tradovate
Get order by ID NT8
Returns the full details for one order by its NT8-assigned or caller-supplied ID.
Endpoint
GET /v1/api/accounts/{account}/orders/{orderId}
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
account | string | Required | Name of account in NT8 |
orderId | string | Required | NT8-assigned order ID or the custom orderId supplied to Place Order. |
Code examples
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/accounts/Sim101/orders/492281fc515e431692da57d957cfebb6"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
try:
response = requests.get(url, headers=headers)
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 url = "https://app.crosstrade.io/v1/api/accounts/Sim101/orders/492281fc515e431692da57d957cfebb6";
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/orders/492281fc515e431692da57d957cfebb6" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
Response
- 200
- 400
{
"account": "Sim101",
"orderId": "50cca7b8051146c684087db511107983",
"instrument": "ES 12-25",
"instrumentType": "Future",
"orderType": "Market",
"orderState": "CancelPending",
"quantity": 1,
"averageFillPrice": 0.0,
"filled": 0,
"fromEntrySignal": null,
"gtd": "2099-12-01T00:00:00.0000000",
"hasOverfill": false,
"isBacktestOrder": false,
"limitPrice": 0.0,
"limitPriceChanged": 0.0,
"ocoId": "",
"orderAction": "Buy",
"quantityChanged": 0,
"stopPrice": 0.0,
"stopPriceChanged": 0.0,
"time": "2025-09-05T07:17:36.4864736",
"epoch": 1725545856486,
"timeInForce": "Day",
"name": "",
"isLimit": false,
"isLiveUntilCancelled": false,
"isLong": true,
"isMarket": true,
"isMarketIfTouched": false,
"isShort": false,
"isSimulatedStop": false,
"isStopLimit": false,
"isStopMarket": false,
"isTrackingConfigured": false,
"isTrackingEnabled": false,
"userData": "<NinjaTrader />",
"ownerStrategy": {
"id": null,
"name": null,
"displayName": null
},
"success": true
}
{
"error": "Invalid request"
}
Platform nuances
Order ID lookup
CrossTrade first attempts to match the current NT8 order ID. If that is not found, it also asks NT8 to resolve the caller-supplied ID stored in the order's UserData XML under AutomatedTradingOrderId. This lets you query by the custom orderId you sent at placement even if NT8, the broker, or a prop firm later changes the live order ID.
WebSocket API
This request can also be made over the WebSocket API. The account and orderId path parameters are passed inside args. The orderId value may be either the current NT8 order ID or your custom placement ID.
{
"action": "rpc",
"id": "my-request-id",
"api": "GetOrder",
"args": {
"account": "Sim101",
"orderId": "492281fc515e431692da57d957cfebb6"
}
}
Get order by ID Tradovate
Returns the raw Tradovate order item for one order. No NinjaTrader add-on is involved: the read executes server-side against the Tradovate Web API, so it works even while NinjaTrader is closed.
Endpoint
GET /v1/api/tv/accounts/{account}/orders/{id}
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
account | string | Required | Required route segment for the endpoint URL. |
id | string | Required | Tradovate order ID, for example 123456789. |
Code examples
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/tv/accounts/DEMO12345678/orders/123456789"
headers = {
"Authorization": f"Bearer {token}"
}
try:
response = requests.get(url, headers=headers)
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 url = "https://app.crosstrade.io/v1/api/tv/accounts/DEMO12345678/orders/123456789";
fetch(url, {
method: "GET",
headers: {
"Authorization": `Bearer ${token}`
}
})
.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/tv/accounts/DEMO12345678/orders/123456789" \
-H "Authorization: Bearer $TOKEN"
Response
The response uses the Tradovate read envelope. data is the raw Tradovate order item, and its live state is in ordStatus.
{
"success": true,
"data": {
"id": 123456789,
"ordStatus": "Working"
}
}
Platform nuances
- Tradovate uses
{id}in this route, while the NT8 route uses{orderId}. - The current REST handler passes
{id}directly to the Tradovate order-item lookup. It does not resolve a caller-supplied customorderId, and{account}is not used to verify ownership of the returned order. ordStatuscan beWorking,Filled,Canceled,Rejected, or another Tradovate order-state string.
See the Tradovate API overview for the full route list and error table.