API reference · v5

BingX Copy Trading API

BingX copy trading for USDⓈ-M perpetuals: rankings and the global leaderboard, profiles, performance, positions, orders and transfers.

Base URL https://api.kopyon.com/v5/bingx-copy-trading/ · send your key in the X-API-KEY header · trader id: The number in a trader's BingX URL, or uid_apiIdentity from traders.

Get a free API key · Interactive reference with Try it · Authentication, paging and errors

Traders

GET /v5/bingx-copy-trading/traders

BingX's perpetual futures lead traders and their figures over a period. BingX returns at most 12 a page, and sometimes one fewer.

Query parameters

NameTypeDescription
periodrequiredenumDays the figures cover7D, 30D, 90D, 180D
sortByenumdefault overallWhat to rank by: highest first, except maxDrawdown and riskLevel, lowest firstoverall, roi, pnl, winRate, maxDrawdown, sharpeRatio, riskLevel, aum, copiers, copierPnl, equity
rankingenumBingX's global leaderboard, by 7-day ROI, instead of the list. period and sortBy are then ignoredglobal
pageintdefault 1Page number
rowsintdefault 12Rows per page1 to 12

Response fields, in data

FieldTypeDescription
traders[]alwaysarray
traders[].traderIdalwaysstringThe trader's id at the source; other operations take it as traderId
traders[].namealwaysstringDisplay name
traders[].avatarUrlstring
traders[].roinumber
traders[].pnlnumber
traders[].sourceDetails.riskLevelonly BingX
traders[].sourceDetails.equityonly BingX
traders[].sourceDetails.tradingDaysonly BingX
traders[].aumnumber
traders[].maxDrawdownnumber
traders[].winRatenumber
traders[].copierPnlnumber
traders[].sharpeRationumber
traders[].copiersnumberCurrent copiers
traders[].maxCopiersnumber
traders[].ranknumber
hasMorealwaysbooleantrue when another page follows
totalalwaysnumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/traders?period=7D"
{
  "data": {
    "traders": [
      {
        "traderId": "1211055486886170627_1560170963385430022",
        "name": "WakeChang",
        "avatarUrl": "https://static-app.bb-os.com/avatar/20220816/df5a08ba96b6721bdef73757e946135f.jpg",
        "roi": 0.0581,
        "pnl": 800.6599487983324,
        "winRate": 0.6428571428571429,
        "maxDrawdown": 0.30062622466496003,
        "sharpeRatio": 1.09,
        "aum": 25468.84,
        "copierPnl": 26325.68,
        "copiers": 66,
        "maxCopiers": 2000,
        "sourceDetails": {
          "riskLevel": 4,
          "equity": 8599.4,
          "tradingDays": 1140
        }
      },
      {
        "traderId": "1486057319616520199_1527490618722791430",
        "name": "péhoang",
        "avatarUrl": "https://static-app.bb-os.com/avatar/20230901/avatar_2.png",
        "roi": 0.0582,
        "pnl": 633.8506528544059,
        "winRate": 0.5217391304347826,
        "maxDrawdown": 0.09907589013438943,
        "sharpeRatio": 12.25,
        "aum": 20266.06,
        "copierPnl": 5442.27,
        "copiers": 120,
        "maxCopiers": 2000,
        "sourceDetails": {
          "riskLevel": 3,
          "equity": 11512.57,
          "tradingDays": 385
        }
      },
      {
        "traderId": "1388693961750388738_1609265371962621957",
        "name": "Hỏi làm gì",
        "avatarUrl": "https://static-app.bb-os.com/avatar/20230901/avatar_4.png",
        "roi": 0.2761,
        "pnl": 1293.9838287548985,
        "winRate": 1,
        "maxDrawdown": 0.15529037375034302,
        "sharpeRatio": 10.07,
        "aum": 15438.51,
        "copierPnl": 274.27,
        "copiers": 63,
        "maxCopiers": 2000,
        "sourceDetails": {
          "riskLevel": 3,
          "equity": 5980.12,
          "tradingDays": 653
        }
      }
    ],
    "hasMore": true,
    "total": 243
  }
}

Search traders

GET /v5/bingx-copy-trading/traderSearch

Lead traders whose name contains this, in BingX's overall order, with 180-day figures.

Query parameters

