GET Fills
- NT8
- Tradovate
NinjaTrader 8
There is no NT8 endpoint that returns fills across every account in one request. Use GET Executions to retrieve execution history for a specific NT8 account.
The Tradovate endpoint on this page is REST-only. The WebSocket API applies to supported NT8 add-on routes, not this Tradovate route.
Current-session fills across all identities Tradovate
Returns the current trading session's fills across every linked Tradovate identity. The outer data array contains one {environment, userId, name, data} envelope per identity; each envelope's inner data array contains raw Tradovate fill rows (id, orderId, contractId, qty, price, action, timestamp) plus an instrument field carrying the contract symbol resolved from contractId. For fills scoped to one order, use /v1/api/tv/fills/order/{orderId}; for fills scoped to one account, use /v1/api/tv/accounts/{account}/fills.
Tradovate's API only tracks fills for the current trading session. The list resets at the daily session close (around 5:00 PM ET) and stays empty until the next open, including all weekend. Fills from earlier sessions never reappear here, even if the trades are visible in the Tradovate platform's history views. For a durable record that survives the daily reset, use GET Fill History.
Endpoint
GET /v1/api/tv/fills
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Code examples
- Python
- JavaScript
- cURL
import requests
token = 'my-secret-token'
url = "https://app.crosstrade.io/v1/api/tv/fills"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(f"Response Code: {response.status_code}, Response Text: {response.text}")
const token = 'my-secret-token';
const url = "https://app.crosstrade.io/v1/api/tv/fills";
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/tv/fills" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
Response
- 200
- 403
{
"success": true,
"data": [
{
"environment": "demo",
"userId": "12345",
"name": "Demo Trader",
"data": [
{
"id": 987654321,
"orderId": 123456789,
"contractId": 3543031,
"instrument": "ESU6",
"qty": 1,
"price": 5001.25,
"action": "Buy",
"timestamp": "2026-07-15T14:32:05.184Z"
}
]
}
]
}
Each outer row identifies the linked identity queried. The inner data rows are raw Tradovate fill records, plus the CrossTrade-resolved instrument symbol, and may carry additional fields. A per-identity upstream failure appears inside that envelope's data as an error object without dropping successful identities.
{
"success": false,
"error": "tradovate_not_linked"
}
Platform nuances
Authentication uses the same bearer token as the rest of the CrossTrade API and requires a plan with API access (Pro) plus a linked Tradovate account. Unlinked users receive 403 tradovate_not_linked.
The rows mirror Tradovate's own fill list for each identity, so they include manual trades and trades placed through other platforms, not just orders routed through CrossTrade. The session scope above applies to all of them equally.
This endpoint is REST-only and has no WebSocket equivalent.