Skip to main content

Copy Trading

Version: v1​

Copy trading lets a master publish a futures trading strategy that slaves (followers) subscribe to. Every position the master opens or closes is mirrored onto each active slave account, scaled to the slave's allocated margin. A master earns a configurable share of the profit it generates for its followers.

Two roles, two controllers:

  • Copy master — /api/copy-master: create and manage a strategy, expose a public profile (leaderboard, analytics, positions, trades), and list followers.
  • Copy slave — /api/copy-slave: create a follower account, subscribe to a master (start / update / finish copy), and read per-subscription analytics.

Endpoints require a Bearer token (see Auth) unless marked Public — those are unauthenticated and back the public master profile.

Shared paged/entity models (PositionDto, OrderDto, TradeDto) are documented in Futures → Deals and Futures → Trade. List endpoints wrap them in a PagedResult:

{
"items": [],
"page": 1,
"pageSize": 10,
"totalCount": 0,
"totalPages": 0
}

Copy Master​

POST /api/copy-master​

Summary:​

Create a copy master account from an existing futures account. amount is the initial equity moved into the strategy; slaveIncomePercentage is the master's profit share, commissionRate the management fee.

Request model​
{
"name": "string",
"strategyName": "string",
"strategyDescription": "string",
"leverage": 0,
"currencyCode": "string",
"slaveIncomePercentage": 0,
"commissionRate": 0,
"amount": 0,
"facebookUrl": "string",
"twitterUrl": "string",
"telegramUrl": "string",
"instagramUrl": "string"
}
Response model​
{
"id": 0,
"avatarBlobId": "00000000-0000-0000-0000-000000000000",
"risk": 0,
"rank": 0,
"name": "string",
"strategyName": "string",
"strategyDescription": "string",
"futuresAccountId": 0,
"futuresAccountName": "string",
"leverage": 0,
"currencyCode": "string",
"slaveIncomePercentage": 0,
"commissionRate": 0,
"hashtags": ["string"],
"createdAt": "2026-07-03T00:00:00.000Z",
"closedAt": null,
"totalPnl": 0,
"totalPnlPercent": 0,
"todayPnlPercent": 0,
"followersEquity": 0,
"subscribersCount": 0,
"status": "string",
"globalRank": 0,
"tradingDays": 0,
"totalTrades": 0,
"maxDrawdownPercent": 0,
"balance": 0,
"equity": 0,
"usedMargin": 0,
"totalCommissions": 0,
"totalProfitShared": 0,
"dailyPnl": {}
}
Response codes​
CodeDescription
200Success

GET /api/copy-master​

Summary:​

Get the current user's copy master accounts.

Parameters​
NameLocated inDescriptionRequiredSchema
onlyClosedqueryReturn only closed strategiesNoboolean
roiFromqueryMin ROI filterNonumber
roiToqueryMax ROI filterNonumber
followersFromqueryMin followersNointeger
followersToqueryMax followersNointeger
daysFromqueryMin trading daysNointeger
daysToqueryMax trading daysNointeger
aumFromqueryMin assets under managementNonumber
aumToqueryMax assets under managementNonumber
sortPresetquerySort preset keyNostring
Response model​

Array of CopyMasterAccountDto (see the create response above).

Response codes​
CodeDescription
200Success

GET /api/copy-master/public-masters​

Summary:​

Public. Paged leaderboard of open master strategies. Supports the same filters as the user list plus a drawdown range.

Parameters​
NameLocated inDescriptionRequiredSchema
pagequeryPage number (default 1)Nointeger
pageSizequeryPage size (default 10)Nointeger
roiFrom / roiToqueryROI rangeNonumber
followersFrom / followersToqueryFollowers rangeNointeger
daysFrom / daysToqueryTrading-days rangeNointeger
aumFrom / aumToqueryAUM rangeNonumber
drawdownFrom / drawdownToqueryMax-drawdown rangeNonumber
sortPresetquerySort preset keyNostring
Response model​

