Skip to content

Collective2 WhiteLabel API (v4)

📖 For full documentation, see the Collective2 API Documentation.

Download OpenAPI description
Languages
Servers
https://api4-wl.collective2.com

APIGateway

Schemas

Schemas

GetAutotradedStrategies

Request

Request the Autotraded strategies of the person. Paginated endpoint.

Query
PersonIdinteger or null(int64)required

PersonId

Accountstring

The Autotrade account (optional)

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetAutotradedStrategies?PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradedStrategyDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "Account": "string", "ScalingPercentage": 0.1, "StrategyId": 0, "StrategyName": "string", "BrokerId": 0, "BrokerName": "string", "StartDate": "2019-08-24T14:15:22Z", "LastModified": "2019-08-24T14:15:22Z" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotraders

Request

A list of Autotraders. Paginated endpoint.

Query
StrategyIdinteger or null(int64)

(Optional) StrategyId filter

BrokerIdinteger or null(int32)

(optional) The Autotrade BrokerId

WhiteLabelSiteIdinteger or null(int64)

(optional) The White Label Site Id

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/GetAutotraders

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradedStrategyDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "Account": "string", "ScalingPercentage": 0.1, "StrategyId": 0, "StrategyName": "string", "BrokerId": 0, "BrokerName": "string", "StartDate": "2019-08-24T14:15:22Z", "LastModified": "2019-08-24T14:15:22Z" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotradeSettings

Request

The Autotrade Settings. Non-paginated endpoint.

Query
PersonIdinteger or null(int64)required

PersonId

Accountstring

(Optional) Account

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetAutotradeSettings?PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradeSettingsDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "FirstName": "string", "LastName": "string", "Email": "string", "Country": "string", "State": "string", "Language": "string", "SiteDomain": "string", "BrokerId": 0, "Connection": "string", "IntroducingBrokerId": 0, "IntroducingBroker": "string", "StrategyId": 0, "StrategyName": "string", "Account": "string", "AccountType": 0, "BrokerUserID": "string", "Currency": "string", "SalesRepId": 0, "SalesRep": "string", "IsTradeLeader": true, "IsManualDiscardedPosition": true, "IgnoreManualOrders": true, "IsConfirmationNeeded": true, "IsSyncEnabled": true, "WillSyncToOpenStocksUSA": true, "WillSyncToOpenStocksEurope": true, "WillSyncToOpenOptionsUSA": true, "WillSyncToOpenOptionsEurope": true, "WillSyncToOpenFuturesUSA": true, "WillSyncToOpenFuturesEurope": true, "WillSyncToOpenFuturesAsia": true, "WillSyncToOpenForex": true, "LastSyncStocksUSA": "2019-08-24T14:15:22Z", "LastSyncStocksEurope": "2019-08-24T14:15:22Z", "LastSyncOptionsUSA": "2019-08-24T14:15:22Z", "LastSyncOptionsEurope": "2019-08-24T14:15:22Z", "LastSyncFuturesUSA": "2019-08-24T14:15:22Z", "LastSyncFuturesEurope": "2019-08-24T14:15:22Z", "LastSyncFuturesAsia": "2019-08-24T14:15:22Z", "LastSyncForex": "2019-08-24T14:15:22Z", "IsBrokerEnabled": true, "IsAutotradeDisabled": true, "IsAutotradeDisabledReason": "string", "SyncDisabledReason": "string", "FirstBrokerActivationDate": "2019-08-24T14:15:22Z", "NetLiquidationValue": 0.1, "NetLiquidationValueDate": "2019-08-24T14:15:22Z", "VirtualLimitOrdersEnabled": true, "ScalingPercentage": 0.1, "SettingsLastUpdateUTC": "2019-08-24T14:15:22Z", "Approved": true, "BrokerAuthorizationStatus": "string", "ClosingOrdersOnly": true, "EnabledFutures": true, "FuturesLong": true, "FuturesShort": true, "MinFutures": 0, "MaxFutures": 0, "EnabledForex": true, "ForexEnabledLong": true, "ForexEnabledShort": true, "ForexLotSize": 0, "MinForex": 0, "MaxForex": 0, "EnabledStocks": true, "StocksLong": true, "StocksShort": true, "MaxStocksDollars": 0, "TradeStocksAsCFD": true, "EnabledOptions": true, "OptionsLong": true, "OptionsShort": true, "MinOptions": 0, "MaxOptions": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetDashBoard

Request

Request the Person's Autotraded strategies and a performance summary. Non-paginated endpoint.

Query
PersonIdinteger or null(int64)required

PersonId

Accountstringrequired

