json

Change Log

Version 1.1.3 (10th July 2025)

We encourage developers to transition away from these endpoints as they will no longer be supported after the end of July.
A new, improved endpoint to replace these can be accessed here:

Version 1.1.2 (10th April 2024)

Version 1.1.1 (08th April 2024)

Version 1.1.0 (16th November 2022)

Version 1.0.4 (25th, August 2022)

Version 1.0.3 (13th, May 2022)

Version 1.0.2 (16th March 2022)

Version 1.0.1 (25th January 2022)

Version 1.0.0 (13th January 2022)

Overview

Generating API Key

You will need to create an API key on the BTSE platform before you can use authenticated APIs. To create API keys, you can follow the steps below:

Endpoints

Authentication

Example 1: Get Wallet

HMAC SHA384 Signature

$ echo -n "/api/v3.2/user/wallet1624984297330" | openssl dgst -sha384 -hmac "848db84ac252b6726e5f6e7a711d9c96d9fd77d020151b45839a5b59c37203bx"
(stdin)= 14b986706a4368221e0af14a6725377161805e7a57d568220478cb3590ce532d4fad4ac68e6c02a14afced6a0619bfd3

Rate Limits

Rate limits for BTSE is as follows:

Wallet operation

API Status Codes

Each API will return one of the following HTTP status:

Public Endpoints

Query available crypto network list for currency (Deprecated)

Response

[
  "Bitcoin",
  "Liquid"
]

GET /api/v3.2/availableCurrencyNetworks

Get available crypto network list for currency. This endpoint will be deprecated after July 30, 2025. Please replace this endpoint with Query crypto networks.

Request Parameters

Name Type Required Description
currency String Yes Ex: BTC

Response Content

Name Type Required Description
$network String Yes Name of network

Query exchange rate between assets (Deprecated)

Response

{
  "code": 1,
  "msg": "Success",
  "time": 1643085970137,
  "data": 36051.55950285,
  "success": true
}

GET /api/v3.2/exchangeRate

Get the exchange rate between assets. This endpoint will be deprecated after July 30, 2025. Please replace this endpoint with Query asset exchange rate.

Request Parameters

Name Type Required Description
srcCurrency String Yes Ex: BTC
targetCurrency String Yes Ex: USD

Response Content

Name Type Required Description
code Integer Yes Return code
msg String Yes Return message
time Long Yes Unix timestamp
data Float Yes Exchange rate between assets
success Boolean Yes True or False

Query Crypto Networks

Response

{
  "success": true,
  "code": 1,
  "msg": "Success",
  "time": 1624989977940,
  "data": [
    {
      "network": "ERC20",
      "name": "Ethereum (ERC20)",
      "depositEnable": true,
      "withdrawEnable": true,
      "confirmationTime": 15,
      "depositAmtMin": "0",
      "depositFeeMin": "0",
      "depositFeeRate": "0",
      "depositExtFees": "0",
      "depositExtFeeRate": "0",
      "needAddressExtension": false,
      "withdrawAmtMin": "36.41",
      "withdrawFeeMin": "6.41",
      "withdrawFeeRate": "0",
      "withdrawExtFees": "0",
      "withdrawExtFeeRate": "0"
    },
    {
      "network": "RIPPLE",
      "name": "Ripple",
      "depositEnable": true,
      "withdrawEnable": true,
      "confirmationTime": 10,
      "depositAmtMin": "0",
      "depositFeeMin": "0",
      "depositFeeRate": "0",
      "depositExtFees": "0",
      "depositExtFeeRate": "0",
      "needAddressExtension": true,
      "addressExtensionTypeName": "tag",
      "withdrawAmtMin": "0.25",
      "withdrawFeeMin": "20",
      "withdrawFeeRate": "0",
      "withdrawExtFees": "0",
      "withdrawExtFeeRate": "0"
    }
  ]
}

GET /public-api/wallet/v1/crypto/networks

Get crypto network list with corresponding crypto.

This API can be publicly accessed without any security headers to get a default network list.

If you access with Read permission authentication, the result will be much more accurate by account setting. The response of depositEnable and withdrawEnable is true by default under the publicly accessed environment.

Request Parameters

Name Type Required Description
crypto String Yes Ex: BTC

Response Content

Name Type Required Description
data Object Yes Array of objects (CryptoNetworkItem)
success Boolean Yes Request validation is successful or not. It will be set to true when the HTTP status is 200.
code Integer Yes Request status code. It will be set to 1 when the request is processed successfully. When unsuccessful, there will be an error code.
msg String Yes Request status message. It will be set to Success when the request is processed successfully. When unsuccessful, there will be an error message.
time Long Yes Current unix timestamp.

Data Object (CryptoNetworkItem)

