developers:admin:walktrhough

This is an old revision of the document!


Integration Walkthrough

This walkthrough demonstrates the process for integrating with the T4 backend to create user accounts for third-party applications.

Creating a new user in the T4 system involves four essential steps:

  • Step 1: Create user account
  • Step 2: Create trading account
  • Step 3: User market data selection
  • Step 4: User signs EULAs

The order of these steps is important.

New users and accounts are created using the firm default user and account as a template. Proper configuration of the firm default will simplify integration by reducing the amount of customization needed for each new user.

Note: For different user types, you can override the default by using the templateUser or templateAccount parameter, allowing unlimited pre-configured user and account defaults.

This endpoint creates a base user profile in the system.

POST https://api-sim.t4login.com/admin/users

{
  "username": "[email protected]",
  "password": "0ctopus777{",
  "firstname": "Test",
  "lastname": "User",
  "phone": "212-555-0123",
  "email": "[email protected]",
  "street": "2 Pierce Place",
  "city": "Itasca",
  "county": "Dupage",
  "state": "IL",
  "postCode": "60143",
  "country": "US",
  "apptype": "NonProfessional"
}
{
    "result": {
        "value": {
            "data": {
                "userID": "8C6AC430-3292-4C1D-BE98-F0637B64734F",
                "userName": "[email protected]",
                "lastname": "User",
                "firstname": "Test",
                "enabled": true,
                "message": "",
                "company": "",
                "phone": "212-555-0123",
                "email": "[email protected]",
                "firmID": "2884B215-4A4B-4E9D-A40E-F8212D713E13",
                "billingRef": "",
                "street": "2 Pierce Place",
                "city": "Itasca",
                "county": "Dupage",
                "state": "IL",
                "postCode": "60143",
                "country": "US",
                "simFirm": "",
                "simUsername": "",
                "simLinkedUserID": "",
                "userCreationDate": "2025-04-24T00:00:00",
                "appType": "NonProfessional",
                "cmeMarketDataNetting": "Netting",
                "trialExpires": "2025-05-08T00:00:00",
                "iceMarketDataAccount": "",
                "iceMarketDataParentAccount": "",
                "euronextMarketDataAccount": "",
                "euronextMarketDataParentAccount": "",
                "custOrderHandlingInst": "Electronic",
                "applications": [
                    /* Application list truncated for brevity */
                ],
                "roles": [
                    "TimeEntry",
                    "QueueOrders",
                    "ANTSEditor",
                    "ANTSFastBoard",
                    "MarketProfile",
                    "Strategy",
                    "ModifyOrders",
                    "BasicCharting",
                    "Charting",
                    "ANTS1",
                    "PitTrades",
                    "BillingRetail1",
                    "Trading",
                    "ANTSAccountNet",
                    "StrategyQuotes"
                ],
                "accounts": []
            },
            "metadata": {
                "timestamp": "2025-04-24T18:03:32.2637427Z",
                "requestId": "0HNC3B7647GLB:00000001"
            }
        },
        "formatters": [],
        "contentTypes": [],
        "statusCode": 200
    }
}

Important: Make note of the userID value in the response. This will be needed for Step 2.

This endpoint creates a trading account and links it to the user created in Step 1.

POST http://api-sim.t4login.com/admin/v1/accounts

{
  "account": "chadtest13",
  "accountName": "chadtest13",
  "templateAccount": "Chad01",
  "displayName": "Chad Test 13",
  "accountUserId": "8C6AC430-3292-4C1D-BE98-F0637B64734F"
}
{
    "result": {
        "value": {
            "data": {
                "accountID": "33CB0961-CBD8-408F-9EE1-06E34BB78D21",
                "firmID": "2884B215-4A4B-4E9D-A40E-F8212D713E13",
                "account": "chadtest13",
                "accountName": "chadtest13",
                "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": ""
            },
            "metadata": {
                "timestamp": "2025-04-24T19:14:58.7012103Z",
                "requestId": "0HNC3CH5EIF80:00000001"
            }
        },
        "formatters": [],
        "contentTypes": [],
        "statusCode": 200
    }
}

This step configures the market data feeds accessible to the user.

