Copy Trade
Copy trade subscriptions and configuration
The Copy Trade API allows users to automatically replicate trades from top traders. Users can configure position sizing, risk controls, and category filters for each subscription. All copy trade endpoints require authentication.
Endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /api/v1/copy-trade/subscriptions | Bearer | List all copy-trade subscriptions |
| GET | /api/v1/copy-trade/feed | Bearer | Get copy-trade activity feed |
| POST | /api/v1/copy-trade/subscribe | Bearer | Subscribe to copy a trader |
| PUT | /api/v1/copy-trade/:id | Bearer | Update a subscription's settings |
| DELETE | /api/v1/copy-trade/:id | Bearer | Deactivate a subscription |
| GET | /api/v1/copy-trade/:id/history | Bearer | Get trade history for a subscription |
| GET | /api/v1/copy-trade/:id/performance | Bearer | Get performance stats for a subscription |
Subscribe to a Trader
Create a new copy-trade subscription. The system will automatically mirror the target trader's future trades according to the configured rules.
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
targetWalletAddress | string | Yes | Wallet address of the trader to copy |
sizingStrategy | string | Yes | fixed (fixed USD per trade) or percentage (% of target size) |
fixedAmount | string | No | Fixed amount per trade in USD (when using fixed strategy) |
percentage | number | No | Percentage of target trade size (1-100, when using percentage strategy) |
maxPositionUsd | string | Yes | Maximum total position size in USD |
maxPerTrade | string | No | Maximum amount per single trade in USD |
maxOpenPositions | number | No | Maximum concurrent open positions |
dailyTradeCap | number | No | Maximum number of trades per day |
maxDailyLoss | string | No | Maximum daily loss in USD before auto-pausing |
slippageTolerance | number | No | Maximum slippage tolerance (0.01 = 1%) |
exitStrategy | string | Yes | mirror (auto-exit when target exits) or manual |
takeProfitPercent | number | No | Auto take-profit percentage |
stopLossPercent | number | No | Auto stop-loss percentage |
categories | string[] | No | Only copy trades in these market categories |
minLiquidity | number | No | Minimum market liquidity threshold in USD |
// POST /api/v1/copy-trade/subscribe
{
"targetWalletAddress": "0x1234567890abcdef1234567890abcdef12345678",
"sizingStrategy": "fixed",
"fixedAmount": "50.00",
"maxPositionUsd": "500.00",
"maxPerTrade": "100.00",
"maxOpenPositions": 10,
"dailyTradeCap": 10,
"maxDailyLoss": "200.00",
"exitStrategy": "mirror",
"categories": ["politics", "crypto"]
}// Response 201
{
"id": "sub-uuid-123",
"targetWalletAddress": "0x1234...5678",
"targetDisplayName": "TopTrader",
"sizingStrategy": "fixed",
"fixedAmount": "50.00",
"maxPositionUsd": "500.00",
"exitStrategy": "mirror",
"status": "active",
"createdAt": "2026-03-27T12:00:00.000Z"
}Update Subscription
Modify an existing subscription's configuration. Only the fields you provide will be updated.
// PUT /api/v1/copy-trade/sub-uuid-123
{
"fixedAmount": "75.00",
"maxDailyLoss": "300.00"
}Subscription History
Get the trade history for a specific copy-trade subscription, showing which trades were copied and their outcomes.
// GET /api/v1/copy-trade/sub-uuid-123/history
// Response 200
{
"trades": [
{
"id": "trade-uuid-456",
"marketTitle": "Will the Fed cut rates in June 2026?",
"side": "yes",
"amount": 50.00,
"price": 0.63,
"pnl": 8.50,
"status": "filled",
"copiedAt": "2026-03-25T14:30:00.000Z"
}
]
}Notes
- Copy-trade subscriptions are monitored in real-time via WebSocket; when the target trader places a trade, the system automatically creates a mirrored order
- Deleting a subscription deactivates it (soft delete) but does not close existing copied positions
- The
user:copy-tradeWebSocket channel broadcasts real-time updates about copied trades - Risk controls (daily loss cap, max positions, slippage tolerance) act as circuit breakers to pause copying when thresholds are hit