PagedResult<CopyMasterAccountDto>.

Response codes​
CodeDescription
200Success

GET /api/copy-master/{copyMasterFuturesAccountId}/analytics​

Summary:​

Public. Full profile of a single master (analytics, snapshots, currency breakdown).

Response model​

CopyMasterAccountDto.

Response codes​
CodeDescription
200Success
404Master not found

GET /api/copy-master/{copyMasterFuturesAccountId}/positions​

Summary:​

Public. Open positions on the master's profile.

Parameters​
NameLocated inDescriptionRequiredSchema
pagequeryPage number (default 1)Nointeger
pageSizequeryPage size (default 100)Nointeger
Response model​

PagedResult<PositionDto> (see Futures → Deals).

Response codes​
CodeDescription
200Success

GET /api/copy-master/{copyMasterFuturesAccountId}/positions-history​

Summary:​

Public. Closed position history on the master's profile.

Parameters​
NameLocated inDescriptionRequiredSchema
pagequeryPage number (default 1)Nointeger
pageSizequeryPage size (default 100)Nointeger
sortByqueryField to sort byNostring
sortDirqueryasc or descNostring
sidequeryFilter by sideNostring
roiFrom / roiToqueryROI rangeNonumber
dateFrom / dateToqueryDate rangeNodate-time
Response model​

PagedResult<OrderDto> (see Futures → Deals).

Response codes​
CodeDescription
200Success

GET /api/copy-master/{copyMasterFuturesAccountId}/trades​

Summary:​

Public. Trade history on the master's profile. Same query parameters as positions-history.

Response model​

PagedResult<TradeDto> (see Futures → Trade).

Response codes​
CodeDescription
200Success

GET /api/copy-master/{copyMasterFuturesAccountId}/slaves​

Summary:​

List the slave accounts following this master (master owner only).

Response model​

Array of CopySlaveAccountDto (see Create copy slave).

Response codes​
CodeDescription
200Success

DELETE /api/copy-master/{copyMasterFuturesAccountId}​

Summary:​

Close and delete a copy master account.

Response codes​
CodeDescription
200Success

Copy Slave​

POST /api/copy-slave​

Summary:​

Create a copy slave (follower) account. A slave account holds the margin used to mirror masters' positions.

Request model​
{
"name": "string",
"leverage": 0,
"currencyCode": "string"
}
Response model​
{
"id": 0,
"futuresAccountId": 0,
"leverage": 0,
"currencyCode": "string",
"name": "string",
"futuresAccountName": "string",
"openPositionsCount": 0,
"activeSubscriptionsCount": 0
}
Response codes​
CodeDescription
200Success

GET /api/copy-slave​

Summary:​

Get the current user's copy slave accounts.

Response model​

Array of CopySlaveAccountDto.

Response codes​
CodeDescription
200Success

GET /api/copy-slave/following​

Summary:​

Following history — current holdings or past subscriptions across all of the user's slave accounts.

Parameters​
NameLocated inDescriptionRequiredSchema
onlyHistoryqueryReturn only closed subscriptionsNoboolean
pagequeryPage number (default 1)Nointeger
pageSizequeryPage size (default 10)Nointeger
Response model​
{
"items": [
{
"id": 0,
"masterName": "string",
"avatarBlobId": "00000000-0000-0000-0000-000000000000",
"masterFuturesAccountId": 0,
"copySlaveFuturesAccountId": 0,
"currencyCode": "string",
"totalProfit": 0,
"totalProfitPercent": 0,
"openingDate": "2026-07-03T00:00:00.000Z",
"closingDate": null,
"initialEquity": 0,
"settledEquity": 0,
"commission": 0,
"reason": null,
"isActive": true
}
],
"page": 1,
"pageSize": 10,
"totalCount": 0,
"totalPages": 0
}
Response codes​
CodeDescription
200Success

POST /api/copy-slave/startMasterCopy​

Summary:​

Start copying a master onto one of the user's slave accounts. margin allocates the equity dedicated to this subscription.

