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