GET Execution by Order ID
- NT8
- Tradovate
Get execution by order ID NT8
Retrieve all executions (fills) associated with a specific order ID. This searches across all accounts and matches against both the current broker-assigned order ID and the original order ID, so it will find fills even if the order was modified or replaced during its lifetime.
This is particularly useful for confirming that an order filled, checking the exact fill price and commission, or auditing the execution history of a replaced order chain.
Endpoint
GET /v1/api/executions/order/{orderId}
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
orderId | string | Required | The order ID to search for. Matches both the current and original order ID |
Code examples
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/executions/order/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/executions/order/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/executions/order/492281fc515e431692da57d957cfebb6" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
Response
- 200
- 200 - no match
{
"orderId": "4641c835c6d048ebb6fc71fc06f91543",
"count": 1,
"executions": [
{
"id": "a46d199f5ea54ddbaddc400d345ddd1a",
"type": "NinjaTrader.Cbi.Execution",
"time": "2026-03-18T13:57:05.1886119",
"epoch": 1773867425188,
"name": "",
"orderId": "4641c835c6d048ebb6fc71fc06f91543",
"originalOrderId": "4641c835c6d048ebb6fc71fc06f91543",
"account": "Sim101",
"serverName": "DESKTOP-200Q1V3",
"instrument": "MES 09-26",
"instrumentType": "Future",
"position": 7,
"marketPosition": "Long",
"positionStrategy": 0,
"price": 6615.25,
"quantity": 1,
"rate": 1.0,
"commission": "0.85",
"slippage": 0.0,
"lotSize": 1.0,
"isEntry": true,
"isEntryStrategy": false,
"isExit": false,
"isExitStrategy": false,
"isInitialEntry": false,
"isLastExit": false,
"isSod": false,
"barsInProgress": 0,
"exchange": "Default"
}
],
"success": true
}
{
"orderId": "nonexistent_id",
"count": 0,
"executions": []
}
Platform nuances
Note that a count of 0 is not an error. The order may exist but simply hasn't filled yet, or the order ID may not exist at all. If you need to distinguish between these cases, query the order directly via GET /v1/api/accounts/{account}/orders/{id} first.
WebSocket API
This request can also be made over the WebSocket API. The orderId path parameter is passed inside args.
{
"action": "rpc",
"id": "my-request",
"api": "GetExecutionsByOrderId",
"args": {
"orderId": "492281fc515e431692da57d957cfebb6"
}
}
Get execution by order ID Tradovate
Returns the Tradovate fills associated with one order ID from the current trading session. The request executes server-side against the Tradovate Web API and works while NinjaTrader is closed.
Tradovate's API only tracks fills for the current trading session. Once the daily session closes (around 5:00 PM ET), fills for the order no longer appear here, even though the order executed. For a durable record that survives the daily reset, use GET Fill History and filter client-side on the returned orderId.
Endpoint
GET /v1/api/tv/fills/order/{orderId}
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
orderId | int | Required | Numeric Tradovate order ID returned in the place envelope's response.orderId |
Code examples
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/tv/fills/order/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/fills/order/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/fills/order/123456789" \
-H "Authorization: Bearer $TOKEN"
Response
Successful reads return {"success": true, "data": ...}. For this endpoint, data is the
list of fills filtered to the specified Tradovate order ID. An empty list means the order has
no fills yet and is not an error.
{
"success": true,
"data": []
}
Platform nuances
- Tradovate calls the resource fills rather than executions.
- The order ID is numeric and comes from
response.orderIdin the place envelope. - An empty
datalist is a successful response and means there are no fills yet. - Each row includes
instrument(contract symbol, such asMNQU6) alongside the raw Tradovate fields. - The endpoint works while NinjaTrader is closed.
See the Tradovate API overview for the full field grammar, mutation safety guarantees, and error table.