The brokerage Account

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetDashBoard?PersonId=0&Account=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(DashBoardItemDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "PersonId": 0, "BrokerName": "string", "Account": "string", "StrategyId": 0, "StrategyName": "string", "StartDate": "2019-08-24T14:15:22Z", "TodayReturn": 0.1, "TotalReturn": 0.1 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotradeActiveOrders

Request

Request the Working orders of the Account. Non-paginated endpoint.

Query
Accountstringrequired

The Brokerage Account

PersonIdinteger or null(int64)required

The PersonId owning the account

StrategyIdinteger or null(int64)

(Optional) StrategyId filter

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetAutotradeActiveOrders?Account=string&PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(OrderStatusDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "OrderId": "string", "StrategyId": 0, "StrategyName": "string", "SignalId": 0, "AvgPx": 0.1, "OrderType": "1", "Side": "1", "OpenClose": "O", "OrderQuantity": 0.1, "Limit": 0.1, "Stop": 0.1, "TIF": "0", "ProfitTarget": 0.1, "StopLoss": 0.1, "DoNotCreateOCAGroup": true, "CancelReplaceSignalId": 0, "ParentSignalId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z", "DoNotSyncToOpen": true, "C2Symbol": {}, "ExchangeSymbol": {}, "RejectMessage": "string", "BrokerId": 0, "OrderStatus": "string", "FilledQuantity": 0.1, "AvgFillPrice": 0.1, "PostedDate": "2019-08-24T14:15:22Z", "SignalType": 0, "Info": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotradeHistoricalOrders

Request

Request the historical orders of the Account. Paginated endpoint.

Query
Accountstringrequired

Brokerage Account filter

PersonIdinteger or null(int64)required

The PersonId owning the account

BrokerIdinteger or null(int32)

BrokerId (Optional)

StrategyIdinteger or null(int64)

StrategyId (Optional)

OrderStatusstring

'A' = PendingNew, '0' = Working, '1' = Partially filled, '2' = Filled, '4' = Canceled, '5' = Replaced, '6' = Pending Cancel, '8' = Rejected, 'C' = Expired, 'E' = Pending Replace (Optional)

StartDatestring or null(date-time)

StartDate (Optional)

EndDatestring or null(date-time)

EndDate (Optional)

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetAutotradeHistoricalOrders?Account=string&PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(OrderStatusDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "OrderId": "string", "StrategyId": 0, "StrategyName": "string", "SignalId": 0, "AvgPx": 0.1, "OrderType": "1", "Side": "1", "OpenClose": "O", "OrderQuantity": 0.1, "Limit": 0.1, "Stop": 0.1, "TIF": "0", "ProfitTarget": 0.1, "StopLoss": 0.1, "DoNotCreateOCAGroup": true, "CancelReplaceSignalId": 0, "ParentSignalId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z", "DoNotSyncToOpen": true, "C2Symbol": {}, "ExchangeSymbol": {}, "RejectMessage": "string", "BrokerId": 0, "OrderStatus": "string", "FilledQuantity": 0.1, "AvgFillPrice": 0.1, "PostedDate": "2019-08-24T14:15:22Z", "SignalType": 0, "Info": "string" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutoTradeOpenPositions

Request

Request the open positions of the Account. Non-paginated endpoint.

Query
Accountstringrequired

Brokerage Account filter

StrategyIdinteger or null(int64)

(Optional) StrategyId filter

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetAutoTradeOpenPositions?Account=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(PositionDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0, "Quantity": 0.1, "AvgPx": 0.1, "C2Symbol": {}, "ExchangeSymbol": {}, "StrategyName": "string", "Currency": "string", "OpenedDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotradeSyncStatusReport

Request

The Autotrade Account Sync Report. Non-Paginated endpoint.

Query
PersonIdinteger or null(int64)required

PersonId

Accountstringrequired

Account

StrategyIdinteger or null(int64)

(Optional) StrategyId filter

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetAutotradeSyncStatusReport?PersonId=0&Account=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradeSyncStatusReportDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "ReportType": 0, "PersonId": 0, "Account": "string", "StrategyId": 0, "SignalId": 0, "StrategyName": "string", "BrokerName": "string", "AccountQuantity": 0.1, "StrategyQuantity": 0.1, "ScaledQuantity": 0.1, "SignalType": 0, "InSync": true, "NotInSyncReason": "string", "C2Symbol": {}, "ExchangeSymbol": {}, "AutotradeSettings": {} } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetBrokers

Request

Get a list of Autotrade brokers. Non-Paginated endpoint.

Query
IncludeDisabledboolean or null

Include the disabled brokers. Default is FALSE. (optional)

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/GetBrokers

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(BrokerDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "Name": "string", "IsEnabled": true, "ConnectionName": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

SearchAutotradedAccounts

Request

A list of Autotraded accounts. You must provide at least one parameter. Paginated endpoint.

Query
StrategyIdinteger or null(int64)

(Optional) StrategyId filter

BrokerIdinteger or null(int32)

(Optional) The Autotrade BrokerId

AutoSyncEnabledboolean or null

(Optional) AutoSync status filter

AutoTradeEnabledboolean or null

(Optional) TRUE if the account has Autotrading enabled (i.e. it usually gets disabled on external orders)

AutoTradingNowboolean or null

(Optional) TRUE if the account is currently Autotrading

StartDatestring or null(date-time)

(Optional) StartDate

EndDatestring or null(date-time)

(Optional) EndDate

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/SearchAutotradedAccounts

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradedAccountDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "Account": "string", "BrokerId": 0, "FirstName": "string", "LastName": "string", "Email": "string", "StrategyId": 0, "StrategyName": "string", "IsSyncEnabled": true, "IsAutotrading": true, "IsAutotradeDisabled": true, "IsAutotradeDisabledReason": "string", "SyncDisabledReason": "string", "SettingsLastUpdateUTC": "2019-08-24T14:15:22Z" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotradeStats

Request

Request the historical Autotraded accounts statistics. Non-paginated endpoint.

Query
WhiteLabelSiteIdinteger or null(int64)

The WhiteLabelSiteId (optional)

GeoSitestring

The GeoSite (optional)

BrokerIdinteger or null(int32)

The BrokerId (optional)

SecurityTypestring

SecurityType filter. e.g. 'CS', 'FUT', 'OPT', 'FOR' (optional)

Disabledboolean or null

Autotrade is disabled filter (optional)

AutoSyncboolean or null

AutoSync filter (optional)

ManualConfirmationboolean or null

ManualConfirmation filter (optional)

BrokerEnabledboolean or null

BrokerEnabled filter (optional)

StartDatestring

StartDate (optional)

EndDatestring

EndDate (optional)

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/GetAutotradeStats

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradeStatsDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "DateUtc": "2019-08-24T14:15:22Z", "Account": "string", "PersonId": 0, "BrokerId": 0, "IB": 0, "SalesRep": 0, "WhiteLabelSiteId": 0, "GeoSiteId": "string", "NetLiquidationValue": 0.1, "LastBrokerNetLiquidationUpdateUtc": "2019-08-24T14:15:22Z", "FirstBrokerActivationDateUTC": "2019-08-24T14:15:22Z", "AutotradedStocksStrategies": 0, "AutotradedFuturesStrategies": 0, "AutotradedOptionsStrategies": 0, "AutotradedForexStrategies": 0, "AutotradedCryptoStrategies": 0, "UniqueAutotradedStrategies": 0, "BrokertransmitStocksStrategies": 0, "BrokertransmitFuturesStrategies": 0, "BrokertransmitOptionsStrategies": 0, "BrokertransmitForexStrategies": 0, "BrokertransmitCryptoStrategies": 0, "UniqueBrokertransmitStrategies": 0, "PlatformtransmitStocksStrategies": 0, "PlatformtransmitFuturesStrategies": 0, "PlatformtransmitOptionsStrategies": 0, "PlatformtransmitForexStrategies": 0, "PlatformtransmitCryptoStrategies": 0, "UniquePlatformtransmitStrategies": 0, "IsSyncEnabled": true, "IsManualConfirmationEnabled": true, "IsDisabled": true, "Currency": "string", "Email": "string", "FirstName": "string", "LastName": "string", "IsBrokerEnabled": true } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetPendingAccounts

Request

Get the live accounts pending Autotrade approval. Non-paginated endpoint.

Query
WhiteLabelSiteIdinteger or null(int64)

(optional) The WhiteLabelSiteId

GeoSitestring

(optional) The GeoSite

BrokerIdinteger or null(int32)

(optional) The BrokerId

SecurityTypestring

(optional) SecurityType filter. e.g. Stocks = 'CS', Futures = 'FUT', Options = 'OPT', Forex = 'FOR'

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/GetPendingAccounts

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(PendingAccountDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "Status": "string", "DeclinedUTC": "2019-08-24T14:15:22Z", "UtcDate": "2019-08-24T14:15:22Z", "Account": "string", "PersonId": 0, "BrokerName": "string", "BrokerId": 0, "FirstName": "string", "LastName": "string", "Email": "string", "Country": "string", "State": "string", "Language": "string", "WhiteLabelSiteId": 0, "GeoSiteId": "string", "SiteDomain": "string", "Connection": "string", "IntroducingBrokerId": 0, "IntroducingBroker": "string", "StrategyId": 0, "StrategyName": "string", "SalesRepId": 0, "SalesRep": "string", "IsTradeLeader": true, "FirstBrokerActivationDate": "2019-08-24T14:15:22Z", "NetLiquidationValue": 0.1, "NetLiquidationValueDate": "2019-08-24T14:15:22Z", "EnabledFutures": true, "EnabledForex": true, "EnabledStocks": true, "EnabledOptions": true } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetSimResults

Request

Return SIM trading results for all subscribers who are using “free sims.”. Non-Paginated endpoint.

Query
PersonIdinteger or null(int64)

PersonId (optional)

WhiteLabelSiteIdinteger or null(int64)

The WhiteLabel SiteId (optional)

ActiveOnlyboolean

Set to FALSE to get the full history of all Simulation results (optional). Default is TRUE

MaxAccountDaysinteger or null(int32)

The maximum account number of days to include (optional). Maximum default value is 365 days

MinLoginDaysinteger or null(int32)

The minimum number of days since the user logged in (optional)

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/GetSimResults

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SimResultDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "PersonId": 0, "FirstName": "string", "LastName": "string", "Email": "string", "Account": "string", "StrategyId": 0, "StrategyName": "string", "StartDate": "2019-08-24T14:15:22Z", "EndDate": "2019-08-24T14:15:22Z", "StartEquity": 0, "EndEquity": 0, "TotalReturn": 0.1, "TotalDelta": 0.1, "ScalingFactor": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

SearchAccounts

Request

Request a list of Autotrade and Papertrade accounts. Partial matches will be returned. Paginated endpoint. Only visible to the account owner or White-label site owner

Query
Accountstring

The Autotrade account (optional)

PersonIdinteger or null(int64)

PersonId (optional)

BrokerIdinteger or null(int32)

The Autotrade BrokerId (optional)

FirstNamestring

The FirstName (optional). Not case-sensitive

LastNamestring

The FirstName (optional). Not case-sensitive

Emailstring

The Email (optional)

WhiteLabelSiteIdinteger or null(int64)

The White Label site Id (optional)

CountryCodestring

The person's country code. Not case-sensitive (optional)

IPAddressstring

The person's last known IP address (optional)

Phonestring

The Phone number (optional)

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/SearchAccounts

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AccountDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "Account": "string", "BrokerName": "string", "BrokerId": 0, "FirstName": "string", "LastName": "string", "Email": "string", "Language": "string", "WhiteLabelSiteId": 0, "GeoSite": "string", "CountryCode": "string", "DivisionCode": "string", "AuthenticatedDate": "2019-08-24T14:15:22Z" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotradeApprovalStatus

Request

Poll one AutoTrade approval request created by StartAutotrade. Status is one of PendingCustomer (your customer has not finished the approval), Processing (approved; we are switching trading on), PendingBroker (approved; broker-side enablement pending, typically 5-10 business days), Completed (trading is on), Failed, Expired, or Superseded (a newer StartAutotrade or a StopAutotrade replaced it). ApprovalUrl is present only while the request is PendingCustomer. This poll is the source of truth; the completion webhook is a courtesy signal. Non-Paginated endpoint.

Query
RequestIdstringrequired

The RequestId returned by StartAutotrade (an opaque UUID).

curl -i -X GET \
  'https://api4-wl.collective2.com/Autotrade/GetAutotradeApprovalStatus?RequestId=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradeApprovalStatusDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "RequestId": "string", "Status": "string", "ApprovalUrl": "string", "CreatedUtc": "2019-08-24T14:15:22Z", "ExpiresUtc": "2019-08-24T14:15:22Z", "CompletedUtc": "2019-08-24T14:15:22Z", "PersonId": 0, "StrategyId": 0, "SupersededByRequestId": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

ResetPaperTrade

Request

Reset the specified PaperTrade account.

Bodyapplication/jsonrequired
Accountstring or null

The Autotrade account

PersonIdinteger or null(int64)

The C2 PersonID

curl -i -X PUT \
  https://api4-wl.collective2.com/Autotrade/ResetPaperTrade \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of booleans or null

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ true ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAutotradePlans

Request

Return the AutoTrading license plans available on your White Label site, together with the site's fee policy: who pays the AutoTrade fee (the end customer, the site owner, or nobody) and, when the site owner is billed for usage, the published pricing tiers. The site is the one your API key belongs to; C2 admin keys may pass WhiteLabelSiteId to view any site. Non-Paginated endpoint.

curl -i -X GET \
  https://api4-wl.collective2.com/Autotrade/GetAutotradePlans

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradePlansDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "WhiteLabelSiteId": 0, "MonthlyPlans": [], "AnnualPlans": [], "FeePolicy": {} } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

StartSim

Request

Start simulated subscriptions for a customer on your White Label site. A simulated subscription lets the customer follow a strategy's aggregate performance without trading real money and without access to its open positions or live signals. You can request 1 to 8 strategies in one call; strategies that cannot be started are returned in the Skipped list with a reason rather than failing the whole request. The site is always the one your API key belongs to, and the customer must belong to that site. Non-Paginated endpoint.

Bodyapplication/jsonrequired
PersonIdinteger or null(int64)

The PersonId of the customer to start simulated subscriptions for. The customer must belong to your White Label site

StrategyIdsArray of integers or null(int64)

A list of StrategyIds to start simulated subscriptions for. Between 1 and 8 unique strategies may be requested per call

curl -i -X POST \
  https://api4-wl.collective2.com/Autotrade/StartSim \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SimStartResultDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "PersonId": 0, "Created": [], "Skipped": [] } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

StopSim

Request

Stop a customer's simulated subscription to a strategy on your White Label site. Only simulated subscriptions can be stopped through this endpoint; real subscriptions are refused. The site is always the one your API key belongs to, and the customer must belong to that site. Non-Paginated endpoint.

Query
PersonIdinteger or null(int64)required

The PersonId of the customer whose simulated subscription should be stopped

StrategyIdinteger or null(int64)required

The StrategyId of the simulated subscription to stop. Please note this ony works one strategyId per request-- you cannot submit an array like with StartSim

curl -i -X DELETE \
  'https://api4-wl.collective2.com/Autotrade/StopSim?PersonId=0&StrategyId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SimStopResultDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "PersonId": 0, "StrategyId": 0, "StoppedSubscriptionId": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

SetAutotradeSettings

Request

Enable or disable Autotrade or Autosync in the specified account.

Bodyapplication/jsonrequired
Accountstring or null

The Autotrade account

PersonIdinteger or null(int64)

The C2 PersonID

BrokerIdinteger or null(int32)

The C2 PersonID

IsAutotradeEnabledboolean or null

Set to TRUE if you want to enable the account for Autotrade. The StartAutotrade endpoint will automatically enable this setting. It may be disabled if your account is delinked by the broker, or if we detect rare unexpected activity in your account such as a margin call, pattern day trader, account becomes restricted by the broker, etc.

IsAutoSyncEnabledboolean or null

Set to TRUE if you want to enable or disable AutoSync for the account. AutoSync automatically gets disabled whenever an external (i.e. non-C2) order is executed in the account.

curl -i -X PUT \
  https://api4-wl.collective2.com/Autotrade/SetAutotradeSettings \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of booleans or null

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ true ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

NewAutotradeOrder

Request

Send a new closing order to the specified account. Only Stop and Limit OrderTypes are supported. Non-paginated endpoint.

Bodyapplication/jsonrequired
Accountstring or null

The Autotrade account

PersonIdinteger or null(int64)

The C2 PersonID

Orderobject(OrderDTO)
curl -i -X POST \
  https://api4-wl.collective2.com/Autotrade/NewAutotradeOrder \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SignalIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "SignalId": 0, "ProfitTargetSignalId": 0, "StopLossSignalId": 0, "ExitSignalsOCAGroupId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

CancelAutotradeOrder

Request

Cancel an order in the specified account. Auto Stop-Loss orders are not currently supported. Non-paginated endpoint.

Query
Accountstringrequired

The Autotrade account

PersonIdinteger or null(int64)required

The C2 PersonID

OrderIdstringrequired

The OrderID to be cancelled

curl -i -X DELETE \
  'https://api4-wl.collective2.com/Autotrade/CancelAutotradeOrder?Account=string&PersonId=0&OrderId=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SignalIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "SignalId": 0, "ProfitTargetSignalId": 0, "StopLossSignalId": 0, "ExitSignalsOCAGroupId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

ReplaceAutotradeOrder

Request

Cancel/Replace an open closing order in the specified account. Only strategy and manual exit orders are currently supported.

Bodyapplication/jsonrequired
Accountstring or null

The Autotrade account

PersonIdinteger or null(int64)

The C2 PersonID

OrderIdstring or null

The OrderID to be replaced

Pricenumber or null(double)

The new Order price

curl -i -X PUT \
  https://api4-wl.collective2.com/Autotrade/ReplaceAutotradeOrder \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SignalIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "SignalId": 0, "ProfitTargetSignalId": 0, "StopLossSignalId": 0, "ExitSignalsOCAGroupId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

WhiteLabelStartAutotrade

Request

Start or modify an Autotrade setup on a WhiteLabel site. Non-paginated endpoint.

Bodyapplication/jsonrequired
object(WhiteLabelStartAutotrade)
curl -i -X POST \
  https://api4-wl.collective2.com/Autotrade/WhiteLabelStartAutotrade \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AutotradeApprovalDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "RequestId": "string", "Status": "string", "ApprovalUrl": "string", "StatusUrl": "string", "ExpiresUtc": "2019-08-24T14:15:22Z", "IsEnrollmentRequired": true, "IsAlreadyRunning": true, "PersonId": 0, "StrategyId": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

StopAutotrade

Request

Stop a autotrade setup. Non-paginated endpoint.

Query
Accountstringrequired

The Autotrade account

PersonIdinteger or null(int64)required

The C2 PersonID

StrategyIdinteger or null(int64)required

The StrategyId

BrokerIdinteger or null(int32)

The BrokerId

LeavePositionsOpenboolean

TRUE to leave positions open in the autotraded account. Default is FALSE

TerminateStrategySubscriptionboolean

TRUE to stop the Strategy subscription. Default is FALSE

curl -i -X DELETE \
  'https://api4-wl.collective2.com/Autotrade/StopAutotrade?Account=string&PersonId=0&StrategyId=0'

Responses

OK

Bodyapplication/json
boolean
Response
application/json
true

Hello

Request

Test endpoint that can be used to test your API Key, RateLimits, Headers, etc

Bodyapplication/jsonrequired
Namestring or null

Your name (or any string)

curl -i -X POST \
  https://api4-wl.collective2.com/General/Hello \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of strings or null

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ "string" ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetAccessKey

Request

Get the requester's APIKey Role and expiration

curl -i -X GET \
  https://api4-wl.collective2.com/General/GetAccessKey

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AccessKeyDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "AccessKey": "string", "PersonId": 0, "FirstName": "string", "LastName": "string", "Email": "string", "WhiteLabelSiteId": 0, "Role": "string", "Message": "string", "CreateDate": "2019-08-24T14:15:22Z", "DeleteDate": "2019-08-24T14:15:22Z", "Comment": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

AddProfile

Request

Create a new C2 profile. Non-paginated endpoint.

Bodyapplication/jsonrequired
FirstNamestring or null

The person's first name

LastNamestring or null

The person's last name

ScreenNamestring or null

The person's desired screen name

Emailstring or null

The person's email. This will be the username when logging in to C2

Passwordstring or null

The desired password to login to C2

Languagestring or null

The person's preferred language. See https://en.wikipedia.org/wiki/ISO_639-3

CountryCodestring or null

The person's country code. See https://en.wikipedia.org/wiki/ISO_3166-2

DivisionCodestring or null

The person's subdivision (e.g. provinces or states). See https://en.wikipedia.org/wiki/ISO_3166-2

Citystring or null

The person's city (optional)

Streetstring or null

The person's street (optional)

Street2string or null

The person's street (optional)

ZipCodestring or null

The person's zip code (optional)

Phonestring or null

The person's phone (optional)

Companystring or null

The person's company (optional)

WhiteLabelSiteIdinteger or null(int64)

The White Label site Id (optional)

GeoSitestring or null

The GeoSite Id (optional)

IPAddressstring or null

The end-user's IP address (mandatory only when WhiteLabelSiteId is used, otherwise ignored)

curl -i -X POST \
  https://api4-wl.collective2.com/General/AddProfile \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AddPersonResponseDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "PersonId": 0, "CSRF": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

UpdateProfile

Request

Update an existing C2 profile. Not available. Please contact us if you need this endpoint.

Bodyapplication/jsonrequired
PersonIdinteger or null(int64)

The C2 PersonId

curl -i -X PUT \
  https://api4-wl.collective2.com/General/UpdateProfile \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(AddPersonResponseDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "PersonId": 0, "CSRF": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetProfile

Request

Request details of a Person. Public profiles are visible to all. Private profile information will only be visible to the account owner. Non-paginated endpoint.

Query
PersonIdinteger or null(int64)

The C2 PersonId. If omitted, the requester's information will be returned.

IncludeIconInResponseboolean or null

(Optional) Set to TRUE to include the profile icon in the response.

curl -i -X GET \
  https://api4-wl.collective2.com/General/GetProfile

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(PersonDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "Alias": "string", "FirstName": "string", "LastName": "string", "Email": "string", "Phone": "string", "IsPhoneVerified": true, "Language": "string", "WhiteLabelSiteId": 0, "CountryCode": "string", "DivisionCode": "string", "Created": "2019-08-24T14:15:22Z", "LastLoggedIn": "2019-08-24T14:15:22Z", "LastIP": "string", "IsEmailValidated": true, "IsAlive": true, "ApprovedAccounts": [], "IsManager": true, "IsInvestor": true, "GeoSite": "string", "IsGeoSiteAdmin": true, "SupportCompanyName": "string", "SupportSiteURL": "string", "SupportEmail": "string", "Icon": "string" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

SearchProfiles

Request

Search profiles using any field combination. Partial matches will be returned. Paginated endpoint. Only Admins, Geo and White-Label Admins can access this endpoint. If you're a GeoSite admin, you will see all your GeoSite members including your WhiteLabel members. If you're a WhiteLabel admin, you will see your WhiteLabel members, but not other GeoSite members. If you're neither, you will get a 403 error.

Query
PersonIdinteger or null(int64)

The C2 PersonId (optional)

FirstNamestring

The FirstName. Not case-sensitive (optional)

LastNamestring

The FirstName. Not case-sensitive (optional)

Emailstring

The Email. Not case-sensitive (optional)

WhiteLabelSiteIdinteger or null(int64)

The White Label site Id (optional)

CountryCodestring

The person's country code. Not case-sensitive. (optional) See https://en.wikipedia.org/wiki/ISO_3166-2

DivisionCodestring

The person's subdivision (e.g. provinces or states). Not case-sensitive. (optional) See https://en.wikipedia.org/wiki/ISO_3166-2

IPAddressstring

The person's last known IP address (optional)

Phonestring

The verified Phone number (optional)

IsAliveboolean or null

The Person's Status (optional)

IncludeIconInResponseboolean or null

(Optional) Set to TRUE to include the profile icon in the response.

IsEmailValidatedboolean or null

The Person's email validation status (optional)

curl -i -X GET \
  https://api4-wl.collective2.com/General/SearchProfiles

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(PersonDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "Alias": "string", "FirstName": "string", "LastName": "string", "Email": "string", "Phone": "string", "IsPhoneVerified": true, "Language": "string", "WhiteLabelSiteId": 0, "CountryCode": "string", "DivisionCode": "string", "Created": "2019-08-24T14:15:22Z", "LastLoggedIn": "2019-08-24T14:15:22Z", "LastIP": "string", "IsEmailValidated": true, "IsAlive": true, "ApprovedAccounts": [], "IsManager": true, "IsInvestor": true, "GeoSite": "string", "IsGeoSiteAdmin": true, "SupportCompanyName": "string", "SupportSiteURL": "string", "SupportEmail": "string", "Icon": "string" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetInvestorPlanSubscriptions

Request

Request details of a Person's strategy subscriptions. Paginated endpoint

Query
PersonIdinteger or null(int64)required

The C2 PersonId

ActiveOnlyboolean

Set to FALSE to get all transactions (optional). Default is TRUE

curl -i -X GET \
  'https://api4-wl.collective2.com/General/GetInvestorPlanSubscriptions?PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SubscriptionDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "LicenseType": "string", "LicenseTypeId": 0, "StartDate": "2019-08-24T14:15:22Z", "EndDate": "2019-08-24T14:15:22Z", "IsRecurring": true, "Cost": 0.1 } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetManagerPlanSubscriptions

Request

Request details of a Person's strategy manager subscriptions. Paginated endpoint

Query
PersonIdinteger or null(int64)required

The C2 PersonId

ActiveOnlyboolean

Set to FALSE to get all transactions (optional). Default is TRUE

curl -i -X GET \
  'https://api4-wl.collective2.com/General/GetManagerPlanSubscriptions?PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SubscriptionDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "LicenseType": "string", "LicenseTypeId": 0, "StartDate": "2019-08-24T14:15:22Z", "EndDate": "2019-08-24T14:15:22Z", "IsRecurring": true, "Cost": 0.1 } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetSubscribedStrategies

Request

Request the subscribed strategies of the person. Paginated endpoint.

Query
PersonIdinteger or null(int64)required

PersonId

ActiveOnlyboolean

Set to FALSE to get all transactions (optional). Default is TRUE

curl -i -X GET \
  'https://api4-wl.collective2.com/General/GetSubscribedStrategies?PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SubcribedStrategyDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "StrategyId": 0, "StrategyName": "string", "IsSimulation": true, "IsPaperTrade": true, "IsAlive": true, "StartDate": "2019-08-24T14:15:22Z", "EndDate": "2019-08-24T14:15:22Z", "MonthlyCost": 0.1, "NextChargeDate": "2019-08-24T14:15:22Z", "NextBillingPrice": 0.1, "BillingInterval": "string", "BillingIntervalCount": 0, "IsCancelPending": true, "BillingFailureCount": 0, "LastBillingFailureReason": "string", "LastBillingFailureAt": "2019-08-24T14:15:22Z" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetWhiteLabelSiteUsers

Request

Get all members of a WL site. Only admins and WhiteLabel admins can access this endpoint. Paginated endpoint.

Query
WhiteLabelSiteIdinteger or null(int64)required

The White Label site Id

curl -i -X GET \
  'https://api4-wl.collective2.com/General/GetWhiteLabelSiteUsers?WhiteLabelSiteId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(WhiteLabelSiteMember)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "Alias": "string", "FirstName": "string", "LastName": "string", "Email": "string", "Phone": "string", "Language": "string", "IsWhiteLabelSiteAdmin": true, "WhiteLabelSiteId": 0, "WhiteLabelPermissions": "string", "CountryCode": "string", "DivisionCode": "string", "Created": "2019-08-24T14:15:22Z", "LastLoggedIn": "2019-08-24T14:15:22Z", "LastIP": "string", "IsEmailValidated": true, "IsAlive": true, "IsManager": true, "IsInvestor": true, "GeoSite": "string", "IsGeoSiteAdmin": true } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetKYCScore

Request

Request the KYC score of a Person. Only White Label Sites and GeoSites have access to this endpoint. Non-paginated endpoint.

Query
UserTokenstring

The private user token (optional). GeoSites must provide this value

PersonIdinteger or null(int64)

The C2 PersonId (optional). WhiteLabel sites must provide this value

curl -i -X GET \
  https://api4-wl.collective2.com/General/GetKYCScore

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(KYCScore)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "Created": "2019-08-24T14:15:22Z", "Approved": "2019-08-24T14:15:22Z", "Started": "2019-08-24T14:15:22Z", "Finished": "2019-08-24T14:15:22Z", "RedirectedToKYCTimes": 0, "Score": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

UpdateKYCScore

Request

Update the KYC score of a Person. Only Geo and White Label Sites have access to this endpoint. Non-paginated endpoint.

Bodyapplication/jsonrequired
UserTokenstring or null

The private user token supplied by C2

IsFinishedboolean or null

Set to TRUE when the KYC is finished by the client (optional)

IsApprovedboolean or null

Set to TRUE when the KYC is approved (optional)

Scoreinteger or null(int64)

The KYC score to add (optional)

curl -i -X PUT \
  https://api4-wl.collective2.com/General/UpdateKYCScore \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(KYCScore)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "Created": "2019-08-24T14:15:22Z", "Approved": "2019-08-24T14:15:22Z", "Started": "2019-08-24T14:15:22Z", "Finished": "2019-08-24T14:15:22Z", "RedirectedToKYCTimes": 0, "Score": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetKYCInfo

Request

Request the KYC information of a Person. Only Geo and White Label Sites have access to this endpoint. Non-paginated endpoint.

Query
UserTokenstringrequired

The private user token. Only White Label Sites have this value

curl -i -X GET \
  'https://api4-wl.collective2.com/General/GetKYCInfo?UserToken=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(KYCInfo)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "FirstName": "string", "LastName": "string", "Email": "string", "Phone": "string", "IsPhoneVerified": true, "Street": "string", "City": "string", "Province": "string", "PostCode": "string", "Country": "string", "PhotoId1": "string", "PhotoId1Title": "string", "PhotoId2": "string", "PhotoId2Title": "string", "WhiteLabelSiteId": 0, "GeoSite": "string", "SiteURL": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

AddKYCInfo

Request

Add/Update the KYC info of a Person. Each successful request for a PersonID will replace the old data. Only Geo and White Label Site admins have access to this endpoint.

Bodyapplication/jsonrequired
UserTokenstring or null

The private user token supplied by C2

FirstNamestring or null

The person's verified first name

LastNamestring or null

The person's verified last name

Emailstring or null

The person's verified email. This may be different than the c2 email

Phonestring or null

The person's telephone

IsPhoneVerifiedboolean or null

True if the the person's telephone is verified

Streetstring or null

The verified address

Citystring or null

The verified address

Provincestring or null

The verified address state/county/province

PostCodestring or null

The verified address zip/postal code

Countrystring or null

The verified address

PhotoId1Titlestring or null

PhotoID title (optional)

PhotoId2Titlestring or null

PhotoID title (optional)

curl -i -X POST \
  https://api4-wl.collective2.com/General/AddKYCInfo \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(KYCScore)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "Created": "2019-08-24T14:15:22Z", "Approved": "2019-08-24T14:15:22Z", "Started": "2019-08-24T14:15:22Z", "Finished": "2019-08-24T14:15:22Z", "RedirectedToKYCTimes": 0, "Score": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetPhoneAlreadyExists

Request

Check if a verified phone number already exists on C2. Non-paginated endpoint.

Query
Phonestringrequired

The phone number. Phone must always be expressed in full international phone number format, e.g. +XXXYYYYYYYYY, no zeroes allowed after the country code. Country code must be prefixed with a plus sign.

curl -i -X GET \
  'https://api4-wl.collective2.com/General/GetPhoneAlreadyExists?Phone=string'

Responses

OK

Bodyapplication/json
ResultsArray of booleans or null

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ true ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetWlInstrumentationExport

Request

Export instrumentation data for a White Label site, including session events, subscriptions, autotrade account stability, and executions within the requested time window. These are SSO/login handshakes, not full pageview analytics. Only WhiteLabel admins can access this endpolong. Non-Paginated endpolong.

Query
WhiteLabelSiteIdinteger or null(int64)required

The White Label site Id

FromWheninteger or null(int64)

(Optional) The start of the export window as a Unix timestamp (seconds). If omitted, DaysBack is used to calculate the window start.

ToWheninteger or null(int64)

(Optional) The end of the export window as a Unix timestamp (seconds). Defaults to now if omitted.

DaysBackinteger or null(int64)

(Optional) The lookback window in days, used when FromWhen is omitted. Default: 30.

PersonIdinteger or null(int64)

(Optional) Filter results to a single subscriber by PersonId.

SystemIdinteger or null(int64)

(Optional) Filter results to a single strategy by SystemId.

SessionLimitinteger or null(int64)

(Optional) Maximum number of session events to return. Default: 2000, max: 5000.

SubscriptionLimitinteger or null(int64)

(Optional) Maximum number of subscriptions to return. Default: 2000, max: 5000.

ExecutionLimitinteger or null(int64)

(Optional) Maximum number of executions to return. Default: 1000, max: 5000.

curl -i -X GET \
  'https://api4-wl.collective2.com/General/GetWlInstrumentationExport?WhiteLabelSiteId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(WlInstrumentationExportDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "WhiteLabelSiteId": 0, "WhiteLabelSiteName": "string", "WhiteLabelSiteDomain": "string", "RequestedWindow": {}, "Filters": {}, "SessionEventSummary": {}, "SessionEvents": [], "Autotrade": {}, "Subscriptions": [], "AccountStability": [], "Executions": [], "Summary": {} } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyDetails

Request

Request the strategy statistics. Non-paginated endpoint.

Query
StrategyIdinteger or null(int64)required

The Strategy ID

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetStrategyDetails?StrategyId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyDetailsDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0, "StrategyName": "string", "ShortDescription": "string", "LongDescription": "string", "IsAlive": true, "IsResellable": true, "StartDate": "2019-08-24T14:15:22Z", "PrimarySecurityTypes": "string", "SecurityTypesEnabled": {}, "MonthlyCost": 0.1, "StrategyOwnerId": 0, "StrategyOwnerName": "string", "SuggestedCapital": 0, "LastModified": "2019-08-24T14:15:22Z", "Score": 0, "IsTradeOwnSystem": true, "TradeOwnSystemPercent": 0.1, "WhiteLabelSiteId": 0, "IsPrivate": true, "AUM": 0, "AUM_NumberOfAccounts": 0, "Return": 0.1, "ReturnLabel": "string", "Equity": 0.1, "Cash": 0.1, "StartingCash": 0.1, "ProfitFactor": 0.1, "CashDividends": 0.1, "BuyingPower": 0.1, "MarginUsed": 0.1, "AgeInDays": 0, "ModelAccountValue": 0.1, "NumTrades": 0, "NumWinners": 0, "NumLosers": 0, "PercentWinTrades": 0.1, "SumDollarWinners": 0.1, "SumDollarLosers": 0.1, "NumMonths": 0, "WinMonthsInUI": 0, "WinMonths": 0.1, "WinMonthsRatio": 0.1, "MaxDrawdown": 0.1, "MaxDrawdownDays": 0.1, "MaxDrawdownStartDate": "string", "MaxDrawdownEndDate": "string", "AvgWinDollars": 0.1, "AvgLossDollars": 0.1, "AvgTradeDuration": 0.1, "CorrelationSP500": 0.1, "SP500Return": 0.1, "ReturnVsSP500": 0.1, "AvgLeverage": 0.1, "MaxLeverage": 0.1, "CorrelationToSP500": 0.1, "Alpha": 0.1, "Beta": 0.1, "Treynor": 0.1, "Sortino": 0.1, "Sharpe": 0.1, "Calmar": 0.1, "NoSubsAllowed": true, "LatestTrade": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

SearchStrategies

Request

Request a list of strategies available to the user. Paginated endpoint.

Query
SecurityTypestring

(optional) SecurityType filter. e.g. Stocks = 'CS', Futures = 'FUT', Options = 'OPT', Forex = 'FOR'

CreatedBeforeDatestring

(optional) Filter used to search old stategies. The date must be in ISO 8601 Date Format.

StrategyNamestring

Search strategies on name (optional). Partial matches will be returned. Wildcards % and _ are supported

StrategyOwnerPersonIdinteger or null(int64)

(optional) The C2 PersonId

WhiteLabelSiteIdinteger or null(int64)

(optional) The White Label site Id

IsTradeOwnSystemboolean or null

(optional) Filter on whether Strategy owner Trades his Own Strategy

curl -i -X GET \
  https://api4-wl.collective2.com/Strategies/SearchStrategies

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyBasicDetailsDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "StrategyId": 0, "IsAlive": true, "IsPrivate": true, "StrategyName": "string", "StartDate": "2019-08-24T14:15:22Z", "SecurityTypesEnabled": {}, "MonthlyCost": 0.1, "StrategyOwnerId": 0, "WhiteLabelSiteId": 0, "IsTradeOwnSystem": true, "IsResellable": true } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetLeaderBoard

Request

Request the curated public leaderboard of strategies. Non-Paginated endpoint.

Query
SecurityTypestring

(optional) SecurityType filter. e.g. Stocks = 'CS', Futures = 'FUT', Options = 'OPT', Forex = 'FOR'

curl -i -X GET \
  https://api4-wl.collective2.com/Strategies/GetLeaderBoard

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyBasicDetailsDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "StrategyId": 0, "IsAlive": true, "IsPrivate": true, "StrategyName": "string", "StartDate": "2019-08-24T14:15:22Z", "SecurityTypesEnabled": {}, "MonthlyCost": 0.1, "StrategyOwnerId": 0, "WhiteLabelSiteId": 0, "IsTradeOwnSystem": true, "IsResellable": true } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetSubscribers

Request

Request the list of subscribers of a strategy and their subscrition history. Paginated endpoint.

Query
StrategyIdinteger or null(int64)required

The C2 StrategyId

ActiveOnlyboolean or null

Set to True to include only currently active subscribers. Default is False

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetSubscribers?StrategyId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategySubscriberDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "StrategyId": 0, "StrategyName": "string", "PersonId": 0, "SubscriptionId": 0, "SubscriberId": 0, "IsStrategyOwner": true, "Alias": "string", "FirstName": "string", "LastName": "string", "Email": "string", "StartDate": "2019-08-24T14:15:22Z", "EndDate": "2019-08-24T14:15:22Z", "BasePrice": 0.1, "Markup": 0.1, "Cost": 0.1, "LastTransactionDate": "2019-08-24T14:15:22Z", "LastTransactionAmount": 0.1, "IsResale": 0.1, "WhiteLabelSiteId": 0, "GeoSiteId": "string" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetSubscriptionRevenue

Request

Request the subscriber revenue of a strategy. Paginated endpoint. You must provide at least one parameter other than Start/End date.

Query
StrategyIdinteger or null(int64)

The C2 StrategyId (Optional)

StartDatestring

StartDate (Optional)

EndDatestring

EndDate (Optional)

StrategyOwnerPersonIdinteger or null(int64)

The Strategy Owner's PersonId (Optional)

SubscriberPersonIdinteger or null(int64)

The Subscriber's PersonId (Optional)

WhiteLabelSiteIdinteger or null(int64)

The White Label Site Id (Optional)

curl -i -X GET \
  https://api4-wl.collective2.com/Strategies/GetSubscriptionRevenue

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategySubscriberDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "StrategyId": 0, "StrategyName": "string", "PersonId": 0, "SubscriptionId": 0, "SubscriberId": 0, "IsStrategyOwner": true, "Alias": "string", "FirstName": "string", "LastName": "string", "Email": "string", "StartDate": "2019-08-24T14:15:22Z", "EndDate": "2019-08-24T14:15:22Z", "BasePrice": 0.1, "Markup": 0.1, "Cost": 0.1, "LastTransactionDate": "2019-08-24T14:15:22Z", "LastTransactionAmount": 0.1, "IsResale": 0.1, "WhiteLabelSiteId": 0, "GeoSiteId": "string" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

NewStrategyOrder

Request

Send a new order for the strategy. Non-paginated endpoint.

Bodyapplication/jsonrequired
Orderobject(OrderDTO)
curl -i -X POST \
  https://api4-wl.collective2.com/Strategies/NewStrategyOrder \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SignalIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "SignalId": 0, "ProfitTargetSignalId": 0, "StopLossSignalId": 0, "ExitSignalsOCAGroupId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

CancelStrategyOrder

Request

Cancel a order. Non-paginated endpoint.

Query
StrategyIdinteger or null(int64)required

The Strategy ID

SignalIdinteger or null(int64)required

The Signal ID to be cancelled

curl -i -X DELETE \
  'https://api4-wl.collective2.com/Strategies/CancelStrategyOrder?StrategyId=0&SignalId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SignalIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "SignalId": 0, "ProfitTargetSignalId": 0, "StopLossSignalId": 0, "ExitSignalsOCAGroupId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

ReplaceStrategyOrder

Request

Send a cancel/replace a order for the strategy. Non-paginated endpoint.

Bodyapplication/jsonrequired
Orderobject(OrderDTO)
curl -i -X PUT \
  https://api4-wl.collective2.com/Strategies/ReplaceStrategyOrder \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SignalIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "SignalId": 0, "ProfitTargetSignalId": 0, "StopLossSignalId": 0, "ExitSignalsOCAGroupId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyActiveOrders

Request

Request the open orders for the strategies. Non-paginated endpoint.

Query
StrategyIdsArray of integers(int64)required

A list of Strategy IDs

SecurityTypestring

(optional) SecurityType filter. e.g. Stocks = 'CS', Futures = 'FUT', Options = 'OPT', Forex = 'FOR'

OrderTypestring

(optional) OrderType filter. e.g. '1' = Market, '2' = Limit, '3' = Stop

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetStrategyActiveOrders?StrategyIds=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(OrderStatusDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "OrderId": "string", "StrategyId": 0, "StrategyName": "string", "SignalId": 0, "AvgPx": 0.1, "OrderType": "1", "Side": "1", "OpenClose": "O", "OrderQuantity": 0.1, "Limit": 0.1, "Stop": 0.1, "TIF": "0", "ProfitTarget": 0.1, "StopLoss": 0.1, "DoNotCreateOCAGroup": true, "CancelReplaceSignalId": 0, "ParentSignalId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z", "DoNotSyncToOpen": true, "C2Symbol": {}, "ExchangeSymbol": {}, "RejectMessage": "string", "BrokerId": 0, "OrderStatus": "string", "FilledQuantity": 0.1, "AvgFillPrice": 0.1, "PostedDate": "2019-08-24T14:15:22Z", "SignalType": 0, "Info": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyOpenPositions

Request

Request the open positions for the strategy. Non-paginated endpoint.

Query
StrategyIdsArray of integers(int64)required

A list of Strategy IDs

SecurityTypestring

(optional) SecurityType filter. e.g. Stocks = 'CS', Futures = 'FUT', Options = 'OPT', Forex = 'FOR'

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetStrategyOpenPositions?StrategyIds=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(PositionDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0, "Quantity": 0.1, "AvgPx": 0.1, "C2Symbol": {}, "ExchangeSymbol": {}, "StrategyName": "string", "Currency": "string", "OpenedDate": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyHistoricalOrders

Request

Returns the historical orders of the strategy. Paginated endpoint.

Query
StrategyIdinteger or null(int64)

StrategyId (optional: StrategyId or SignalId must be present)

SignalIdinteger or null(int64)

SignalId (optional: StrategyId or SignalId must be present)

OrderStatusstring

Optional. Available values: '2' = Filled, '4' = Canceled, 'C' = Expired

StartDatestring

UTC StartDate (Optional)

EndDatestring

UTC EndDate (Optional)

curl -i -X GET \
  https://api4-wl.collective2.com/Strategies/GetStrategyHistoricalOrders

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(OrderStatusDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "OrderId": "string", "StrategyId": 0, "StrategyName": "string", "SignalId": 0, "AvgPx": 0.1, "OrderType": "1", "Side": "1", "OpenClose": "O", "OrderQuantity": 0.1, "Limit": 0.1, "Stop": 0.1, "TIF": "0", "ProfitTarget": 0.1, "StopLoss": 0.1, "DoNotCreateOCAGroup": true, "CancelReplaceSignalId": 0, "ParentSignalId": 0, "ParkedUntilDate": "2019-08-24T14:15:22Z", "DoNotSyncToOpen": true, "C2Symbol": {}, "ExchangeSymbol": {}, "RejectMessage": "string", "BrokerId": 0, "OrderStatus": "string", "FilledQuantity": 0.1, "AvgFillPrice": 0.1, "PostedDate": "2019-08-24T14:15:22Z", "SignalType": 0, "Info": "string" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

AddStrategy

Request

Create a new, empty strategy. Only Admins have the ability to set a OwnerPersonId or InitialSiteVisibility. Non-paginated endpoint.

Bodyapplication/jsonrequired
StrategyNamestring or null

The desired strategy name

StartingCapitalinteger or null(int64)

(Optional) The starting capital. Must be set when Account is not specified, ignored when Account is specified

StrategyOwnerPersonIdinteger or null(int64)

(Optional) The Strategy Owner's PersonId. Ignored on the General API (the owner is the caller by default). If you are a White Label site admin, the customer must belong to your White Label site

InitialSiteVisibilityboolean or null

(Optional) Whether the strategy is initially listed on the white-label site. Defaults to hidden. Applies only to platform/white-label strategy creation.

curl -i -X POST \
  https://api4-wl.collective2.com/Strategies/AddStrategy \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

UpdateStrategy

Request

Modify a strategy. Not available yet. Please contact us if you ened this endpoint. Non-paginated endpoint.

Bodyapplication/jsonrequired
StrategyIdinteger or null(int64)

The C2 StrategyId

curl -i -X PUT \
  https://api4-wl.collective2.com/Strategies/UpdateStrategy \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyIdDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyHistoricalEquity

Request

Returns monthly returns for the strategy. Non-paginated endpoint.

Query
StrategyIdinteger or null(int64)required

The Strategy ID to get data for

CommissionPlanstringrequired

(Optional) The commission plan to use. The default C2 web site CommissionPlan is used if none is specified. Available values: 0 = Default, 1 = C2Europe, 3 = IB, 4 = Tradovate, 5 = StoneX

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetStrategyHistoricalEquity?StrategyId=0&CommissionPlan=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyHistoricalEquityDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0, "StrategyName": "string", "StartDate": "2019-08-24T14:15:22Z", "SecurityTypesEnabled": {}, "MonthlyCost": 0.1, "StrategyOwnerId": 0, "MonthlyResults": [] } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyHistoricalDailyEquity

Request

Returns daily returns for the strategy. Non-paginated endpoint.

Query
StrategyIdinteger or null(int64)required

The Strategy ID to get data for

CommissionPlanstringrequired

(Optional) The commission plan to use. The default C2 web site CommissionPlan is used if none is specified. Available values: 0 = Default, 1 = C2Europe, 3 = IB, 4 = Tradovate, 5 = StoneX

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetStrategyHistoricalDailyEquity?StrategyId=0&CommissionPlan=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyHistoricalEquityDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0, "StrategyName": "string", "StartDate": "2019-08-24T14:15:22Z", "SecurityTypesEnabled": {}, "MonthlyCost": 0.1, "StrategyOwnerId": 0, "MonthlyResults": [] } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyHistoricalClosedTrades

Request

Returns the historical closed trades of the strategy. The difference between an order and a trade is trades group orders on 'tradeid', much like you would see on our web site. Non-paginated endpoint.

Query
CommissionPlanstringrequired

(Optional) The commission plan to use. The default web site CommissionPlan is used if none is specified. Available values: 0 = Default, 1 = C2Europe, 3 = IB, 4 = Tradovate, 5 = StoneX

StrategyIdinteger or null(int64)

The StrategyId

PersonIdinteger or null(int64)

(optional) The PersonId who will view the information. Available to WhiteLabel and GeoSite admins only. Default is the requester's PersonId

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetStrategyHistoricalClosedTrades?CommissionPlan=string'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(HistoricalTradeDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "TradeId": 0, "StrategyId": 0, "OpenDate": "2019-08-24T14:15:22Z", "CloseDate": "2019-08-24T14:15:22Z", "AvgOpenFillPrice": 0.1, "AvgCloseFillPrice": 0.1, "OpenedQuantity": 0.1, "ClosedQuantity": 0.1, "OpenSide": "1", "CloseSide": "1", "ProfitLoss": 0.1, "Commission": 0.1, "MaxDrawdown": 0.1, "MaxDrawdown_DateCalculated": "2019-08-24T14:15:22Z", "MaxDrawdown_WorstPrice": 0.1, "MaxDrawdown_WorstPriceDate": "2019-08-24T14:15:22Z", "MaxDrawdown_StrategyEquity": 0.1, "MaxDrawdown_EntryPrice": 0.1, "MaxDrawdown_OpenQuantity": 0.1, "C2Symbol": {}, "ExchangeSymbol": {} } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

SetDesiredPositionsV2

Request

The list of positions that must exist in the strategy. All C2 positions not in this list will be closed with market orders. Non-paginated endpoint.

Bodyapplication/jsonrequired
StrategyIdinteger or null(int64)

The C2 StrategyId

PositionsArray of objects or null(PositionBase)

The list of positions that must exist in the strategy. Quantity must be non-zero. To close a position, simply omit it from the Positions array. Sending an empty Positions array will close all positions.

curl -i -X POST \
  https://api4-wl.collective2.com/v2/Strategies/SetDesiredPositions \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(DesiredPositionResponseDTOV2)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "NewSignals": [], "CanceledSignals": [], "RejectedSignals": [] } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetWatchLists

Request

Request all watchlists available to the user. Paginated endpoint.

Query
PersonIdinteger or null(int64)required

The C2 PersonId

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetWatchLists?PersonId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(WatchListDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "PersonId": 0, "CreatedDate": "2019-08-24T14:15:22Z", "ListName": "string" } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetWatchListMembers

Request

Request a list of strategies in the watchlist. Paginated endpoint.

Query
PersonIdinteger or null(int64)required

The C2 PersonId

WatchListIdinteger or null(int64)required

The WatchList Id

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetWatchListMembers?PersonId=0&WatchListId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(WatchListMemberDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "AddedDate": "2019-08-24T14:15:22Z", "StrategyId": 0, "PersonId": 0 } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

ManageWatchList

Request

Edit watchlists and their members. Non-paginated endpoint.

Bodyapplication/jsonrequired
PersonIdinteger or null(int64)

The C2 PersonId

WatchListIdinteger or null(int64)

The WatchList Id. Required except when ModificationAction=ADD and ModificationSource=LIST

ModificationSourcestring or null

The Type of list to modify. Valid values are 'LIST' (for the whole watchlist), 'MEMBER' (for the list items)

ModificationActionstring or null

The change to make. Valid values are: ADD, DELETE

StrategyIdinteger or null(int64)

The Strategy Id. Only required when ModificationSource=MEMBER

WatchListNamestring or null

The name of the watchlist. Only required when ModificationAction=ADD and ModificationSource=LIST

curl -i -X POST \
  https://api4-wl.collective2.com/Strategies/ManageWatchList \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of booleans or null

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ true ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

ManageWatchList

Request

Edit watchlists and their members. Non-paginated endpoint.

Query
PersonIdinteger or null(int64)required

The C2 PersonId

ModificationSourcestringrequired

The Type of list to modify. Valid values are 'LIST' (for the whole watchlist), 'MEMBER' (for the list items)

ModificationActionstringrequired

The change to make. Valid values are: ADD, DELETE

WatchListIdinteger or null(int64)

The WatchList Id. Required except when ModificationAction=ADD and ModificationSource=LIST

StrategyIdinteger or null(int64)

The Strategy Id. Only required when ModificationSource=MEMBER

WatchListNamestring

The name of the watchlist. Only required when ModificationAction=ADD and ModificationSource=LIST

curl -i -X DELETE \
  'https://api4-wl.collective2.com/Strategies/ManageWatchList?PersonId=0&ModificationSource=string&ModificationAction=string'

Responses

OK

Bodyapplication/json
ResultsArray of booleans or null

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ true ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetSupportedSymbols

Request

Request a list of supported Futures and Forex symbols. All US stocks > $5 and all US equity options are supported by default so they will not be sent in the response. We will include a few non-standard stock symbols that require special C2 symbology. Paginated and cached endpoint.

curl -i -X GET \
  https://api4-wl.collective2.com/Strategies/GetSupportedSymbols

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SupportedSymbolDTO)

Result array

Paginationobject(PaginationProperties)
ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "Currency": "string", "Description": "string", "PointValue": 0.1, "TickSize": 0.1, "DecimalPrecision": 0, "C2Symbol": {}, "ExchangeSymbol": {}, "MarginRequirements": {}, "BrokerMarginRequirements": [] } ], "Pagination": { "prev_cursor": "string", "next_cursor": "string" }, "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetRule575Status

