List Monitors
List every Account Manager monitor on your login, sorted by account. Each item has the fields in Monitor fields.
Elite
The Management API requires an Elite subscription. See Authentication.
- NT8
- Tradovate
Endpoint
GET https://app.crosstrade.io/v1/api/manage/nt8/monitors
Headers
| Name | Required | Value |
|---|---|---|
| Authorization | Yes | Bearer <your API token> |
| If-None-Match | No | ETag from a previous list. Returns 304 with no body if nothing changed |
Code examples
- Python
- cURL
import requests
resp = requests.get(
"https://app.crosstrade.io/v1/api/manage/nt8/monitors",
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
print(resp.status_code, resp.json())
curl "https://app.crosstrade.io/v1/api/manage/nt8/monitors" \
-H "Authorization: Bearer YOUR_TOKEN"
Responses
- 200
- Other errors
{
"success": true,
"data": [
{
"account": "Sim101",
"nickname": null,
"active": true,
"state": "active",
"stoppedReason": null,
"pnlMode": "standard",
"includeUnrealized": true,
"dailyProfitTarget": 1000,
"dailyLossLimit": 500,
"onProfitTarget": {
"flatten": true,
"signals": "block"
},
"onLossLimit": {
"flatten": true,
"signals": "block"
},
"minimumProfit": {
"enabled": false,
"trigger": 0,
"threshold": 0,
"flatten": true,
"signals": "block"
},
"trailingDrawdown": {
"enabled": false,
"basis": "pnl",
"amount": 0,
"unit": "percent",
"trigger": 0,
"flatten": true,
"signals": "block"
},
"accountFloor": null,
"autoFlattenTime": "15:55",
"tradingWindows": [
{
"enabled": true,
"start": "09:30",
"end": "15:45",
"flattenAtEnd": false
}
],
"newsLockout": {
"blockSignals": true,
"flatten": false
},
"blockSignals": false,
"closingOnly": false,
"switchesLocked": false,
"positionProfitTarget": 0,
"positionLossLimit": 0,
"includeCommissions": true,
"cleanSessionProtection": true,
"outlierProtection": {
"enabled": true,
"sensitivity": "low"
},
"created": "2026-09-01T13:02:11Z",
"updated": "2026-10-02T14:31:07Z"
}
],
"meta": {
"requestId": "req_9f2c1a0b7d3e4f51",
"count": 1,
"etag": "\"c2:Tm90UmVhbEV0YWcwMg\""
}
}
| Status | error | When |
|---|---|---|
| 304 | If-None-Match matched; no body | |
| 400 | unexpected_body, unknown_parameter | A body or a query parameter was sent |
| 401 | unauthorized | Missing or invalid token |
| 403 | elite_required, not_available | See Authentication |
| 429 | rate_limited, too_many_concurrent_requests | See Rate limits |
| 503 | management_unavailable, family_unavailable, management_busy, storage_unavailable | See Errors |
Endpoint
GET https://app.crosstrade.io/v1/api/manage/tradovate/monitors
Headers
| Name | Required | Value |
|---|---|---|
| Authorization | Yes | Bearer <your API token> |
| If-None-Match | No | ETag from a previous list. Returns 304 with no body if nothing changed |
Code examples
- Python
- cURL
import requests
resp = requests.get(
"https://app.crosstrade.io/v1/api/manage/tradovate/monitors",
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
print(resp.status_code, resp.json())
curl "https://app.crosstrade.io/v1/api/manage/tradovate/monitors" \
-H "Authorization: Bearer YOUR_TOKEN"
Responses
- 200
- Other errors
{
"success": true,
"data": [
{
"account": "DEMO12345678",
"environment": "demo",
"nickname": null,
"active": true,
"state": "active",
"stoppedReason": null,
"pnlMode": "standard",
"includeUnrealized": true,
"dailyProfitTarget": 1000,
"dailyLossLimit": 500,
"onProfitTarget": {
"flatten": true,
"signals": "block"
},
"onLossLimit": {
"flatten": true,
"signals": "block"
},
"minimumProfit": {
"enabled": false,
"trigger": 0,
"threshold": 0,
"flatten": true,
"signals": "block"
},
"trailingDrawdown": {
"enabled": false,
"basis": "pnl",
"amount": 0,
"unit": "dollars",
"trigger": 0,
"flatten": true,
"signals": "block"
},
"accountFloor": null,
"autoFlattenTime": "15:55",
"tradingWindows": [
{
"enabled": true,
"start": "09:30",
"end": "15:45",
"flattenAtEnd": false
}
],
"newsLockout": {
"blockSignals": true,
"flatten": false
},
"blockSignals": false,
"closingOnly": false,
"switchesLocked": false,
"created": "2026-09-01T13:02:11Z",
"updated": "2026-10-02T14:31:07Z"
}
],
"meta": {
"requestId": "req_9f2c1a0b7d3e4f51",
"count": 1,
"etag": "\"c2:Tm90UmVhbEV0YWcwMg\""
}
}
| Status | error | When |
|---|---|---|
| 304 | If-None-Match matched; no body | |
| 400 | unexpected_body, unknown_parameter | A body or a query parameter was sent |
| 401 | unauthorized | Missing or invalid token |
| 403 | elite_required, not_available | See Authentication |
| 429 | rate_limited, too_many_concurrent_requests | See Rate limits |
| 503 | management_unavailable, family_unavailable, management_busy, storage_unavailable | See Errors |
Notes
- The list is not paginated.
stateandstoppedReasonshow what the monitor is doing now.- The list has its own ETag, in the
ETagheader andmeta.etag. Unlike a single monitor's ETag it also changes when a monitor'sstatechanges.