Create and Manage Users and Accounts

When you’re ready to onboard traders, this guide walks you through creating users, setting up evaluation accounts, and assigning entitlements.

Use batched creation operations when possible, even for single users. Batched endpoints are more efficient than individual API calls.

Prerequisites

Before you start, gather the following IDs. You’ll reuse them for every user and account you create.

Tradovate Subscription Plan ID

Each organization has a unique Tradovate Subscription Plan. You’ll use this ID as the tradovateSubscriptionPlanId field when creating users.

To find your organization’s Tradovate subscription plan ID:

From the environment (staging or production) that matches where you’ll be creating accounts, call /tradovateSubscriptionPlan/list to get all available subscription plans. Use the plan associated with your firm, named <YOUR FIRM NAME>_MONTHLY.

GET
/v1/tradovateSubscriptionPlan/list
1curl https://demo.tradovateapi.com/v1/tradovateSubscriptionPlan/list \
2 -H "Authorization: Bearer <token>"

Template Account ID

Eval Support sets up template accounts for your organization based on your requirements. You’ll use the template account ID as the templateAccountId field when creating evaluation accounts.

To find your template account ID:

  1. From the Admin Dashboards in the environment (staging or production) that matches where you’ll be creating accounts, click Query Builder on the left pane.
  2. Choose accounts from the Repository drop-down.
  3. Find accounts with “template account” names.
    • Typically a query like this works: name like "(?ium).*5K" OR name like "(?ium).*0K" (query examples production, staging)

What Information is Needed to Build My Templates?

If you don’t already have template accounts set up for your organization, reach out to Eval Support. To create a template account or set of template accounts, provide the following:

  • A name for the account template
  • Lot limits for the account type, such as how many E-mini or Micro contracts the account can hold at maximum
  • Restricted products. You can restrict access to any products, product categories, or even whole exchanges for an account type.
  • Liquidation time. By default, automatic liquidation is set between 4:00 PM and 5:00 PM CT, but you can specify something more specific (or edit the value yourself after creation via RiskTimePeriod).

Step 1: Create Your Users

Call /user/createEvaluationUsers to create new users (up to 100 in a single request). Use the Tradovate Subscription Plan ID from Prerequisites as the tradovateSubscriptionPlanId field.

This endpoint handles user registration and Tradovate subscription assignment in a single call; you don’t need to call signUpOrganizationMember or addTradovateSubscription separately.

Endpoint: POST /user/createEvaluationUsers

Environments: Live

Request Parameters

POST
/v1/user/createevaluationusers
1curl -X POST https://demo.tradovateapi.com/v1/user/createevaluationusers \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "users": [
6 {
7 "name": "string",
8 "email": "string",
9 "password": "string",
10 "firstName": "string",
11 "lastName": "string"
12 }
13 ]
14}'

Response

Response
1{
2 "results": [
3 {
4 "errorText": "string",
5 "userId": 1
6 }
7 ],
8 "errorText": "string"
9}
Store the returned userId and map it to your internal user records. You’ll need it for subsequent operations.
The createEvaluationUsers endpoint accepts an entitlementIds field, but do not pass Sim+ entitlement IDs (such as T-Prop) here. The entitlement must be assigned using the addEntitlementSubscription endpoint after the user signs the Market Data Agreement. See Step 5 for details.

Step 2: Add Contact Information

Add contact information for the user. If you skip this step, the user will be prompted to enter it on their first login.

Endpoint: POST /contactInfo/updateContactInfo

Environments: Live

Request Parameters

POST
/v1/contactInfo/updateContactInfo
1curl -X POST https://demo.tradovateapi.com/v1/contactInfo/updateContactInfo \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "userId": 1,
6 "firstName": "string",
7 "lastName": "string",
8 "streetAddress1": "string",
9 "city": "string",
10 "postCode": "string",
11 "country": "string",
12 "phone": "string"
13}'

