API Reference
Base URL: https://api.metakit.cloud
Copiers
Copy trading: mirror one account’s activity onto another. A copier has a source and a follower (which must be a full account). State on copies opens/closes/SL-TP/pendings; monitor copies closes only; off pauses. Lot sizing is fixed, multiplier, or proportional (by balance). All endpoints are paginated where they return lists.
/v1/copiers/{id}/performance
Get copier performance
How faithfully the follower tracks the master. copied_pnl counts only trades this copier placed (matched by follower ticket), so the follower’s own manual trades never inflate it. fidelity_pct is successful copies over attempted copies — trades declined by your filters are excluded, since declining by configuration is not a failure. Slippage is signed so POSITIVE always means worse for the follower, and is null for copies placed before fill-price capture existed. divergence normalises both accounts to percentage returns so accounts of different sizes are comparable.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| range | string | No | Window to compute over: 1m, 3m, 6m, 12m or all. Defaults to 3m. |
Example request
curl https://api.metakit.cloud/v1/copiers/123/performance \
-H "Authorization: Bearer stk_live_..."Example response
{
"copier_id": 12,
"range": "3m",
"master": {
"account_id": 3, "name": "Northwind Markets", "login": 8842190,
"server": "Northwind-Live04", "currency": "USD", "leverage": 100,
"balance": 74630, "equity": 74210, "floating": -420,
"open_positions": 3, "margin_level": 842, "spark": [0, 120.5, 318.2]
},
"follower": {
"account_id": 5, "name": "Vantor Global", "login": 9930215,
"server": "Vantor-Live01", "currency": "USD", "leverage": 30,
"balance": 125940, "equity": 126500, "floating": 560,
"open_positions": 3, "margin_level": 1204, "spark": [0, 61.4, 154.8]
},
"copied_pnl": 14820.5,
"copied_pnl_pct": 11.7,
"copies": 1284,
"copies_24h": 41,
"fidelity_pct": 97.4,
"median_latency_ms": 68,
"p95_latency_ms": 142,
"fastest_latency_ms": 41,
"slowest_latency_ms": 312,
"avg_slippage_pips": 0.3,
"worst_slippage_pips": 1.4,
"within_tolerance_pct": 98.9,
"follower_max_drawdown_pct": -4.8,
"divergence": [
{ "date": "2026-04-29", "master_pct": 0, "follower_pct": 0 },
{ "date": "2026-04-30", "master_pct": 0.42, "follower_pct": 0.31 }
],
"latency_buckets": [
{ "label": "<50ms", "count": 412 },
{ "label": "50\u2013100", "count": 690 },
{ "label": "100\u2013250", "count": 158 },
{ "label": "250\u2013500", "count": 21 },
{ "label": ">500", "count": 3 }
],
"slippage_by_symbol": [
{ "symbol": "BTCUSD", "avg_pips": 1.1, "trades": 24 },
{ "symbol": "XAUUSD", "avg_pips": 0.6, "trades": 188 }
],
"mirrored_trades": [
{
"source_id": 88421901,
"follower_ticket": 99302156,
"symbol": "EURUSD",
"side": "buy",
"opened_at": "2026-07-26T09:41:00.000Z",
"closed_at": "2026-07-26T11:12:00.000Z",
"source_volume": 0.8,
"copied_volume": 0.4,
"latency_ms": 64,
"slippage_pips": 0.2,
"follower_net": 186.4
}
],
"open_exposure_lots": 3.1,
"generated_at": "2026-07-28T10:15:00.000Z"
}/v1/copiers
List copiers
Paginated list of your copiers.
Example request
curl https://api.metakit.cloud/v1/copiers \
-H "Authorization: Bearer stk_live_..."Example response
{
"data": [
{
"id": 1,
"created_at": "2026-07-17T12:00:00.000Z",
"updated_at": "2026-07-17T12:00:00.000Z",
"source_account_id": 3,
"follower_account_id": 5,
"state": "on",
"lot_mode": "proportional",
"lot_value": 1,
"reverse": false,
"copy_existing": false,
"filters": {},
"symbol_map": {}
}
],
"page": 1, "limit": 25, "total": 1, "total_pages": 1
}/v1/copiers/{id}
Get copier
A single copier by id.
Example request
curl https://api.metakit.cloud/v1/copiers/123 \
-H "Authorization: Bearer stk_live_..."Example response
{ "id": 1, "source_account_id": 3, "follower_account_id": 5, "state": "on", "...": "..." }/v1/copiers
Create copier
Create a copier. Source and follower must differ, both must be running, and the follower must be a full account. Set copy_existing: true to also mirror the source’s currently-open positions on creation.
Request body
{
"source_account_id": 3,
"follower_account_id": 5,
"state": "on",
"lot_mode": "proportional",
"lot_value": 1,
"reverse": false,
"copy_existing": false,
"filters": { "symbols": ["EURUSD", "XAUUSD"], "max_open_positions": 10 },
"symbol_map": { "EURUSD": "EURUSD.r" }
}Example request
curl https://api.metakit.cloud/v1/copiers \
-H "Authorization: Bearer stk_live_..." \
-H "Content-Type: application/json" \
-X POST \
-d '{...'Example response
{ "id": 2, "state": "on", "source_account_id": 3, "follower_account_id": 5, "...": "..." }/v1/copiers/{id}
Update copier
Change any setting, including toggling state between on, monitor, and off.
Request body
{ "state": "monitor" }
// or change rules:
{ "lot_mode": "multiplier", "lot_value": 0.5, "reverse": true }Example request
curl https://api.metakit.cloud/v1/copiers/123 \
-H "Authorization: Bearer stk_live_..." \
-H "Content-Type: application/json" \
-X PATCH \
-d '{ "state": "monitor" }...'Example response
{ "id": 1, "state": "monitor", "...": "..." }/v1/copiers/{id}/risk
Update risk settings
Focused endpoint for risk config: lot sizing and filters.
Request body
{
"lot_mode": "proportional",
"lot_value": 1,
"filters": { "min_lot": 0.01, "max_lot": 5, "max_open_positions": 20 }
}Example request
curl https://api.metakit.cloud/v1/copiers/123/risk \
-H "Authorization: Bearer stk_live_..." \
-H "Content-Type: application/json" \
-X PUT \
-d '{...'Example response
{ "id": 1, "lot_mode": "proportional", "filters": { "max_lot": 5, "...": "..." } }/v1/copiers/{id}/symbol-map
Update symbol map (bulk)
Manage source→follower symbol mappings in bulk. mode: "replace" swaps the whole map; mode: "merge" upserts entries (an empty value removes a key).
Request body
{
"mode": "merge",
"map": { "EURUSD": "EURUSD.r", "US30": "US30.cash", "OLD": "" }
}Example request
curl https://api.metakit.cloud/v1/copiers/123/symbol-map \
-H "Authorization: Bearer stk_live_..." \
-H "Content-Type: application/json" \
-X PUT \
-d '{...'Example response
{ "id": 1, "symbol_map": { "EURUSD": "EURUSD.r", "US30": "US30.cash" }, "...": "..." }/v1/copiers/{id}
Delete copier
Delete a copier. Any positions it opened on the follower are LEFT OPEN. Returns 204.
Example request
curl https://api.metakit.cloud/v1/copiers/123 \
-H "Authorization: Bearer stk_live_..." \
-X DELETEExample response
204 No Content