Request

Returns Rule 575 exception fills and rollup summaries for a White Label site. Only WhiteLabel admins can access this endpoint. Non-Paginated endpoint.

Query
WhiteLabelSiteIdinteger or null(int64)required

The White Label site Id

Daysinteger or null(int32)

(Optional) Number of days back to include. Falls back to days_back if not supplied. Default: 30

Sessionstring

(Optional) Trading session filter. Accepted values: all, RTH, ETH. Default: all

GroupBystring

(Optional) Dimension to group the rule575 rollup by. Accepted values: strategy, manager, instrument

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetRule575Status?WhiteLabelSiteId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(Rule575StatusDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "ExceptionSummary": {}, "Exceptions": [], "Rule575": {} } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetStrategyMuxStatus

Request

Get the signal multiplexer status report for a family of child strategies, including position sync state, exception counts, and per-variant sync details. Only WhiteLabel admins can access this endpoint. Non-Paginated endpoint.

Query
WhiteLabelSiteIdinteger or null(int64)required

The White Label site Id

FamilyGuidinteger or null(int64)

(Optional) The multiplexer family GUID to retrieve status for

VariantGuidinteger or null(int64)

(Optional) The variant (child strategy) GUID to retrieve per-symbol sync details for. Omit or set to 0 to return all variants without symbol-level detail.

