Skip to main content

Update ATM Template

Change a template. config merges: send only the entries you want to change, and null removes one. Config values use the webhook syntax described in Tradovate ATM.

Elite

The Management API requires an Elite subscription. See Authentication.

Endpoint​

PATCH https://app.crosstrade.io/v1/api/manage/tradovate/atm-templates/{id}

Headers​

NameRequiredValue
AuthorizationYesBearer <your API token>
Content-TypeYesapplication/json
If-MatchNoETag from a previous read. The request fails with 412 if the template changed since then

Path parameters​

NameTypeDescription
idstringThe resource id

Body parameters​

Send any writable field from ATM template fields. config merges field by field; set a config field to null to remove it. The whole configuration is checked after your change is applied.

You can send back the whole object from a GET: id and created are ignored when they equal the saved values, updated is always ignored, and if nothing differs the response says changed: false.

Code examples​

import requests

resp = requests.patch(
"https://app.crosstrade.io/v1/api/manage/tradovate/atm-templates/tvatm_Qw12er34Ty56ui78",
headers={"Authorization": "Bearer YOUR_TOKEN"},
json={'config': {'targets': '24,48'}},
)
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": "24,48",
"stops": "16,16",
"quantities": "1,1",
"trail": "false,true",
"trailTrigger": null,
"trailOffset": null,
"breakeven": null,
"breakevenOffset": null
},
"created": "2026-09-01T13:02:11Z",
"updated": "2026-10-02T14:31:07Z"
},
"changedFields": [
"config.targets"
],
"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.