API reference · v5

HTX Copy Trading API

HTX futures copy trading: rankings, profiles, performance, positions, closed positions, orders and transfers.

Base URL https://api.kopyon.com/v5/htx-copy-trading/ · send your key in the X-API-KEY header · trader id: The userSign in a lead trader's HTX URL.

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

Traders

GET /v5/htx-copy-trading/traders

HTX's futures lead traders and their figures over a period.

Query parameters

NameTypeDescription
periodrequiredenumDays the figures cover7D, 30D, 90D, 180D
sortByenumdefault pnlWhat to rank by: highest first, except maxDrawdown, lowest first; or the new tradersroi, pnl, copierPnl, copiers, newTraders, winRate, maxDrawdown, aum
pageintdefault 1Page number
rowsintdefault 20Rows per page1 to 50

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[].aumnumber
traders[].maxDrawdownnumber
traders[].winRatenumber
traders[].copierPnlnumber
traders[].copiersnumberCurrent copiers
traders[].maxCopiersnumber
hasMorealwaysbooleantrue when another page follows
totalalwaysnumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/htx-copy-trading/traders?period=7D"
{
  "data": {
    "traders": [
      {
        "traderId": "NTk1MTExMjE",
        "name": "一燃",
        "avatarUrl": "https://d1x7dwosqaosdj.cloudfront.net/images/2026-09-20/f2fd2fe4-5e36-4c47-9730-df6a280b2c82.png",
        "roi": 0.4455,
        "pnl": 4921.373567,
        "maxDrawdown": 0.037415,
        "winRate": 1,
        "aum": 15489.170088,
        "copierPnl": 3.837893,
        "copiers": 23,
        "maxCopiers": 500
      },
      {
        "traderId": "NTk2Njk0Njk",
        "name": "股神定律",
        "avatarUrl": "https://d1x7dwosqaosdj.cloudfront.net/images/2026-10-08/09ee991e-f0bc-4c14-863f-a0c3c3af87d4.png",
        "roi": 0.4707,
        "pnl": 2013.348305,
        "maxDrawdown": 0.028458,
        "winRate": 1,
        "aum": 6227.820616,
        "copierPnl": 13.400224,
        "copiers": 6,
        "maxCopiers": 100
      },
      {
        "traderId": "NTk3MjMwMzg",
        "name": "交易之师",
        "avatarUrl": "https://d1x7dwosqaosdj.cloudfront.net/images/2026-10-07/b12ea1c1-5d06-474e-bd49-5cac43ea0f6f.jpeg",
        "roi": 0.4999,
        "pnl": 1047.783543,
        "maxDrawdown": 0.043545,
        "winRate": 0.95,
        "aum": 12602.23416,
        "copierPnl": 2248.547836,
        "copiers": 8,
        "maxCopiers": 100
      }
    ],
    "hasMore": true,
    "total": 394
  }
}

Search traders

GET /v5/htx-copy-trading/traderSearch

Lead traders whose name contains this, by PnL, with 180-day figures.

Query parameters

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

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[].aumnumber
traders[].maxDrawdownnumber
traders[].winRatenumber
traders[].copierPnlnumber
traders[].copiersnumberCurrent copiers
traders[].maxCopiersnumber
hasMorealwaysbooleantrue when another page follows
totalalwaysnumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/htx-copy-trading/traderSearch?name=%E4%B8%80%E7%87%83"
{
  "data": {
    "traders": [
      {
        "traderId": "NTk1MTExMjE",
        "name": "一燃",
        "avatarUrl": "https://d1x7dwosqaosdj.cloudfront.net/images/2026-09-20/f2fd2fe4-5e36-4c47-9730-df6a280b2c82.png",
        "roi": 0.8807,
        "pnl": 10737.445096,
        "maxDrawdown": 0.961695,
        "winRate": 0.8571,
        "aum": 15489.170088,
        "copierPnl": 293.715039,
        "copiers": 23,
        "maxCopiers": 500
      }
    ],
    "hasMore": false,
    "total": 1
  }
}

Trader profile

GET /v5/htx-copy-trading/traderProfile

The trader's name, bio, copiers, profit share and all-time figures.

Query parameters

NameTypeDescription
traderIdrequiredstringThe lead trader's userSign, from traders

Response fields, in data