DriftGraceinteger or null(int64)

(Optional) When provided, 'sync_details' returns per-symbol detail for that variant.

curl -i -X GET \
  'https://api4-wl.collective2.com/Strategies/GetStrategyMuxStatus?WhiteLabelSiteId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(StrategyMuxStatusDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "FamilyGuid": 0, "VariantGuid": 0, "WhiteLabelSiteId": 0, "WhiteLabelSiteName": "string", "Ok": "string", "DriftGraceSecs": 0, "Summary": {}, "ExceptionSummary": {}, "SyncSummary": [], "SyncDetails": [], "Exceptions": [] } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

GetSiteCatalog

Request

Return the catalog of strategies offered on your White Label site, priced as your customers see them. Each row shows the strategy's original name, the display name used on your site (when the site resells it under a custom name), the strategy's base monthly cost, any site markup in dollars, and the resulting monthly cost on your site. The site is the one your API key belongs to; C2 admin keys may pass WhiteLabelSiteId to view any site. Non-Paginated endpoint.

curl -i -X GET \
  https://api4-wl.collective2.com/Strategies/GetSiteCatalog

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SiteCatalogItemDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Id": 0, "StrategyId": 0, "OriginalName": "string", "DisplayName": "string", "BaseMonthlyCost": 0.1, "MarkupDollars": 0.1, "SiteMonthlyCost": 0.1, "ShortDescription": "string", "IsAlive": true, "IsOwnedBySite": true } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