Name Type Required Description
network String Yes Network
name String Yes Network name
depositEnable Boolean Yes Allow to deposit
withdrawEnable Boolean Yes Allow to withdraw
confirmationTime Integer No Expected block confirmation time
depositAmtMin String Yes Minimum amount of deposit
depositFeeMin String Yes Minimum fees of deposit
depositFeeRate String Yes Fee rate of deposit
depositExtFees String Yes Extra fees of deposit
depositExtFeeRate String Yes Extra fee rate of deposit
needAddressExtension Boolean Yes Supported address extension
addressExtensionTypeName String No Address extension type (e.g. tag)
withdrawAmtMin String Yes Minimum amount of withdrawal
withdrawFeeMin String Yes Minimum fees of withdraw
withdrawFeeRate String Yes Fee rate of withdrawal
withdrawExtFees String Yes Extra fees of withdraw
withdrawExtFeeRate String Yes Extra fee rate of withdraw

Query Asset Exchange Rate

Response

{
  "success": true,
  "code": 1,
  "msg": "Success",
  "time": 1624989977940,
  "data": {
    "rate": "19026.12846161"
  }
}

GET /public-api/wallet/v1/assets/exchangeRate

Retrieve exchange rate about a specific pair. For example, baseCurrency and quoteCurrency.

Request Parameters

Name Type Required Description
baseCurrency String Yes Example: baseCurrency=BTC
Base currency, such as BTC
amount String Yes Example: amount=2
The quantity of baseCurrency .
quoteCurrency String Yes Example: quoteCurrency=USDT
Quote currency, such as USDT.

Response Content

Response Content

Name Type Required Description
data Object Yes Array of objects (CryptoNetworkItem)
success Boolean Yes Request validation is successful or not. It will be set to true when the HTTP status is 200.
code Integer Yes Request status code. It will be set to 1 when the request is processed successfully. When unsuccessful, there will be an error code.
msg String Yes Request status message. It will be set to Success when the request is processed successfully. When unsuccessful, there will be an error message.
time Long Yes Current unix timestamp.

Data Object

Name Type Required Description
rate String No The rate of base-currency to quote-currency.

Wallet Endpoints

Query Wallet Balance

Response

[
  {
    "available": 520.52,
    "currency": "USD",
    "total": 5566.5566
  }
]

GET /api/v3.2/user/wallet

Query user's wallet balance. Requires Read permissions on the API key.

Response Content

Name Type Required Description
currency String Yes Currency
total Double Yes Total balance
available Double Yes Available balance

Query Wallet History

Response

[
  {
    "amount": 21.35823825,
    "currency": "USD",
    "description": "String",
    "fees": 0.06,
    "orderId": 20181213000239,
    "status": "COMPLETED",
    "timestamp": 1571630174639,
    "type": "Transfer_In",
    "username": "btseUser",
    "wallet": "Wallet",
    "txid": "<Blockchain Transaction ID>",
    "currencyNetwork": "<Blockchain currency network>"
  }
]

GET /api/v3.2/user/wallet_history

Get user's wallet history records on the spot wallet

Request Parameters

Name Type Required Description
currency String No Currency, if not specified will return all currencies
startTime Long No Starting time in milliseconds (eg. 1624987283000)
endTime Long No Ending time in milliseconds (eg. 1624987283000)
count Integer No Number of records to return
useNewSymbolNaming Boolean No True to return futures market name in the new format, default to False

Response Content

Name Type Required Description
currency String Yes Currency
amount Double Yes Amount in the record
fees Double Yes Fees charged if any
orderId String Yes Internal wallet order ID
wallet String Yes Wallet type. For spot will return @SPOT
description String Yes Description of the transaction
status String Yes The status of the record is as follows
PROCESSING
CANCELLED
COMPLETED
EXPIRED
FAILURE
PENDING
type String Yes The type of the record is as follows
Deposit
Withdraw
Convert fiat
Transfer_Out
Transfer_In
ReferralEarning
Trading Fee Stake Freeze
Trading Fee Stake Unfreeze
Sub Account Transfer In
Sub Account Transfer Out
express buy
Strategy Income
Strategy Pay
token voucher in
spot trading fee rebate
futures trading fee rebat
trial fund
general trading fee rebate
token voucher out

Create Wallet Address

Request

{
  "currency": "BTC",
  "network": "LIQUID"
}

Response

[
  {
    "address": "Blockchain address",
    "created": 1592627542
  }
]

POST /api/v3.2/user/wallet/address or POST /api/v3.3/user/wallet/address

Creates a wallet address. If the address created has not been used before, a 400 error will return with the existing unused address. To use this API, Wallet permission is required.

Request Parameters

Name Type Required Description
currency String Yes Ex: BTC
network String Yes Ex: BITCOIN

Response Content

Name Type Required Description
address String Yes Blockchain address
created Long Yes Created timestamp

Delete Wallet Address

Request

{
  "currency": "BTC",
  "network": "LIQUID",
  "address": "Blockchain address"
}

DELETE /api/v3.2/user/wallet/address or DELETE /api/v3.3/user/wallet/address

Delete wallet address. If the address has been delete, a 400 error will return. To use this API, Wallet permission is required.

Request Parameters

Name Type Required Description
currency String Yes Ex: BTC
network String Yes Ex: BITCOIN
address String Yes Ex: Blockchain address

Get Wallet Address

Request

{
  "currency": "BTC",
  "network": "LIQUID"
}

Response

