For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Support Center
OverviewAPIResources
OverviewAPIResources
  • REST API Endpoints
      • POSTAccept Trading Permission
      • POSTAdd Entitlement Subscription
      • POSTAdd Market Data Subscription
      • POSTAdd Tradovate Subscription
      • POSTCancel Everything
      • POSTCancel Tradovate Subscription
      • POSTChange Plugin Permission
      • GETContact Info Dependents
      • GETContact Info Item
      • GETContact Info Items
      • GETContact Info L Dependents
      • POSTCreate Evaluation Accounts
      • POSTCreate Evaluation Users
      • POSTCreate Partner Subaccount Request
      • POSTCreate Trading Permission
      • POSTExpire User Lockout
      • POSTGet Account Trading Permissions
      • POSTGet Partner Subaccount Request Status
      • POSTMarket Data Subscription Create
      • GETMarket Data Subscription Dependents
      • GETMarket Data Subscription Item
      • GETMarket Data Subscription Items
      • GETMarket Data Subscription L Dependents
      • POSTMarket Data Subscription Update
      • POSTModify Credentials
      • POSTModify Email Address
      • POSTModify Password
      • POSTOpen Demo Account
      • GETOrganization Find
      • GETOrganization Item
      • GETOrganization Items
      • GETOrganization List
      • GETOrganization Suggest
      • POSTCreate POA Contact
      • POSTUpdate POA Contact
      • POSTRequest Trading Permission
      • POSTRevoke Trading Permission
      • POSTRevoke Trading Permissions
      • GETSecond Market Data Subscription Dependents
      • GETSecond Market Data Subscription Item
      • GETSecond Market Data Subscription Items
      • GETSecond Market Data Subscription L Dependents
      • GETSecond Market Data Subscription List
      • POSTSign Up Organization Member
      • POSTSubmit Customer Application Document
      • POSTSubmit Partner Subaccount Document
      • POSTSync Request
      • POSTTradovate Subscription Create
      • GETTradovate Subscription Dependents
      • GETTradovate Subscription Item
      • GETTradovate Subscription Items
      • GETTradovate Subscription L Dependents
      • GETUser Find
      • GETUser Item
      • GETUser Items
      • GETUser List
      • POSTUser Plugin Create
      • GETUser Plugin Dependents
      • GETUser Plugin Item
      • GETUser Plugin Items
      • GETUser Plugin L Dependents
      • POSTUser Plugin Update
      • GETUser Property Dependents
      • GETUser Property Item
      • GETUser Property Items
      • GETUser Property L Dependents
      • GETUser Session Item
      • GETUser Session Items
      • GETUser Session Stats Dependents
      • GETUser Session Stats Item
      • GETUser Session Stats Items
      • GETUser Session Stats L Dependents
      • GETUser Suggest
      • POSTUpdate Contact Info
      • POSTUpdate Contact Info Name
      • POSTUpdate Contact Country
      • GETMarket Data Subscription List
      • GETTradovate Subscription List
      • POSTActivate Second Market Data Subscription Renewal
      • POSTAdd Second Market Data Subscription
      • POSTCancel Second Market Data Subscription
      • POSTCancel Second Market Data Subscription Renewal
      • POSTExpire Market Data Subscription
      • POSTGet Second Market Data Subscription Cost
      • GETUser Plugin List
      • GETUser Session Stats List
Support Center
LogoLogo
REST API EndpointsUsers

Create Partner Subaccount Request