NameTypeDescription
namerequiredstringPart of the trader's name
pageintdefault 1Page number
rowsintdefault 12Rows per page1 to 12

Response fields, in data

FieldTypeDescription
traders[]alwaysarray
traders[].traderIdalwaysstringThe trader's id at the source; other operations take it as traderId
traders[].namealwaysstringDisplay name
traders[].avatarUrlstring
traders[].roinumber
traders[].pnlnumber
traders[].sourceDetails.riskLevelonly BingX
traders[].sourceDetails.equityonly BingX
traders[].sourceDetails.tradingDaysonly BingX
traders[].aumnumber
traders[].maxDrawdownnumber
traders[].winRatenumber
traders[].copierPnlnumber
traders[].sharpeRationumber
traders[].copiersnumberCurrent copiers
traders[].maxCopiersnumber
hasMorealwaysbooleantrue when another page follows
totalalwaysnumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/traderSearch?name=Wake"
{
  "data": {
    "traders": [
      {
        "traderId": "1211055486886170627_1560170963385430022",
        "name": "WakeChang",
        "avatarUrl": "https://static-app.bb-os.com/avatar/20220816/df5a08ba96b6721bdef73757e946135f.jpg",
        "roi": 3.4506,
        "pnl": 73181.0784372556,
        "winRate": 0.5524193548387096,
        "maxDrawdown": 1,
        "sharpeRatio": 3.17,
        "aum": 25468.84,
        "copierPnl": 26325.68,
        "copiers": 66,
        "maxCopiers": 2000,
        "sourceDetails": {
          "riskLevel": 5,
          "equity": 8599.4,
          "tradingDays": 1140
        }
      },
      {
        "traderId": "1535753300456808456_1555808079557668865",
        "name": "Awake trader",
        "avatarUrl": "https://static-app.bb-os.com/avatar/20260504/BingX_iOS_3cf56baf8b30c845ac4b6cd8c194822d.jpg",
        "roi": -0.3319,
        "pnl": -2987.463514690605,
        "winRate": 0.46632124352331605,
        "maxDrawdown": 0.997819807718936,
        "sharpeRatio": -1.87,
        "copierPnl": -1.93,
        "copiers": 0,
        "maxCopiers": 2000,
        "sourceDetails": {
          "riskLevel": 6,
          "equity": 48.76,
          "tradingDays": 255
        }
      },
      {
        "traderId": "1336639359271755777_1339683386145062918",
        "name": "awakeelectron",
        "avatarUrl": "https://static-app.bb-os.com/avatar/20240809/76e83f889ee5c1853ac038157d1309c4.jpg",
        "roi": 0.6319,
        "pnl": 290.96396571752496,
        "winRate": 0.625,
        "maxDrawdown": 0.14067340903227352,
        "sharpeRatio": 1.88,
        "copierPnl": -448.01,
        "copiers": 0,
        "maxCopiers": 2000,
        "sourceDetails": {
          "riskLevel": 4,
          "equity": 751.38,
          "tradingDays": 807
        }
      }
    ],
    "hasMore": false,
    "total": 4
  }
}

Trader profile

GET /v5/bingx-copy-trading/traderProfile

The trader's name, bio, copiers and profit share.

Query parameters

NameTypeDescription
traderIdrequiredstringuid_apiIdentity, from traders or leaderboard

Response fields, in data

FieldTypeDescription
traderIdalwaysstring
namestring
avatarUrlstring
biostring
sourceDetails.subscribersonly BingX
sourceDetails.positionsHiddenonly BingX
copiersnumber
profitSharenumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/traderProfile?traderId=1211055486886170627_1560170963385430022"
{
  "data": {
    "traderId": "1211055486886170627_1560170963385430022",
    "name": "WakeChang",
    "avatarUrl": "https://static-app.bb-os.com/avatar/20220816/df5a08ba96b6721bdef73757e946135f.jpg",
    "copiers": 1210,
    "profitShare": 0.08,
    "sourceDetails": {
      "subscribers": 3344,
      "positionsHidden": false
    }
  }
}

Performance

GET /v5/bingx-copy-trading/performance

Return, PnL, win rate, drawdown, Sharpe ratio and risk level over a period.

Query parameters

NameTypeDescription
traderIdrequiredstringuid_apiIdentity, from traders or leaderboard
periodrequiredenumDays the figures cover7D, 30D, 90D, 180D