FieldTypeDescription
traderIdalwaysstring
namestring
avatarUrlstring
biostring
sourceDetails.subscribersonly HTX
sourceDetails.totalRoionly HTX
sourceDetails.winsonly HTX
sourceDetails.lossesonly HTX
copiersnumber
maxCopiersnumber
totalCopiersnumber
aumnumber
copierPnlnumber
profitSharenumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/htx-copy-trading/traderProfile?traderId=NTk1MTExMjE"
{
  "data": {
    "traderId": "NTk1MTExMjE",
    "name": "一燃",
    "avatarUrl": "https://d1x7dwosqaosdj.cloudfront.net/images/2026-09-20/f2fd2fe4-5e36-4c47-9730-df6a280b2c82.png",
    "bio": "趋势短线、请勿高杠杆跟单。盈利就提出收益。",
    "copiers": 23,
    "maxCopiers": 500,
    "totalCopiers": 148,
    "profitShare": 0.25,
    "copierPnl": 9804.10194,
    "aum": 15576.1614,
    "sourceDetails": {
      "subscribers": 40,
      "totalRoi": 0.3254,
      "wins": 70,
      "losses": 9
    }
  }
}

Performance

GET /v5/htx-copy-trading/performance

Return, PnL, win rate, drawdown and what copiers made over a period.

Query parameters

NameTypeDescription
traderIdrequiredstringThe lead trader's userSign, from traders
periodrequiredenumDays the figures cover7D, 30D, 90D, 180D

Response fields, in data

FieldTypeDescription
periodalwaysstring
roinumber
pnlnumber
maxDrawdownnumber
copierPnlnumber
winRatenumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/htx-copy-trading/performance?traderId=NTk1MTExMjE&period=7D"
{
  "data": {
    "period": "7D",
    "roi": 0.4455,
    "pnl": 4921.3736,
    "winRate": 1,
    "maxDrawdown": 0.0374,
    "copierPnl": 3.8379
  }
}

Chart

GET /v5/htx-copy-trading/traderChart

Cumulative ROI over the period, as a fraction, one point a day, oldest first. HTX keeps no cumulative PnL chart.

Query parameters

NameTypeDescription
traderIdrequiredstringThe lead trader's userSign, from traders
periodrequiredenumDays the figures cover7D, 30D, 90D, 180D

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/htx-copy-trading/traderChart?traderId=NTk1MTExMjE&period=7D"
{
  "data": {
    "metric": "ROI",
    "points": [
      {
        "timestamp": 1791648000000,
        "value": -0.0731
      },
      {
        "timestamp": 1791734400000,
        "value": -0.0105
      },
      {
        "timestamp": 1791820800000,
        "value": 0.0473
      }
    ]
  }
}

Open positions

GET /v5/htx-copy-trading/openPositions

The trader's open positions, sizes in the base asset. HTX does not say whether a trader hides them.

Query parameters

NameTypeDescription
traderIdrequiredstringThe lead trader's userSign, from traders

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[].liquidationPricenumber
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[].openedAtnumber

Example

curl -H "X-API-KEY: $KOPYON_KEY" \
  "https://api.kopyon.com/v5/htx-copy-trading/openPositions?traderId=NTAyNjczMzM"
{
  "data": {
    "positions": [
      {
        "symbol": "ETHUSDT",
        "side": "SHORT",
        "size": 15.49,
        "entryPrice": 2452.64,
        "markPrice": 2372.38,
        "leverage": 120,
        "marginMode": "CROSS",
        "unrealizedPnl": 1243.2981,
        "pnlCurrency": "USDT",
        "liquidationPrice": 2468.12,
        "margin": 306.234718,
        "roi": 4.0599,
        "openedAt": 1792152028582,
        "sourceDetails": {}
      }
    ]
  }
}

Position history

GET /v5/htx-copy-trading/positionHistory

The trader's closed positions, newest first, sizes in the base asset, with their gross PnL. Fees are in orderHistory.

Query parameters