POST
https://demo.tradovateapi.com/v1/customerApplication/createpartnersubaccountrequest
POST
/v1/customerApplication/createpartnersubaccountrequest
1const url = 'https://demo.tradovateapi.com/v1/customerApplication/createpartnersubaccountrequest';
2const options = {
3 method: 'POST',
4 headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
5 body: '{"ctaUserId":12345,"riskCategoryId":3,"marginType":"Hedger","transferAmount":5000,"authorizedIndividual":true,"firstName":"Emily","lastName":"Johnson","country":"US","state":"NY","streetAddress1":"123 Maple Avenue","city":"Albany","zipCode":"12207","phone":"+1-518-555-0199","citizenship":"US","birthDate":{"year":1985,"month":7,"day":14}}'
6};
7
8try {
9 const response = await fetch(url, options);
10 const data = await response.json();
11 console.log(data);
12} catch (error) {
13 console.error(error);
14}
200Successful
1{
2 "errorText": "",
3 "requestId": 987654321,
4 "status": "Pending"
5}
### Create a subaccount request for a user. **Available to:** Organization administrators **Environments:** Production **[Rate Limit](/overview/core-concepts/rate-limits):** 250 requests per hour, 30-second back-off, counts all requests Use this endpoint to submit a new subaccount request for a user in your organization. <Warning>**Warning:** This endpoint returns **HTTP 200** for successes **and** business errors. Always check the `errorText` field in the response body to determine whether the request succeeded or failed.</Warning> <Info>Requests with `firstName` and `lastName` fields exceeding a combined 60 characters are rejected, despite each field individually allowing up to 64 characters.</Info> **US vs Non-US Requirements** - **US citizens**: Require a valid `taxIdentifier` (Social Security Number, exactly 9 digits). The `nationalId` field is optional. - **Non-US citizens**: Require a valid `nationalId` (2-64 alphanumeric characters). The `taxIdentifier` field is optional. **`requestId` for Uploading Documents** A successful request returns a unique `requestId`. Use this value: - As the `subAccountRequestId` when uploading the user's required documents with `submitpartnersubaccountdocument` - As the `subAccountRequestId` when tracking the progress of a subaccount request with `getpartnersubaccountrequeststatus` **Optional: Attach Previously Uploaded Documents** If you have already uploaded the user's required documents via the `submitcustomerapplicationdocument` endpoint, you can link them to the subaccount request by providing all three `documentId` fields (partial sets are rejected): - `pOAFormDocId` - `governmentDocId` - `addressDocId` If you provide all three document IDs, the documents are linked directly and you do not need to call `submitpartnersubaccountdocument` afterward. **Optional: Specify an Auto-Liquidation Profile** Include `autoLiqProfileId` to assign a specific [auto-liquidation profile](/overview/prop-firm-management/risk-management/pre-trade-risk#auto-liquidation-profile) to the new account. If you omit this field, the system uses your organization's default auto-liquidation profile. The system validates that the profile exists and belongs to your organization before accepting the request. If validation fails, the response includes an `errorText`: - `"Auto-liq profile not found"`: the profile ID does not exist - `"Auto-liq profile does not belong to this organization"`: the profile belongs to a different organization Contact Evaluation Support for your organization's available profile IDs. **Common Failure Scenarios** - Invalid or non-existent `ctaUserId` - `ctaUserId` belongs to a different organization - Missing required fields (firstName, lastName, citizenship, etc.) - Invalid Social Security Number (SSN) format for US citizenship (must be exactly 9 digits) - Missing `nationalId` for non-US citizenship - Invalid country or citizenship code (must be 2-character ISO code) - Invalid name characters (letters, spaces, hyphens, apostrophes, periods only) - Combined first and last name exceeds 60 characters - Non-admin user attempting to call the endpoint - Country or state is restricted - No master account found for the organization admin - No customer application found for the master account - Insufficient funds in master account to cover the `transferAmount` - Max sub-account limit exceeded for the given trader - When providing document IDs, must provide all three or none (partial is rejected) - Provided document IDs do not exist in the database - `autoLiqProfileId` references a non-existent profile - `autoLiqProfileId` belongs to a different organization **Next Steps** - If you have not uploaded the user's required documents, use the `submitpartnersubaccountdocument` endpoint to upload them. - If you already uploaded the user's required documents and provided the document IDs, use the `getpartnersubaccountrequeststatus` endpoint to check the status of the subaccount request.
Was this page helpful?
Previous

Create Trading Permission

Next
Built with

Create a subaccount request for a user.

Available to: Organization administrators

Environments: Production

Rate Limit: 250 requests per hour, 30-second back-off, counts all requests

Use this endpoint to submit a new subaccount request for a user in your organization.