GET https://api-sim.t4login.com/admin/v1/users/{USERID}/marketdata

PATCH https://api-sim.t4login.com/admin/v1/users/{USERID}/marketdata

We bill for market data based on the selection made in this step. Therefore these values are not copied from a default or template user.

How to proceed with this step depends on how you plan to assign market data to a user:

  1. All users get a specific exchange(s) by default.
  2. User is presented with an interface to choose.

In this case, simply PATCH the same Json for all users.

{
 "updates": [
   {
     "clearingExchange": "CME",
     "marketDataType": "Depth"
   }
 ]
}
{
    "data": {
        "exchangeMarketData": [
            {
                "clearingExchange": "CBOT",
                "description": "CBOT",
                "marketDataType": "None",
                "options": [
                    {
                        "type": "TOB",
                        "description": "Top Of Book",
                        "fee": 3.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Depth",
                        "description": "Depth",
                        "fee": 12.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Delayed",
                        "description": "Delayed",
                        "currency": "USD"
                    }
                ],
                "hasExecutingAccount": true
            },
            {
                "clearingExchange": "CFE",
                "description": "CFE",
                "marketDataType": "None",
                "options": [
                    {
                        "type": "TOB",
                        "description": "Top Of Book",
                        "fee": 8.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Depth",
                        "description": "Depth",
                        "fee": 16.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Delayed",
                        "description": "Delayed",
                        "currency": "USD"
                    }
                ],
                "hasExecutingAccount": true
            },
            {
                "clearingExchange": "CME",
                "description": "CME",
                "marketDataType": "None",
                "options": [
                    {
                        "type": "TOB",
                        "description": "Top Of Book",
                        "fee": 3.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Depth",
                        "description": "Depth",
                        "fee": 12.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Delayed",
                        "description": "Delayed",
                        "currency": "USD"
                    }
                ],
                "hasExecutingAccount": true
            },

             ...            
             
        ],
        "totalCount": 40
    },
    "metadata": {
        "timestamp": "2025-04-24T18:05:55.0110086Z",
        "requestId": "0HNC3B7647GLB:00000007"
    }
}

Call the GET endpoint to get the available options and associated fees in a document that you can build an interface with.

{
    "data": {
        "exchangeMarketData": [
            {
                "clearingExchange": "CBOT",
                "description": "CBOT",
                "marketDataType": "None",
                "options": [
                    {
                        "type": "TOB",
                        "description": "Top Of Book",
                        "fee": 3.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Depth",
                        "description": "Depth",
                        "fee": 12.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Delayed",
                        "description": "Delayed",
                        "currency": "USD"
                    }
                ],
                "hasExecutingAccount": true
            },
            {
                "clearingExchange": "CFE",
                "description": "CFE",
                "marketDataType": "None",
                "options": [
                    {
                        "type": "TOB",
                        "description": "Top Of Book",
                        "fee": 8.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Depth",
                        "description": "Depth",
                        "fee": 16.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Delayed",
                        "description": "Delayed",
                        "currency": "USD"
                    }
                ],
                "hasExecutingAccount": true
            },
            {
                "clearingExchange": "CME",
                "description": "CME",
                "marketDataType": "None",
                "options": [
                    {
                        "type": "TOB",
                        "description": "Top Of Book",
                        "fee": 3.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Depth",
                        "description": "Depth",
                        "fee": 12.0,
                        "currency": "USD"
                    },
                    {
                        "type": "Delayed",
                        "description": "Delayed",
                        "currency": "USD"
                    }
                ],
                "hasExecutingAccount": true
            },

             ...            
             
        ],
        "totalCount": 40
    },
    "metadata": {
        "timestamp": "2025-04-24T18:05:55.0110086Z",
        "requestId": "0HNC3B7647GLB:00000007"
    }
}

This step completes the user creation process by confirming acceptance of required End User License Agreements.

GET https://api-sim.t4login.com/admin/v1/users/{USERID}/eula POST https://api-sim.t4login.com/admin/v1/users/{USERID}/eula

Always GET the lastest EULA document before POST'ing for the user.

The GET response includes a “signatureTemplate”. Use this and add timestamps to POST the EULA for the user.