NameTypeDescription
traderIdrequiredstringThe lead trader's userSign, from traders
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/htx-copy-trading/positionHistory?traderId=NTk1MTExMjE"
{
  "data": {
    "positions": [
      {
        "symbol": "ETHUSDT",
        "side": "SHORT",
        "marginMode": "ISOLATED",
        "entryPrice": 2417.44,
        "closePrice": 2414.49,
        "openedAt": 1792298395344,
        "closedAt": 1792314300703,
        "updatedAt": 1792314300703,
        "closedVolume": 0.34,
        "maxOpenInterest": 0.34,
        "grossPnl": 1.003,
        "pnlCurrency": "USDT",
        "sourceDetails": {}
      },
      {
        "symbol": "ETHUSDT",
        "side": "SHORT",
        "marginMode": "CROSS",
        "entryPrice": 2439.68,
        "closePrice": 2434.32,
        "openedAt": 1791475113876,
        "closedAt": 1791851838658,
        "updatedAt": 1791851838658,
        "closedVolume": 17.19,
        "maxOpenInterest": 17.19,
        "grossPnl": 92.1568,
        "pnlCurrency": "USDT",
        "sourceDetails": {}
      },
      {
        "symbol": "SOLUSDT",
        "side": "SHORT",
        "marginMode": "CROSS",
        "entryPrice": 108.6131,
        "closePrice": 108.1668,
        "openedAt": 1791480690500,
        "closedAt": 1791833233643,
        "updatedAt": 1791833233643,
        "closedVolume": 32,
        "maxOpenInterest": 32,
        "grossPnl": 14.2821,
        "pnlCurrency": "USDT",
        "sourceDetails": {}
      }
    ],
    "total": 63,
    "nextCursor": "OWM1OGM2OWExZGQ0MDBkZi4y"
  }
}

Order history

GET /v5/htx-copy-trading/orderHistory

The trader's filled orders, newest first, with fees and realized PnL.

Query parameters

NameTypeDescription
traderIdrequiredstringThe lead trader's userSign, from traders
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[].realizedPnlnumber
orders[].orderIdstring
orders[].tradingFeenumberFees paid, in sourceDetails.feeToken; negative is a rebate
orders[].leveragenumber
orders[].actionOPEN | CLOSE | BOTH
orders[].marginModeCROSS | ISOLATED
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/htx-copy-trading/orderHistory?traderId=NTk1MTExMjE"
{
  "data": {
    "orders": [
      {
        "orderId": "1559513723047395328",
        "symbol": "ETHUSDT",
        "side": "SELL",
        "action": "OPEN",
        "price": 2480.88,
        "quantity": 2.77,
        "leverage": 200,
        "marginMode": "CROSS",
        "realizedPnl": 0,
        "tradingFee": 3.77962211,
        "updatedAt": 1791858645938
      },
      {
        "orderId": "1559513452202168321",
        "symbol": "ETHUSDT",
        "side": "SELL",
        "action": "OPEN",
        "price": 2479.14,
        "quantity": 3.22,
        "leverage": 200,
        "marginMode": "CROSS",
        "realizedPnl": 0,
        "tradingFee": 4.39055694,
        "updatedAt": 1791858581363
      },
      {
        "orderId": "1559513323952934912",
        "symbol": "ETHUSDT",
        "side": "SELL",
        "action": "OPEN",
        "price": 2478.83,
        "quantity": 3.63,
        "leverage": 200,
        "marginMode": "CROSS",
        "realizedPnl": 0,
        "tradingFee": 4.948984095,
        "updatedAt": 1791858550786
      }
    ],
    "total": 517,
    "nextCursor": "ZDFjNDRkMmU1NmJmNTI5NS4y"
  }
}

Transfer history

GET /v5/htx-copy-trading/transferHistory

Money moved between the lead account and the trader's futures account, newest first. HTX keeps the last 90 days.

Query parameters

NameTypeDescription
traderIdrequiredstringThe lead trader's userSign, from traders
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/htx-copy-trading/transferHistory?traderId=NTk1MTExMjE"
{
  "data": {
    "transfers": [
      {
        "time": 1791921927300,
        "amount": -600,
        "asset": "USDT",
        "type": "withdraw"
      },
      {
        "time": 1791691282521,
        "amount": -18,
        "asset": "USDT",
        "type": "withdraw"
      },
      {
        "time": 1791476966265,
        "amount": 10000,
        "asset": "USDT",
        "type": "deposit"
      }
    ],
    "total": 45,
    "nextCursor": "ZTJjMjZiYjUxZjFjMWYzMS4y"
  }
}

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 HTX 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]