Response fields, in data

FieldTypeDescription
periodalwaysstring
roinumber
pnlnumber
maxDrawdownnumber
winRatenumber
sharpeRationumber
sourceDetails.riskLevelonly BingX

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/performance?traderId=1211055486886170627_1560170963385430022&period=7D"
{
  "data": {
    "period": "7D",
    "roi": 0.0581,
    "pnl": 800.6599487983324,
    "winRate": 0.6428571428571429,
    "maxDrawdown": 0.30062622466496003,
    "sharpeRatio": 1.09,
    "sourceDetails": {
      "riskLevel": 4
    }
  }
}

Chart

GET /v5/bingx-copy-trading/traderChart

Cumulative ROI or PnL over the period, one point a day, oldest first.

Query parameters

NameTypeDescription
traderIdrequiredstringuid_apiIdentity, from traders or leaderboard
periodrequiredenumDays the figures cover7D, 30D, 90D, 180D
metricenumdefault ROIROI as a fraction, or PnL in USDTROI, PNL

Response fields, in data

FieldTypeDescription
metricalwaysstringWhat the points measure: ROI, PNL or BALANCE
points[]alwaysarray
points[].timestampalwaysnumberPoint time, in Unix milliseconds
points[].valuealwaysnumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/traderChart?traderId=1211055486886170627_1560170963385430022&period=7D"
{
  "data": {
    "metric": "ROI",
    "points": [
      {
        "timestamp": 1791820800000,
        "value": 0.190901377101265
      },
      {
        "timestamp": 1791907200000,
        "value": 0.1717180791000179
      },
      {
        "timestamp": 1791993600000,
        "value": 0.06217056334827329
      }
    ]
  }
}

Open positions

GET /v5/bingx-copy-trading/openPositions

The trader's open positions, sizes in the base asset. A trader can hide them; then positions is empty and hidden is true.

Query parameters

NameTypeDescription
traderIdrequiredstringuid_apiIdentity, from traders or leaderboard

Response fields, in data

FieldTypeDescription
positions[]alwaysarray
positions[].symbolalwaysstring
positions[].sidealwaysLONG | SHORT
positions[].sizenumberPosition size, always positive; side gives the direction
positions[].entryPricealwaysnumber
positions[].markPricenumberThe exchange's mark price
positions[].leveragenumber
positions[].marginModeISOLATED | CROSS
positions[].unrealizedPnlnumberIn pnlCurrency
positions[].pnlCurrencystring
positions[].marginnumberMargin the position uses, in pnlCurrency
positions[].roinumberunrealizedPnl over margin, as a fraction. Where the exchange sends its own (KuCoin; BingX, over the opening margin), it is passed on and can differ from that ratio
positions[].positionIdstring
positions[].fundingPnlnumber
positions[].tradingFeenumberFee paid to open, as a positive cost
hiddenalwaysbooleantrue when the trader hides positions

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/openPositions?traderId=1211055486886170627_1560170963385430022"
{
  "data": {
    "positions": [
      {
        "symbol": "AXLUSDT",
        "side": "SHORT",
        "size": 43300,
        "entryPrice": 0.05585,
        "markPrice": 0.05396,
        "leverage": 5,
        "marginMode": "CROSS",
        "unrealizedPnl": 81.9419,
        "pnlCurrency": "USDT",
        "positionId": "2111787491774377986",
        "margin": 483.6811,
        "roi": 0.1694,
        "fundingPnl": -1.2695,
        "tradingFee": 1.2092,
        "sourceDetails": {}
      },
      {
        "symbol": "GTCUSDT",
        "side": "SHORT",
        "size": 10480,
        "entryPrice": 0.25878,
        "markPrice": 0.25083,
        "leverage": 5,
        "marginMode": "CROSS",
        "unrealizedPnl": 83.3412,
        "pnlCurrency": "USDT",
        "positionId": "2111726685175099394",
        "margin": 542.4079,
        "roi": 0.1536,
        "fundingPnl": -32.0719,
        "tradingFee": 1.356,
        "sourceDetails": {}
      },
      {
        "symbol": "ERAUSDT",
        "side": "SHORT",
        "size": 48000,
        "entryPrice": 0.06702,
        "markPrice": 0.06906,
        "leverage": 5,
        "marginMode": "CROSS",
        "unrealizedPnl": -97.4341,
        "pnlCurrency": "USDT",
        "positionId": "2111665336508166146",
        "margin": 643.4416,
        "roi": -0.1514,
        "fundingPnl": -76.9088,
        "tradingFee": 1.9387,
        "sourceDetails": {}
      }
    ],
    "hidden": false
  }
}

