Skip to navigation

Operator ID (customTag50) and Passthrough

View as Markdown

Every order carries an operator ID: a value that identifies who placed it. Exchanges treat it as regulatory information, so NinjaTrader attaches one to every order for you.

The customTag50 field on order requests is how that value gets set. How you use it depends on how your organization is configured. There are two mechanisms, and a user uses one or the other, never both:

MechanismWho supplies the operator IDWhat you send
Allow-listYoucustomTag50 on every order, matching an approved value
PassthroughNinjaTrader, from the identity of the account ownerNothing. Omit customTag50

If neither is configured for your user, NinjaTrader derives the operator ID from the user who placed the order, and you omit customTag50.

customTag50 is optional in the API reference because it’s only required when an allow-list is configured for your user. Once an allow-list exists, it’s required on every order.

The field applies to order placement, modification, cancellation, liquidation, and order strategy requests.

Prerequisites

  • Know which mechanism your organization uses. If you’re not sure, ask your NinjaTrader contact.
  • Allow-list: NinjaTrader configures the approved operator IDs for your user.
  • Passthrough: NinjaTrader enables it on your organization administrator user. Passthrough doesn’t apply to other users.

How Each Configuration Behaves

The table covers a single user. Requests are checked against the allow-list first, using exactly what you sent. Passthrough only fills a value in afterward, so it can’t rescue a request that the allow-list check already denied.

User configurationYou send customTag50Result
NeitherNoAllowed. NinjaTrader derives the operator ID
NeitherYesDenied
Allow-listNoDenied
Allow-listYes, value is on the listAllowed
Allow-listYes, value isn’t on the listDenied
Passthrough onlyNoAllowed. NinjaTrader sets the operator ID to the account owner’s identity
Passthrough onlyYesDenied
Allow-list and passthroughNoDenied. Passthrough never applies
Allow-list and passthroughYes, value is on the listAllowed, using your value

Passthrough and the allow-list are mutually exclusive by design. A user with both must send the value on every order, so passthrough never fills anything in. Ask NinjaTrader for one mechanism, not both.

A denied request returns an access-denied error. Nothing is placed.

Values You Can Send

  • Up to 64 characters of printable text. Stick to letters, digits, and common punctuation.
  • Matching against the allow-list is exact and case-sensitive.
  • Omit the field instead of sending an empty value. Authorization treats an empty value as not sent, but under passthrough an empty value stops NinjaTrader from filling in the operator ID.

Examples

Allow-list: send an approved operator ID on every order.

const URL = 'https://live.tradovateapi.com/v1'
const body = {
accountSpec: yourUserName,
accountId: yourAcctId,
action: "Buy",
symbol: "MYMM1",
orderQty: 1,
orderType: "Market",
customTag50: "OPERATORID001", //must match a value NinjaTrader approved for your user
isAutomated: true
}
const response = await fetch(URL + '/order/placeorder', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Authorization': `Bearer ${myAccessToken}`,
},
body: JSON.stringify(body)
})

Passthrough: omit the field. NinjaTrader fills in the operator ID.

const URL = 'https://live.tradovateapi.com/v1'
const body = {
accountSpec: endCustomerUserName,
accountId: endCustomerAcctId,
action: "Buy",
symbol: "MYMM1",
orderQty: 1,
orderType: "Market",
isAutomated: true //no customTag50
}
const response = await fetch(URL + '/order/placeorder', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Authorization': `Bearer ${myOrgAdminAccessToken}`,
},
body: JSON.stringify(body)
})

Troubleshooting

What you seeLikely causeWhat to do
Every order is denied and you never send customTag50An allow-list is configured for your userSend an approved value, or ask NinjaTrader to remove the allow-list
Orders are denied when you send customTag50No allow-list is configured, or the value doesn’t match exactly (case, spaces)Omit the field, or send a value NinjaTrader approved
Passthrough is enabled and orders are deniedAn allow-list is also configured, or you’re sending customTag50Ask NinjaTrader to keep one mechanism. Omit the field under passthrough

Next Steps

  • See the place order reference for the request schema.
  • To enable passthrough, add or change an allow-list, or remove one, contact your NinjaTrader representative.