developers:admin:onboarding

This is an old revision of the document!


T4 Onboarding API

The onboarding API endpoint provides a streamlined method for integrators to create fully functional user accounts in the T4 system with a single request. This endpoint is specifically designed for trading platform vendors who build on top of the T4 backend and handle user onboarding through their own website.

By consolidating the four integration steps (user creation, account creation, market data selection, and EULA acceptance) into a single call, this API significantly simplifies the integration process and reduces development overhead.

API requests must include authentication credentials. Contact [email protected] for integration specifics and access credentials.

The onboarding request combines all necessary user, account, market data, and EULA information into a single JSON payload:

{
    "User": {
        "username": "[email protected]",
        "password": "SecurePassword123!",
        "firstname": "John",
        "lastname": "Smith",
        "phone": "555-123-4567",
        "email": "[email protected]",
        "street": "123 Main Street",
        "city": "Anytown",
        "county": "Anycounty",
        "state": "IL",
        "postCode": "60001",
        "country": "US",
        "apptype": "NonProfessional"
    },
    "Account": {
        "account": "jsmith01",
        "accountName": "jsmith01",
        "templateAccount": "DefaultTemplate",
        "displayName": "John Smith Account"
    },
    "MarketData": {
        "updates": [{
            "clearingExchange": "DUMMY",
            "marketDataType": "Depth"
        }]
    },
    "Eula": {
        "collectedBy": "",
        "eulaVersion": "2",
        "signatures": [
            {
                "documentName": "LegalEULA",
                "signed": "2025-05-01T10:30:15"
            },
            {
                "documentName": "LegalPP",
                "signed": "2025-05-01T10:30:15"
            },
            {
                "documentName": "LegalMDSA",
                "signed": "2025-05-01T10:30:15"
            },
            {
                "documentName": "LegalUSA",
                "signed": "2025-05-01T10:30:15"
            },
            {
                "documentName": "LegalNPSCF",
                "signed": "2025-05-01T10:30:15"
            },
            {
                "documentName": "CMEInformationLicenseAgreement",
                "signed": "2025-05-01T10:30:15"
            },
            {
                "documentName": "ICESubscriberAgreement",
                "signed": "2025-05-01T10:30:15"
            }
        ]
    }
}
Field Type Description Required
username string Unique username for the user (typically email address) Yes
password string User's password (must meet security requirements) Yes
firstname string User's first name Yes
lastname string User's last name Yes
phone string User's contact phone number Yes
email string User's email address Yes
street string Street address Yes
city string City Yes
county string County Yes
state string State/Province code Yes
postCode string Postal/ZIP code Yes
country string Country code (ISO) Yes
apptype string User type (“Professional” or “NonProfessional”) Yes
Field Type Description Required
account string Unique account identifier Yes
accountName string Display name for the account Yes
templateAccount string Template account to base settings on Yes
displayName string User-friendly display name No

The MarketData object is optional but recommended for most integrations.

Field Type Description Required
updates array Array of exchange data subscriptions No

Each entry in the updates array contains:

Field Type Description Required
clearingExchange string Exchange identifier Yes
marketDataType string Data subscription type (e.g., “Depth”, “TOB”, “Delayed”) Yes

The Eula object is optional but required for a fully functional user account.

Field Type Description Required
collectedBy string Entity collecting the EULA (typically empty string) Yes
eulaVersion string Version of EULA presented to user Yes
signatures array Array of signed document objects Yes

Each signature object contains:

Field Type Description Required
documentName string Identifier for the document Yes
signed string Timestamp when the document was signed (ISO 8601 format) Yes

A successful response will include comprehensive information about the created user, account, market data subscriptions, and EULA status:

{
    "result": {
        "value": {
            "data": {
                "user": {
                    "userID": "90E53A07-B293-4805-B848-D91919337D0E",
                    "userName": "[email protected]",
                    "lastname": "Smith",
                    "firstname": "John",
                    "enabled": true,
                    "message": "",
                    "company": "",
                    "phone": "555-123-4567",
                    "email": "[email protected]",
                    "firmID": "2884B215-4A4B-4E9D-A40E-F8212D713E13",
                    "billingRef": "",
                    "street": "123 Main Street",
                    "city": "Anytown",
                    "county": "Anycounty",
                    "state": "IL",
                    "postCode": "60001",
                    "country": "US",
                    "simFirm": "",
                    "simUsername": "",
                    "simLinkedUserID": "",
                    "userCreationDate": "2025-05-15T00:00:00",
                    "appType": "NonProfessional",
                    "cmeMarketDataNetting": "Netting",
                    "trialExpires": "2025-05-29T00:00:00",
                    "iceMarketDataAccount": "",
                    "iceMarketDataParentAccount": "",
                    "euronextMarketDataAccount": "",
                    "euronextMarketDataParentAccount": "",
                    "custOrderHandlingInst": "Electronic",
                    "applications": [
                        {
                            "id": "2B9D2612-7C19-407C-89B4-E813CCD45DD1",
                            "name": "AppName1"
                        },
                        {
                            "id": "030C8C1E-D1FE-4782-81FC-8BC4D13CB122",
                            "name": "AppName2"
                        }
                        // Additional applications omitted for brevity
                    ],
                    "roles": [
                        "TimeEntry",
                        "QueueOrders",
                        "ANTSEditor",
                        "ANTSFastBoard",
                        "MarketProfile",
                        "Strategy",
                        "ModifyOrders",
                        "BasicCharting",
                        "Charting",
                        "ANTS1",
                        "PitTrades",
                        "BillingRetail1",
                        "Trading",
                        "ANTSAccountNet",
                        "StrategyQuotes"
                    ],
                    "accounts": []
                },
                "account": {
                    "accountID": "9526FC9A-0500-4261-8BC9-1FB88F537206",
                    "firmID": "2884B215-4A4B-4E9D-A40E-F8212D713E13",
                    "account": "jsmith01",
                    "accountName": "jsmith01",
                    "displayName": "",
                    "balance": 0.00000,
                    "cash": 0.00000,
                    "maxClipSize": 2000,
                    "preTradeDisabled": true,
                    "deleted": false,
                    "enabled": "Disabled",
                    "positionRollover": false,
                    "plRollover": true,
                    "minBalance": 0.00000,
                    "marginPC": 100.0,
                    "overnightMarginPC": 100.0,
                    "lossLimit": 0.00000,
                    "lossLimitPC": 0.0,
                    "dayLossLimit": 0.00000,
                    "dayLossLimitPC": 0.0,
                    "maxPosition": -1,
                    "noBalanceUpdates": false,
                    "noPositionUpdates": false,
                    "accountMode": "ByContract",
                    "orderRouting": false,
                    "groupName": "",
                    "activeTimeStart": "",
                    "activeTimeStop": "",
                    "strategyMaxClipSize": 2000,
                    "strategyMaxPosition": -1,
                    "warningThresholdPL": -1,
                    "warningThresholdLossLimit": -1,
                    "warningThresholdMargin": -1,
                    "boFirmCode": "",
                    "boOfficeCode": "",
                    "boSalesCode": "",
                    "totalPitTrades": -1,
                    "strategyTotalPitTrades": -1,
                    "maxContractMargin": -1.00000,
                    "maxContractDayMargin": -1.00000,
                    "blockExpiring": -1,
                    "blockExpiringOptions": -1,
                    "maxAccountPosition": -1,
                    "usePLForMargin": true,
                    "usePremiumForMargin": false,
                    "riskAlerts": false,
                    "fees": 0.0,
                    "commission": 0.00000,
                    "eMail": "",
                    "wideMarket": -1,
                    "priceBanding": -1,
                    "riskDebug": "None",
                    "tradeImport": false,
                    "marginType": "Spec",
                    "maxDelta": -1.00000,
                    "maxWorkingLongDelta": -1.00000,
                    "maxWorkingShortDelta": -1.00000,
                    "delayed": false,
                    "assignedType": true,
                    "optionsSettlement": 0,
                    "warningThresholdMinNetEquity": 0.00000,
                    "riskDetails": {
                        "comparisonRiskNumber": 0.0,
                        "comparisonNetLiqBalPCRiskNumber": 0.0,
                        "comparisonPCChangeVolatility": 0.2,
                        "comparisonPCChangeUnderlying": 0.1,
                        "comparisonWarningLevel": 0.8,
                        "maxDailyTheoLoss": 0.0,
                        "maxDailyTheoLossPCWarning": 0.8,
                        "greekDelta": 0.0,
                        "greekDeltaWarning": 0.8,
                        "greekVega": 0.0,
                        "greekVegaWarning": 0.8,
                        "greekGamma": 0.0,
                        "greekGammaWarning": 0.8,
                        "greekTheta": 0.0,
                        "greekThetaWarning": 0.8
                    },
                    "firm": "",
                    "parentFirmID": ""
                },
                "marketData": {
                    "exchangeMarketData": [
                        {
                            "clearingExchange": "DUMMY",
                            "description": "DUMMY",
                            "marketDataType": "Depth",
                            "options": [
                                {
                                    "type": "Depth",
                                    "description": "Depth",
                                    "currency": "USD"
                                },
                                {
                                    "type": "Delayed",
                                    "description": "Delayed",
                                    "currency": "USD"
                                }
                            ],
                            "hasExecutingAccount": true
                        }
                    ],
                    "totalCount": 1
                },
                "eulaSignature": {
                    "collectedBy": "API",
                    "eulaVersion": "2",
                    "signatures": [
                        {
                            "documentName": "LegalEULA",
                            "signed": "2025-05-01T10:30:15"
                        },
                        {
                            "documentName": "LegalPP",
                            "signed": "2025-05-01T10:30:15"
                        },
                        {
                            "documentName": "LegalMDSA",
                            "signed": "2025-05-01T10:30:15"
                        },
                        {
                            "documentName": "LegalUSA",
                            "signed": "2025-05-01T10:30:15"
                        },
                        {
                            "documentName": "LegalNPSCF",
                            "signed": "2025-05-01T10:30:15"
                        },
                        {
                            "documentName": "CMEInformationLicenseAgreement",
                            "signed": "2025-05-01T10:30:15"
                        },
                        {
                            "documentName": "ICESubscriberAgreement",
                            "signed": "2025-05-01T10:30:15"
                        }
                    ]
                }
            },
            "metadata": {
                "timestamp": "2025-05-15T21:58:44.5038392Z",
                "requestId": "0HNCJVEI883I0:00000001"
            }
        },
        "formatters": [],
        "contentTypes": [],
        "statusCode": 200
    }
}

