Skip to main content

Create Copier

Create a trade copier. The response is 201 Created with a Location header that points at the new copier.

New copiers start off

A copier created without "active": true does not copy anything until you turn it on.

Elite

The Management API requires an Elite subscription. See Authentication.

Endpoint​

POST https://app.crosstrade.io/v1/api/manage/nt8/copiers

Headers​

NameRequiredValue
AuthorizationYesBearer <your API token>
Content-TypeYesapplication/json

Body parameters​

NameTypeRequiredDescription
typesingle or groupYesOne follower, or a named group
leaderstringYesThe account to copy
followersarray of {account, ratio?}YesExactly 1 for single; 2 to 200 for group
groupNamestringFor groupName of the group
any other writable fieldsee Copier fieldsNoLeft out, a field takes the web app default. active defaults to false

Code examples​

import requests

resp = requests.post(
"https://app.crosstrade.io/v1/api/manage/nt8/copiers",
headers={"Authorization": "Bearer YOUR_TOKEN"},
json={'type': 'single', 'leader': 'Sim101', 'followers': [{'account': 'DemoAccount'}], 'instruments': ['ES', 'NQ'], 'active': True},
)
print(resp.status_code, resp.json())

Responses​

{
"success": true,
"changed": true,
"data": {
"id": "4b1f0c9e2d7a4c55b1e0",
"nickname": null,
"active": true,
"mode": "order",
"leader": "Sim101",
"type": "single",
"groupName": null,
"followers": [
{
"account": "DemoAccount"
}
],
"sizing": {
"method": "ratio",
"ratio": 1,
"quantity": null,
"maxQuantity": null
},
"inverse": false,
"fillsOnly": false,
"instruments": [
"ES",
"NQ"
],
"symbolReplacements": {},
"stealth": true,
"tandem": false,
"autoSync": {
"enabled": true,
"intervalSeconds": 10
},
"syncCorrection": {
"cooldownSeconds": 300,
"maxAttempts": 1
},
"reconnectDelayMs": 10000,
"strategyTagMode": "override",
"created": "2026-10-02T14:31:07Z",
"updated": "2026-10-02T14:31:07Z"
},
"changedFields": [
"active",
"autoSync.enabled",
"autoSync.intervalSeconds",
"fillsOnly",
"followers",
"id",
"instruments",
"inverse",
"leader",
"mode",
"reconnectDelayMs",
"sizing.method",
"sizing.ratio",
"stealth",
"strategyTagMode",
"syncCorrection.cooldownSeconds",
"syncCorrection.maxAttempts",
"tandem",
"type"
],
"delivery": {
"status": "queued",
"target": "nt8_addon"
},
"warnings": [],
"meta": {
"requestId": "req_9f2c1a0b7d3e4f51",
"etag": "\"c2:Tm90UmVhbEV0YWcwMg\""
}
}

When it takes effect​

NinjaTrader: sent to the add-on right after the save, or when it next connects. Tradovate: signal mode on the next signal, execution and order mode on the next fill.

Notes​

  • The copy-loop and duplicate checks compare against all your copiers, including ones that are off.
  • A second copier on the same leader and follower is allowed only when the two copy different instruments. On Tradovate, a copier created with "active": true is refused when any other copier already links that leader and follower, whatever the instruments.
  • tandem: true needs an Account Manager monitor on every follower (409 tandem_requires_monitor).
  • A NinjaTrader create checks the accounts with your add-on, so it needs the add-on connected (409 addon_disconnected).
  • NinjaTrader copiers use ratio sizing only.
  • There is no idempotency key, but retrying the same create is refused with 409 duplicate_copier, even when the first copier is off, because it already links that leader and follower on the same instruments. If a create response was lost, list your copiers to find it.