Request model​
{
"copyMasterFuturesAccountId": 0,
"copySlaveFuturesAccountId": 0,
"margin": 0
}
Response codes​
CodeDescription
200Success

POST /api/copy-slave/updateMasterCopySettings​

Summary:​

Update an active subscription's settings (e.g. allocated margin).

Request model​
{
"copyMasterFuturesAccountId": 0,
"copySlaveFuturesAccountId": 0,
"margin": 0
}
Response codes​
CodeDescription
200Success

POST /api/copy-slave/finishMasterCopy​

Summary:​

Stop copying a master. Set closeOrders to also close the positions currently mirrored from that master.

Request model​
{
"copyMasterFuturesAccountId": 0,
"copySlaveFuturesAccountId": 0,
"closeOrders": false
}
Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/subscriptions​

Summary:​

Active or historical subscriptions of a slave account, with PnL.

Parameters​
NameLocated inDescriptionRequiredSchema
activequeryActive (true) or historical (false); default trueNoboolean
pagequeryPage number (default 1)Nointeger
pageSizequeryPage size (default 10)Nointeger
Response model​

PagedResult<CopyFollowingHistoryDto> (see Following history).

Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/positions​

Summary:​

All open positions of a slave account (across every master it copies).

Parameters​
NameLocated inDescriptionRequiredSchema
pagequeryPage number (default 1)Nointeger
pageSizequeryPage size (default 100)Nointeger
Response model​

PagedResult<PositionDto>.

Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/trades​

Summary:​

Trade history of a slave account (across all masters). Supports the sortBy, sortDir, side, roiFrom/roiTo, dateFrom/dateTo filters.

Response model​

PagedResult<TradeDto>.

Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/positions-history​

Summary:​

Closed position history of a slave account (across all masters). Same filters as trades.

Response model​

PagedResult<OrderDto>.

Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/{copyMasterId}/positions​

Summary:​

Open positions of a slave copied from one specific master.

Parameters​
NameLocated inDescriptionRequiredSchema
pagequeryPage number (default 1)Nointeger
pageSizequeryPage size (default 100)Nointeger
Response model​

PagedResult<PositionDto>.

Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/{copyMasterId}/trades​

Summary:​

Trade history of a slave copied from one specific master. Same filters as the slave-wide trades endpoint.

Response model​

PagedResult<TradeDto>.

Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/{copyMasterId}/positions-history​

Summary:​

Closed position history of a slave copied from one specific master.

Response model​

PagedResult<OrderDto>.

Response codes​
CodeDescription
200Success

GET /api/copy-slave/{copySlaveId}/{copyMasterId}/settings​

Summary:​

The slave's copy settings for a specific master.

Response model​
{
"copyMasterFuturesAccountId": 0,
"copySlaveFuturesAccountId": 0,
"margin": 0
}
Response codes​
CodeDescription
200Success
404Subscription not found

GET /api/copy-slave/{copySlaveId}/{copyMasterId}/analytics​

Summary:​

The slave's analytics for following a specific master (PnL, trades, drawdown, commissions, funding).

Response model​
{
"copySlaveFuturesAccountId": 0,
"copyMasterFuturesAccountId": 0,
"masterName": "string",
"currencyCode": "string",
"createTimestamp": "2026-07-03T00:00:00.000Z",
"deactivatedAt": null,
"isActive": true,
"deactivationReason": null,
"initialEquity": 0,
"totalSlaveProfit": 0,
"copyMasterProfit": 0,
"currentPeriodSlaveProfit": 0,
"totalPnl": 0,
"totalPnlPercent": 0,
"unrealizedPnl": 0,
"totalCommissions": 0,
"totalFunding": 0,
"tradingDays": 0,
"totalTrades": 0,
"dailyPnl": {},
"currencyAnalytics": {}
}
Response codes​
CodeDescription
200Success
404Subscription not found

DELETE /api/copy-slave/{id}​

Summary:​

Delete a copy slave account.

Response codes​
CodeDescription
200Success