UpdateSiteCatalog

Request

Add strategies to, or remove strategies from, your White Label site's catalog — the API version of the console's add/remove-strategy toggle. Send a list of StrategyIds (1 to 100 per call) with Action "Add" or "Remove", and get a per-strategy result back. The operation is idempotent: a strategy already in the requested state is reported as a success ("already_in_catalog" / "not_in_catalog"), so replays are safe. Removal is refused per-strategy while the strategy still has active paid subscribers who are customers of your site (the result carries the count); simulated subscriptions never block removal. The site is the one your API key belongs to; C2 admin keys may pass WhiteLabelSiteId to manage any site. Non-Paginated endpoint.

Bodyapplication/jsonrequired
Actionstring or null

"Add" to offer the strategies on your site, "Remove" to stop offering them

StrategyIdsArray of integers or null(int64)

A list of StrategyIds to add or remove. Between 1 and 100 unique strategies may be requested per call.

curl -i -X POST \
  https://api4-wl.collective2.com/Strategies/UpdateSiteCatalog \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(CatalogUpdateResultDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0, "Ok": true, "Status": "string", "Reason": "string", "Message": "string", "ActiveSubscribers": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

WhiteLabelUpdateSiteCatalogPricing

Request

Set the resale pricing for one strategy your White Label site resells: the monthly markup added to the strategy's base price, and optionally the custom display name and descriptions shown on your site — the API version of the console's library pricing editor. One strategy per call. DisplayName is stated on every call: include it to show a custom name, or omit it (or send it empty) to show the strategy's original name. The two descriptions keep their stored values when omitted. Refused for strategies your site OWNS (Collective2 charges your customers nothing for those, so their pricing lives in your own product) and for strategies not currently in your resale catalog — add those first with UpdateSiteCatalog. The site is always the one your API key belongs to. The new pricing is reflected in GetSiteCatalog immediately. Non-Paginated endpoint.