Warning: This endpoint returns HTTP 200 for successes and business errors. Always check the errorText field in the response body to determine whether the request succeeded or failed.
Requests with firstName and lastName fields exceeding a combined 60 characters are rejected, despite each field individually allowing up to 64 characters.

US vs Non-US Requirements

  • US citizens: Require a valid taxIdentifier (Social Security Number, exactly 9 digits). The nationalId field is optional.
  • Non-US citizens: Require a valid nationalId (2-64 alphanumeric characters). The taxIdentifier field is optional.

requestId for Uploading Documents

A successful request returns a unique requestId. Use this value:

  • As the subAccountRequestId when uploading the user’s required documents with submitpartnersubaccountdocument
  • As the subAccountRequestId when tracking the progress of a subaccount request with getpartnersubaccountrequeststatus

Optional: Attach Previously Uploaded Documents

If you have already uploaded the user’s required documents via the submitcustomerapplicationdocument endpoint, you can link them to the subaccount request by providing all three documentId fields (partial sets are rejected):

  • pOAFormDocId
  • governmentDocId
  • addressDocId

If you provide all three document IDs, the documents are linked directly and you do not need to call submitpartnersubaccountdocument afterward.

Optional: Specify an Auto-Liquidation Profile

Include autoLiqProfileId to assign a specific auto-liquidation profile to the new account. If you omit this field, the system uses your organization’s default auto-liquidation profile.

The system validates that the profile exists and belongs to your organization before accepting the request. If validation fails, the response includes an errorText:

  • "Auto-liq profile not found": the profile ID does not exist
  • "Auto-liq profile does not belong to this organization": the profile belongs to a different organization

Contact Evaluation Support for your organization’s available profile IDs.

Common Failure Scenarios

  • Invalid or non-existent ctaUserId
  • ctaUserId belongs to a different organization
  • Missing required fields (firstName, lastName, citizenship, etc.)
  • Invalid Social Security Number (SSN) format for US citizenship (must be exactly 9 digits)
  • Missing nationalId for non-US citizenship
  • Invalid country or citizenship code (must be 2-character ISO code)
  • Invalid name characters (letters, spaces, hyphens, apostrophes, periods only)
  • Combined first and last name exceeds 60 characters
  • Non-admin user attempting to call the endpoint
  • Country or state is restricted
  • No master account found for the organization admin
  • No customer application found for the master account
  • Insufficient funds in master account to cover the transferAmount
  • Max sub-account limit exceeded for the given trader
  • When providing document IDs, must provide all three or none (partial is rejected)
  • Provided document IDs do not exist in the database
  • autoLiqProfileId references a non-existent profile
  • autoLiqProfileId belongs to a different organization

Next Steps

  • If you have not uploaded the user’s required documents, use the submitpartnersubaccountdocument endpoint to upload them.
  • If you already uploaded the user’s required documents and provided the document IDs, use the getpartnersubaccountrequeststatus endpoint to check the status of the subaccount request.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Request

This endpoint expects an object.
ctaUserIdlongRequired
riskCategoryIdlongRequired
marginTypeenumRequired
Hedger, Speculator
Allowed values:
transferAmountdoubleRequired
authorizedIndividualbooleanRequired
firstNamestringRequired<=64 characters
lastNamestringRequired1-64 characters
countrystringRequired=2 characters
statestringRequired2-64 characters
streetAddress1stringRequired3-61 characters
citystringRequired2-35 characters
zipCodestringRequired4-11 characters
phonestringRequired<=21 characters
citizenshipstringRequired=2 characters
birthDateobjectRequired
autoLiqProfileIdlongOptional
traderReasonstringOptional<=8192 characters
streetAddress2stringOptional<=61 characters
taxIdentifierstringOptional<=64 characters
nationalIdstringOptional<=64 characters
pOAFormDocIdlongOptional
governmentDocIdlongOptional
addressDocIdlongOptional

Response

CreatePartnerSubAccountRequestResponse
errorTextstring<=8192 characters

Non-empty if the request failed

requestIdlong
statusenum
Approved, Denied, InAMLReview, InReview, Pending, Preapproved