The onboarding endpoint provides flexibility by making certain components optional:

  • MarketData: If omitted, the user will not have market data access until configured separately.
  • Eula: If omitted, the user will be required to accept EULAs on first login.

Integrators should discuss their specific requirements with [email protected] to determine which components are necessary for their implementation.

The onboarding process relies on template users and accounts to streamline configuration:

  • User properties are derived from the firm's default user template
  • Account properties are derived from the specified template account
  • Both templates can be overridden using the templateUser and templateAccount parameters

Important: Properly configuring firm defaults and templates will significantly reduce the amount of customization needed for each new user.

For a user to successfully log in after onboarding, the following must be complete:

  • User account created with valid credentials
  • Trading account created and linked to the user
  • EULAs accepted (either through the API or on first login)

Market data subscriptions configured during onboarding will be billed according to the selected options. Consider the following when implementing:

  • Market data options vary by exchange
  • Each option has associated fees and currencies
  • The apptype field in the User object affects available market data options

Newly created accounts have the following default states:

  • preTradeDisabled: true
  • enabled: “Disabled”

Additional configuration may be required before trading can commence.

The API returns standard HTTP status codes along with detailed error information:

  • 200: Operation successful
  • 400: Bad request (invalid parameters)
  • 401: Unauthorized (authentication failure)
  • 404: Resource not found
  • 409: Conflict (e.g., username already exists)
  • 500: Server error

Detailed error messages are provided in the response body to assist with troubleshooting.

For questions, issues, or assistance with the Onboarding API, please contact:

  • developers/admin/onboarding.1747415313.txt.gz
  • Last modified: 2025/05/18 18:12
  • (external edit)