Key Requirements

  • State: Only required when country == "US"
  • Country: Use two-letter country codes (Alpha-2 format)
  • Phone: String format supporting international prefixes

Step 3: Create Evaluation Accounts

From the demo-api (staging) or demo (production) domain, call /user/createEvaluationAccounts to create new accounts and automatically assign them to users by user ID. Use the Template Account ID from Prerequisites as the templateAccountId field.

Endpoint: POST /user/createEvaluationAccounts

Environments: Demo

POST
/v1/user/createevaluationaccounts
1curl -X POST https://demo.tradovateapi.com/v1/user/createevaluationaccounts \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "accounts": [
6 {
7 "userId": 1,
8 "templateAccountId": 1,
9 "name": "string",
10 "initialBalance": 1.1
11 }
12 ]
13}'
Response
1{
2 "results": [
3 {
4 "errorText": "string",
5 "accountId": 1,
6 "tradingPermissionId": 1
7 }
8 ],
9 "errorText": "string"
10}

The response includes a tradingPermissionId. This endpoint creates the account and assigns a trading permission in one operation.

Include preTradeRisk and postTradeRisk fields in your createEvaluationAccounts request when applicable. This reduces the number of API calls compared to making a separate call to userAccountAutoLiq/update after account creation.
Values such as daily loss limits or trailing drawdown are set via Post-Trade Risk, and aren’t defined at the template level. You must set these values at the time of account creation.

Step 4: Confirm the Market Data Agreement Signature

Before you can assign the T-Prop entitlement, users must sign the non-professional Market Data Agreement. There are two ways to detect when a user signs:

Endpoint: POST /user/syncrequest

To receive Market Data Agreement signature events in real time, set up a WebSocket and perform a syncRequest.

POST
/v1/user/syncrequest
1curl -X POST https://demo.tradovateapi.com/v1/user/syncrequest \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{}'

You can then listen for messages like the following:

1[
2 {
3 "e": "props",
4 "d": [
5 {
6 "entityType": "OtherEnvAdminAlertSignal",
7 "eventType": "Created",
8 "entity": {
9 "adminAlertSignal": {
10 "id": 2179591,
11 "timestamp": "2025-10-03T15:18:56.885Z",
12 "adminAlertId": 70,
13 "relatedToUserId": 29721,
14 "text": "User TPropTestUser1001 signed non-professional market data form, <br />User name: Bill Rando <br />Date: 10/03/2025 <br />Timestamp: 2025-10-03 15:18:56 UTC <br />",
15 "emailSent": false,
16 "archived": false,
17 "subjectId": 12081
18 }
19 }
20 }
21 ]
22 }
23]
In staging, use adminAlertId=70. In production, use adminAlertId=68.

Step 5: Add the T-Prop Entitlement

After the system confirms the user has contact info and has signed the Market Data Agreement, assign the T-Prop entitlement.

If you call addEntitlementSubscription before the user signs the Market Data Agreement, the call fails. It returns an HTTP 200 with the errorText “Live account is required”, meaning the user hasn’t signed the Market Data Agreement yet.

Endpoint: POST /userPlugin/addEntitlementSubscription

Environments: Live

POST
/v1/userPlugin/addentitlementsubscription
1curl -X POST https://demo.tradovateapi.com/v1/userPlugin/addentitlementsubscription \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "entitlementId": 1
6}'

Restricted Countries

Per CME Group policy, market data must not be accessed, distributed, or consumed in certain countries and regions. To learn more, see Restricted Countries.


Revoking and Canceling

When users fail evaluations or leave your program:

  1. Revoke trading permissions to remove access to specific accounts
  2. Cancel subscriptions to stop platform access and billing

See Revoke and Cancel Users and Accounts for detailed instructions.


Next Steps

After you’ve created users and provisioned their accounts, continue with:

  1. Risk Management Setup: Configure account risk parameters
  2. Market Data Renewals: Automatic renewals for market data subscriptions