[
  {
    "address": "Blockchain address",
    "created": 1592627542
  }
]

GET /api/v3.2/user/wallet/address or GET /api/v3.3/user/wallet/address

Gets a wallet address. To use this API, Wallet permission is required.

Request Parameters

Name Type Required Description
currency String Yes Ex: BTC
network String Yes Ex: BITCOIN

Response Content

Name Type Required Description
address String Yes Blockchain address
created Long Yes Created timestamp

Withdraw Funds

Request

{
  "currency": "BTC-Bitcoin",
  "address": "BTCAddress",
  "tag": "Tag",
  "amount": "0.001"
}

Response

{
  "withdraw_id": "<withdrawal ID>"
}

POST /api/v3.2/user/wallet/withdraw or POST /api/v3.3/user/wallet/withdraw

Performs a wallet withdrawal. To use this API, Withdraw permission is required.

Request Parameters

Name Type Required Description
currency String Yes Currency-Network pair
Currency list can be retrieved from Available currency list for action
Network list can be retrieved from Available network list for currency
address String Yes Blockchain address
tag String Yes Tag, used only by some blockchain (eg. XRP)
amount String Yes Amount to withdraw (Max decimal supported is 8 for all currencies). Will return Invalid withdraw amount (code: 3506) if exceeds
includeWithdrawFee Boolean No If true or the field doesn't exist, the fee is included in amount. Otherwise, the fee is extra added and the deducted amount can be larger than the amount claimed

Response Content

Name Type Required Description
withdraw_id String Yes Internal withdrawal ID. References the orderID field in wallet_history API. As withdrawal will not be processed immediately. User can query the wallet history API to check on the status of the withdrawal

Query available currency list for wallet action

Response

[
  "USD",
  "JPY",
  "GBP",
  "HKD",
  "SGD"
]

GET /api/v3.2/availableCurrencies

Get available currency list for wallet action.

Request Parameters

Name Type Required Description
action enum Yes CONVERT, WITHDRAW, SEND (transfer)

Response Content

Name Type Required Description
$currencyName String Yes Name of currency

Convert funds

Request

{
  "amount": "1",
  "fromAsset": "BTC",
  "toAsset": "USD"
}

Response

{
    "amount": 1.0,
    "settlementAmount": 66680.43282,
    "amountCurrency": "BTC",
    "settlementCurrency": "USD",
    "rate": 66680.43282
}

POST /api/v3.2/user/wallet/convert

Performs a currency conversion from wallet. To use this API, Wallet permission is required. To get supported currency list please check Available currency list for action

Request Parameters

Name Type Required Description
amount String Yes amount of currency to convert
fromAsset String Yes source currency to be converted
toAsset String Yes destination currency

Response Content

Name Type Required Description
amount Float Yes amount of source currency to be converted
settlementAmount Float Yes amount of converted destination currency
amountCurrency String Yes source currency
settlementCurrency String Yes destination currency
rate Float Yes exchange rate

Transfer Funds

Request

{
  "amount": "1.0",
  "asset": "BTC",
  "toUser": "jamesbond",
  "toUserMail": "james.bond@google.com"
}

Response

{
  "amount": "1",
  "asset": "BTC",
  "toUser": "jamesbond",
  "toUserMail": "james.bond@google.com"
}

POST /api/v3.2/user/wallet/transfer or POST /api/v3.3/user/wallet/transfer

Performs a internal currency transfer to other user from wallet. To use this API, Transfer permission is required. To get supported currency list please check Available currency list for action

Request Parameters

Name Type Required Description
amount String Yes amount of currency to transfer
asset String Yes currency to be transferred
toUser String Yes receiver account
toUserMail String Yes receiver email
useNewSymbolNaming Boolean No True if use new futures market name in asset field, default to False

Response Content

Name Type Required Description
amount String Yes amount of currency to transfer
asset String Yes currency to be transferred
toUser String Yes receiver account
toUserMail String Yes receiver email

Subaccount transfer history

Response

{
  "code": 1,
  "msg": "Success",
  "time": 1653964265608,
  "success": true,
  "data": {
    "totalRows": 2,
    "pageSize": 10,
    "currentPage": 1,
    "totalPages": 1,
    "data": [
      {
        "timestamp": 1711707874850,
        "fromUser": "uuooxxsub00002",
        "receiver": "uuooxx",
        "currency": "USDT",
        "amount": 11
      }
    ]
  }
}

POST /api/v3.2/subaccount/wallet/history

Query transfer history for subaccounts

Request Parameters

Name Type Required Description
startTime Long No Starting time in milliseconds (eg. 1624987283000)
endTime Long No Ending time in milliseconds (eg. 1624987283000)
page String Yes Page number to query, default to 1 (1-based)
pageSize String Yes Number of records in a page, default to 10, maximum 50

Response Content

Name Type Required Description
totalRows Integer Yes Total records
pageSize Integer Yes Number of records in a page
currentPage Integer Yes current page number
timestamp Integer Yes Unix timestamp
fromUser String Yes sender account
receiver String Yes receiver account
currency String Yes currency of transferred
amount Integer Yes amount of currency