Bodyapplication/jsonrequired
StrategyIdinteger or null(int64)

The StrategyId to price. Must be a resold strategy currently in your site's catalog

MarkupDollarsnumber or null(double)

The monthly markup in US dollars added on top of the strategy's base price (0 to offer the strategy at its base price). Non-negative, at most 2 decimal places

DisplayNamestring or null

(optional) The custom display name shown for the strategy on your site, under 25 characters. Stated on every call: include it to show this name, omit it (or send an empty value) to show the strategy's original name

ShortDescriptionstring or null

(optional) Short marketing description shown on your site, max 200 characters. Omit to keep the stored value

LongDescriptionstring or null

(optional) Long description shown on your site, max 15000 characters. Omit to keep the stored value

curl -i -X POST \
  https://api4-wl.collective2.com/Strategies/WhiteLabelUpdateSiteCatalogPricing \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SiteCatalogPricingResultDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "StrategyId": 0, "MarkupDollars": 0.1, "DisplayName": "string" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

WhiteLabelStartSubscription

Request

Start a strategy subscription for a customer of your White Label site. What the call does depends on who owns the strategy, and the response's Lane field tells you which contract applied. A strategy OWNED by your site becomes a finite access grant: Collective2 charges nothing, you bill your customer yourself, and you must supply a term — Months (1 to 24) or AccessUntil (a date), not both; calling again extends the same access, so renewal is simply a repeat call, and access lapses on its own if you stop renewing. A RESOLD Collective2 marketplace strategy from your site catalog becomes an open-ended monthly subscription billed to your site's house account at the wholesale price — supply no term. The first wholesale charge is attempted during the call and the response reports whether it settled (IsFirstChargeSuccessful; if it did not, Collective2's recurring biller retries and ResponseStatus.Message carries the detail). The call is refused when your house account balance cannot cover the first charge, unless your site is configured to allow negative billing. There are no free trials on this lane, and billing continues monthly until you call StopSubscription — keep the house account funded or monthly renewals will stall. Your customer never pays Collective2 in either lane and no card details are involved. A live simulated subscription for the same customer and strategy is superseded automatically — this is the natural sim-to-real conversion. Requires IdempotencyKey, a stable per-business-event string. Retrying a call never double-subscribes, but the two lanes confirm a retry differently. Owned strategies: repeating the same key with identical parameters replays the original grant (HTTP 200 with IsIdempotentReplay true); reusing a key with different parameters is refused — use a fresh key for each intended renewal. Resold strategies: the key is recorded for audit; a customer can hold only one live subscription per strategy, so a retry after a start that actually succeeded returns HTTP 409 "Already subscribed" with the existing subscription's id in the error's Meta["SubscriptionId"] — treat that 409 as confirmation the subscription is active, not as a failure. Refusals carry machine-readable detail in the error's Meta where prose alone would be ambiguous: Meta["SubscriptionId"] on "Already subscribed", Meta["HouseAccountBalance"] and Meta["WholesaleMonthly"] on "Insufficient house account funds". Starting a subscription does not start AutoTrading; that is StartAutotrade's customer-approval flow. Non-Paginated endpoint.

Bodyapplication/jsonrequired
PersonIdinteger or null(int64)

The PersonId of the customer to subscribe. The customer must belong to your White Label site

StrategyIdinteger or null(int64)

The StrategyId to subscribe to. The strategy must be in your site's catalog

IdempotencyKeystring or null

A stable idempotency key for this business event (1 to 191 printable ASCII characters). Reusing the key on the owned-strategy lane replays the original grant instead of extending twice; make it unique per intended renewal

Monthsinteger or null(int32)

(owned strategies only) Grant length in months, 1 to 24. Provide Months or AccessUntil — not both. Leave empty for resold strategies

AccessUntilstring or null

(owned strategies only) Grant end date, YYYYMMDD or YYYY-MM-DD, in the future. Access runs through the end of that calendar day, US Eastern time; the response's AccessEndUtc is the exact UTC moment access ends. Provide Months or AccessUntil — not both. Leave empty for resold strategies

curl -i -X POST \
  https://api4-wl.collective2.com/Strategies/WhiteLabelStartSubscription \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(WhiteLabelSubscriptionStartResultDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Lane": "string", "PersonId": 0, "StrategyId": 0, "SubscriptionId": 0, "Action": "string", "IsIdempotentReplay": true, "AccessEndUtc": "2019-08-24T14:15:22Z", "PreviousAccessEndUtc": "2019-08-24T14:15:22Z", "WholesaleMonthly": 0.1, "RetailMonthly": 0.1, "MarkupMonthly": 0.1, "IsFirstChargeSuccessful": true, "NextBillUtc": "2019-08-24T14:15:22Z", "HouseAccountBalance": 0.1, "SupersededSimSubscriptionId": 0 } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }

WhiteLabelStopSubscription

Request

Stop a customer's strategy subscription on your White Label site. Mode "EndOfTerm" (the default) lets the paid term run out: billing stops, access continues until the term ends, and there are no mid-term refunds — repeating the call is an idempotent no-op, and for an owned-strategy access grant (which never renews on its own) the call simply confirms the access end date. Mode "Immediate" ends the subscription now and forfeits the remainder of the term; if the customer is AutoTrading the strategy, supply AutotradePositions to say what happens to open positions ("LeaveInPlace" or "AttemptToClose") — an immediate stop that needs this and doesn't get it is refused. Simulated subscriptions are refused here; stop those with StopSim. Non-Paginated endpoint.

Query
PersonIdinteger or null(int64)required

The PersonId of the customer whose subscription to stop. The customer must belong to your White Label site

StrategyIdinteger or null(int64)required

The StrategyId of the subscription to stop

Modestring

(optional) "EndOfTerm" (default): billing stops when the paid term ends, access continues until then. "Immediate": the subscription ends now; the remainder of the term is forfeited

AutotradePositionsstring

(optional) What to do with open autotraded positions on an Immediate stop when the customer is AutoTrading this strategy: "LeaveInPlace" or "AttemptToClose". Required in that situation; ignored otherwise

curl -i -X DELETE \
  'https://api4-wl.collective2.com/Strategies/WhiteLabelStopSubscription?PersonId=0&StrategyId=0'

Responses

OK

Bodyapplication/json
ResultsArray of objects or null(SubscriptionStopResultDTO)

Result array

ResponseStatusobject(ResponseStatus)
Response
application/json
{ "Results": [ { "Mode": "string", "PersonId": 0, "StrategyId": 0, "SubscriptionId": 0, "IsAlreadyEnding": true, "AccessEndUtc": "2019-08-24T14:15:22Z" } ], "ResponseStatus": { "ErrorCode": "string", "Message": "string", "Errors": [ {} ] } }