Skip to main content

Create ATM Template

Create an ATM template. The response is 201 Created with a Location header. Config values use the webhook syntax described in Tradovate ATM.

Elite

The Management API requires an Elite subscription. See Authentication.

Endpoint​

POST https://app.crosstrade.io/v1/api/manage/tradovate/atm-templates

Headers​

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

Body parameters​

NameTypeRequiredDescription
namestringYesThe name webhooks use
configobjectYesAt least config.targets and config.stops
descriptionstring or nullNoYour note
activebooleanNoDefaults to false

Code examples​

import requests

resp = requests.post(
"https://app.crosstrade.io/v1/api/manage/tradovate/atm-templates",
headers={"Authorization": "Bearer YOUR_TOKEN"},
json={'name': 'Scalp', 'description': 'Two targets, trail the runner', 'active': True,
'config': {'targets': '20,40', 'stops': '16,16', 'quantities': '1,1', 'trail': 'false,true'}},
)
print(resp.status_code, resp.json())

Responses​

{
"success": true,
"changed": true,
"data": {
"id": "tvatm_Qw12er34Ty56ui78",
"name": "Scalp",
"description": "Two targets, trail the runner",
"active": true,
"config": {
"targets": "20,40",
"stops": "16,16",
"quantities": "1,1",
"trail": "false,true",
"trailTrigger": null,
"trailOffset": null,
"breakeven": null,
"breakevenOffset": null
},
"created": "2026-10-02T14:31:07Z",
"updated": "2026-10-02T14:31:07Z"
},
"changedFields": [
"active",
"config.quantities",
"config.stops",
"config.targets",
"config.trail",
"description",
"name"
],
"delivery": {
"status": "immediate",
"target": "signal_gate"
},
"warnings": [],
"meta": {
"requestId": "req_9f2c1a0b7d3e4f51",
"etag": "\"c2:Tm90UmVhbEV0YWcwMg\""
}
}

When it takes effect​

The next webhook signal that names the template.

Notes​

  • New templates are off unless you send "active": true. Webhooks can only use active templates.
  • Names are unique without regard to case, so a retried create is refused with 409 template_name_conflict and cannot make a second template.
  • An invalid configuration returns 422 invalid_atm_config with a detail such as config.quantities must have exactly 2 value(s) to match config.targets; got 1 and fields naming config.quantities and config.targets.