Position history

GET /v5/bingx-copy-trading/positionHistory

The trader's closed positions, newest first, with gross PnL, funding, fees and net PnL.

Query parameters

NameTypeDescription
traderIdrequiredstringuid_apiIdentity, from traders or leaderboard
cursorstringThe nextCursor of the previous answer; leave it out for the first page
rowsintdefault 20Rows per page1 to 50

Response fields, in data

FieldTypeDescription
positions[]alwaysarray
positions[].positionIdstring
positions[].symbolalwaysstring
positions[].sideLONG | SHORT
positions[].statusstring
positions[].marginModeISOLATED | CROSS
positions[].leveragenumber
positions[].roinumber
positions[].entryPricenumber
positions[].closePricenumber
positions[].openedAtalwaysnumberWhen the position opened, in Unix milliseconds
positions[].closedAtnumberWhen the position closed, in Unix milliseconds
positions[].updatedAtalwaysnumberLast change, in Unix milliseconds
positions[].openedVolumenumber
positions[].closedVolumenumber
positions[].maxOpenInterestnumber
positions[].grossPnlnumber
positions[].fundingPnlnumber
positions[].tradingFeenumber
positions[].liquidationFeenumber
positions[].netPnlnumber
positions[].pnlCurrencystring
totalalwaysnumber
nextCursorstringSend it back as cursor, with the same query, to read the next page; absent on the last page

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/positionHistory?traderId=1211055486886170627_1560170963385430022"
{
  "data": {
    "positions": [
      {
        "positionId": "2111665336761303040",
        "symbol": "ERAUSDT",
        "side": "SHORT",
        "marginMode": "CROSS",
        "leverage": 5,
        "entryPrice": 0.06703,
        "closePrice": 0.07289,
        "openedAt": 1792295224000,
        "closedAt": 1792310127000,
        "updatedAt": 1792310127000,
        "openedVolume": 52720,
        "closedVolume": 4720,
        "grossPnl": -27.6588,
        "fundingPnl": -76.9088,
        "tradingFee": 1.9387,
        "netPnl": -106.5063,
        "pnlCurrency": "USDT",
        "sourceDetails": {}
      },
      {
        "positionId": "2111297755042922496",
        "symbol": "BRUSDT",
        "side": "SHORT",
        "marginMode": "CROSS",
        "leverage": 5,
        "entryPrice": 0.37357,
        "closePrice": 0.42099,
        "openedAt": 1792207585000,
        "closedAt": 1792309715000,
        "updatedAt": 1792309715000,
        "openedVolume": 10000,
        "closedVolume": 10000,
        "grossPnl": -474.2023,
        "fundingPnl": -27.1235,
        "tradingFee": 3.9727,
        "netPnl": -505.2985,
        "pnlCurrency": "USDT",
        "sourceDetails": {}
      },
      {
        "positionId": "2111665611035230208",
        "symbol": "GTCUSDT",
        "side": "SHORT",
        "marginMode": "CROSS",
        "leverage": 5,
        "entryPrice": 0.2645,
        "closePrice": 0.26214,
        "openedAt": 1792295289000,
        "closedAt": 1792295370000,
        "updatedAt": 1792295370000,
        "openedVolume": 20,
        "closedVolume": 20,
        "grossPnl": 0.0472,
        "fundingPnl": 0,
        "tradingFee": 0.0052,
        "netPnl": 0.042,
        "pnlCurrency": "USDT",
        "sourceDetails": {}
      }
    ],
    "total": 266,
    "nextCursor": "NDYwN2NiZWJjOTU1N2E4NC4y"
  }
}

Order history

GET /v5/bingx-copy-trading/orderHistory

The trader's orders, newest first.

Query parameters

NameTypeDescription
traderIdrequiredstringuid_apiIdentity, from traders or leaderboard
cursorstringThe nextCursor of the previous answer; leave it out for the first page
rowsintdefault 20Rows per page1 to 50

Response fields, in data