Important: The user will not be able to log into the T4 system without valid signed EULA document.

{
    "data": {
        "documents": [
            {
                "documentName": "LegalEULA",
                "title": "End User License Agreement",
                "url": "https://admin.sim.t4login.com/disclaimers/EULA_Updated_Plus500US_Futures_Technologies_2025-02.pdf"
            },
            {
                "documentName": "LegalPP",
                "title": "Privacy Policy",
                "url": "https://futures-technologies.plus500.com/privacy-policy/"
            },
            {
                "documentName": "LegalMDSA",
                "title": "Market Data Subscription Agreement",
                "url": "https://admin.sim.t4login.com/disclaimers/MDSA.html"
            },
            {
                "documentName": "LegalUSA",
                "title": "Uniform Subscriber Addendum",
                "url": "https://admin.sim.t4login.com/disclaimers/USA.html"
            },
            {
                "documentName": "LegalNPSCF",
                "title": "Non-Professional Self-Certification Form",
                "url": "https://admin.sim.t4login.com/disclaimers/NPSCF.html",
                "nonProfessionalOnly": true
            },
            {
                "documentName": "CMEInformationLicenseAgreement",
                "title": "CME Information License Agreement",
                "url": "https://admin.sim.t4login.com/disclaimers/CME%20information-license-agreement-september-2024.pdf"
            },
            {
                "documentName": "ICESubscriberAgreement",
                "title": "ICE Subscriber Agreement",
                "url": "https://admin.sim.t4login.com/disclaimers/ICE_Subscriber_Addendum.pdf"
            }
        ],
        "lastUserSignature": {
            "signatures": []
        },
        "signatureTemplate": {
            "collectedBy": "",
            "eulaVersion": "2",
            "signatures": [
                {
                    "documentName": "LegalEULA",
                    "signed": null
                },
                {
                    "documentName": "LegalPP",
                    "signed": null
                },
                {
                    "documentName": "LegalMDSA",
                    "signed": null
                },
                {
                    "documentName": "LegalUSA",
                    "signed": null
                },
                {
                    "documentName": "LegalNPSCF",
                    "signed": null
                },
                {
                    "documentName": "CMEInformationLicenseAgreement",
                    "signed": null
                },
                {
                    "documentName": "ICESubscriberAgreement",
                    "signed": null
                }
            ]
        },
        "isNonProfessional": true
    },
    "metadata": {
        "timestamp": "2025-04-24T18:04:18.1844784Z",
        "requestId": "0HNC3B7647GLB:00000004"
    }
}

POST Request

{
        "collectedBy": "",
        "eulaVersion": "2",
        "signatures": [
            {
                "documentName": "LegalEULA",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalPP",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalMDSA",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalUSA",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalNPSCF",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "CMEInformationLicenseAgreement",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "ICESubscriberAgreement",
                "signed": "2025-04-24T09:17:15"
            }
        ]
    },
    "isNonProfessional": false
}
{
    "data": {
        "collectedBy": "API",
        "eulaVersion": "2",
        "signatures": [
            {
                "documentName": "LegalEULA",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalPP",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalMDSA",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalUSA",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "LegalNPSCF",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "CMEInformationLicenseAgreement",
                "signed": "2025-04-24T09:17:15"
            },
            {
                "documentName": "ICESubscriberAgreement",
                "signed": "2025-04-24T09:17:15"
            }
        ]
    },
    "metadata": {
        "timestamp": "2025-04-24T18:04:54.942152Z",
        "requestId": "0HNC3B7647GLB:00000006"
    }
}
{
  // EULA acceptance configuration
  // Documentation coming soon
}
Parameter Description Type Required
username Unique identifier for the user String Yes
account Trading account identifier String Yes
templateUser Optional user template override String No
templateAccount Optional account template override String No
apptype User market data permissions type String Yes
Code Description
200 Success
400 Bad Request - Check request format
401 Unauthorized - Authentication failed
404 Not Found - Resource doesn't exist
500 Server Error - Contact support

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

  • Email: T4.API@plus500.com
  • developers/admin/walktrhough.1745528673.txt.gz
  • Last modified: 2025/04/26 14:29
  • (external edit)