Skip to main content

POST Flatten Everything

Flatten all NT8 positions and orders NT8

Closes positions in all or one account that meet all of the specified criteria: account, instrument, market position.

Endpoint

POST /v1/api/positions/flatten

Headers

NameValue
Content-Typeapplication/json
AuthorizationBearer <token>

Body parameters

NameTypeRequiredDescription
accountstringOptionalName of the account
instrumentstringOptionalName of underlying instrument
marketPositionstringOptional"long" or "short"
cancelOrdersboolOptionalFor a filtered flatten, run an explicit working-order cancellation pass after flattening.

Code examples

import requests

url = "https://app.crosstrade.io/v1/api/positions/flatten"
headers = {
"Authorization": "Bearer my-secret-token",
"Content-Type": "application/json"
}
data = {
"account": "Sim101",
"instrument": "MES 12-25",
"marketPosition": "short"
}

try:
response = requests.post(url, headers=headers, json=data)
print(f"Response Code: {response.status_code}, Response Text: {response.text}")
except Exception as e:
print(f"An error occurred: {e}")

Response

{
"orderIds": [
"adb3868865de4b59b0e147b8300e4a29",
"2141df9fc0254ba9b34c8a5e38722249",
"16f6774e302748ce962f2d60b58b2eb1"
],
"closedPositions": [
{
"type": "NinjaTrader.Cbi.Position",
"account": "Sim101",
"instrument": "ES 12-25",
"instrumentType": "Future",
"marketPosition": "Short",
"quantity": 2,
"averagePrice": 5780.125,
"marketPrice": 5774.0,
"unrealizedProfitLoss": 612.5
}
],
"success": true
}

Platform nuances

WARNING: An empty JSON payload (i.e., no filters applied) to this endpoint will close all positions and all orders across all accounts.

When using any filter, the request runs the filtered Flatten operation. Set cancelOrders: true when broker-held working stops or targets must be explicitly cancelled after the position closes.

warning

When providing filters (account, instrument, marketPosition), use "api": "Flatten". Use "api": "FlattenEverything" only for a complete flatten with no filters.

The REST endpoint (/v1/api/positions/flatten) handles this implicitly. The WebSocket function must be called explicitly.

WebSocket API

This request can also be made over the WebSocket API.

Flatten everything (no filters)

{
"action": "rpc",
"id": "my-request-id",
"api": "FlattenEverything",
"args": {}
}

Flatten with filters

{
"action": "rpc",
"id": "my-request-id",
"api": "Flatten",
"args": {
"account": "Sim101",
"instrument": "MES 12-25",
"marketPosition": "short"
}
}