FieldTypeDescription
orders[]alwaysarray
orders[].symbolalwaysstring
orders[].sidealwaysstring
orders[].pricenumber
orders[].quantitynumber
orders[].updatedAtalwaysnumberLast change, in Unix milliseconds
orders[].orderTypestringFor example MARKET or LIMIT
orders[].realizedPnlnumber
orders[].orderIdstring
orders[].tradingFeenumberFees paid, in sourceDetails.feeToken; negative is a rebate
orders[].actionOPEN | CLOSE | BOTH
orders[].statusstringFor example Filled or Cancelled
orders[].positionIdstring
totalalwaysnumber
nextCursorstringSend it back as cursor, with the same query, to read the next page; absent on the last page

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/orderHistory?traderId=1211055486886170627_1560170963385430022"
{
  "data": {
    "orders": [
      {
        "orderId": "2111789341936398336",
        "symbol": "AXLUSDT",
        "side": "SELL",
        "action": "OPEN",
        "orderType": "Market",
        "status": "Filled",
        "price": 0.0559,
        "quantity": 100,
        "realizedPnl": 0,
        "tradingFee": 0.0027,
        "updatedAt": 1792324789000,
        "positionId": "2111787491774377986"
      },
      {
        "orderId": "2111789324815249408",
        "symbol": "AXLUSDT",
        "side": "SELL",
        "action": "OPEN",
        "orderType": "Market",
        "status": "Filled",
        "price": 0.0559,
        "quantity": 100,
        "realizedPnl": 0,
        "tradingFee": 0.0027,
        "updatedAt": 1792324785000,
        "positionId": "2111787491774377986"
      },
      {
        "orderId": "2111789321153622016",
        "symbol": "AXLUSDT",
        "side": "SELL",
        "action": "OPEN",
        "orderType": "Market",
        "status": "Filled",
        "price": 0.0559,
        "quantity": 100,
        "realizedPnl": 0,
        "tradingFee": 0.0027,
        "updatedAt": 1792324784000,
        "positionId": "2111787491774377986"
      }
    ],
    "total": 77082,
    "nextCursor": "YzgzZmVlN2EyYzc1NTY2Ny4y"
  }
}

Transfer history

GET /v5/bingx-copy-trading/transferHistory

Assets moved into and out of the account, newest first.

Query parameters

NameTypeDescription
traderIdrequiredstringuid_apiIdentity, from traders or leaderboard
cursorstringThe nextCursor of the previous answer; leave it out for the first page
rowsintdefault 20Rows per page1 to 50

Response fields, in data

FieldTypeDescription
transfers[]alwaysarray
transfers[].timealwaysnumberIn Unix milliseconds
transfers[].assetstring
transfers[].amountalwaysnumber
transfers[].typealwaysdeposit | withdraw | transfer | vaultDeposit | vaultWithdraw | commission | otherdeposit and withdraw move the owner's money into or out of the account; transfer, to or from another address; vaultDeposit and vaultWithdraw, into or out of a vault; commission is a vault leader's share; other is a kind none of these fits, named in sourceDetails.type
totalalwaysnumber
nextCursorstringSend it back as cursor, with the same query, to read the next page; absent on the last page

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/bingx-copy-trading/transferHistory?traderId=1211055486886170627_1560170963385430022"
{
  "data": {
    "transfers": [
      {
        "time": 1792291853000,
        "amount": 300.05479512,
        "asset": "USDT",
        "type": "deposit"
      },
      {
        "time": 1792218867000,
        "amount": 0.64560499,
        "asset": "USDT",
        "type": "deposit"
      },
      {
        "time": 1792148704000,
        "amount": 0.34448516,
        "asset": "USDT",
        "type": "deposit"
      }
    ],
    "total": 120,
    "nextCursor": "NjhjNDk1NDVhZmU1OTQwZi4y"
  }
}

Stream and webhooks

Paid plans can follow a trader in real time over wss://api.kopyon.com/v5/streamor through signed webhooks. Topics for this source:

  • openPositions: Open positions, whenever they change
  • positionEvents: Opened, increased, decreased, closed
  • orderHistory: New and updated orders
  • positionHistory: Newly closed positions

Stream messages and webhook signatures

Try the BingX Copy Trading API for free.

The free tier is 10,000 requests a month. That is enough to build a whole integration and test it against live data before you pay anything.

Usually answered within a day · [email protected]