Overview
Welcome to our V5 API documentation. Okcoin provides REST and WebSocket APIs to suit your trading needs.
The V5 API is only applicable to the Unified account.
V5 API Key Creation
Please refer to my api page regarding V5 API Key creation.
Production Trading Services
The Production Trading URL:
- REST:
https://www.okcoin.com/
- Public WebSocket:
wss://real.okcoin.com:8443/ws/v5/public
- Private WebSocket:
wss://real.okcoin.com:8443/ws/v5/private
Transaction timeouts
Orders may not be processed in time due to network delay or busy Okcoin servers. You can configure the expiry time of the request using expTime
if you want the order request to be discarded after a specific time.
If expTime
is specified in the requests for Place (multiple) orders or Amend (multiple) orders, the request will not be processed if the current system time of the server is after the expTime
.
You should synchronize with our system time. Use Get system time to obtain the current system time.
REST
Set the following parameters in the request header
Parameter | Type | Required | Description |
---|---|---|---|
expTime | String | No | Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085 |
The following endpoints are supported:
Request Example
curl -X 'POST' \
'https://www.okcoin.com/api/v5/trade/order' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'OK-ACCESS-KEY: *****' \
-H 'OK-ACCESS-SIGN: *****'' \
-H 'OK-ACCESS-TIMESTAMP: *****'' \
-H 'OK-ACCESS-PASSPHRASE: *****'' \
-H 'expTime: 1597026383085' \ // request effective deadline
-d '{
"instId": "BTC-USDT",
"tdMode": "cash",
"side": "buy",
"ordType": "limit",
"px": "1000",
"sz": "0.01"
}'
WebSocket
The following parameters are set in the request
Parameter | Type | Required | Description |
---|---|---|---|
expTime | String | No | Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085 |
The following endpoints are supported:
Request Example
{
"id": "1512",
"op": "order",
"expTime":"1597026383085", // request effective deadline
"args": [{
"side": "buy",
"instId": "BTC-USDT",
"tdMode": "isolated",
"ordType": "market",
"sz": "100"
}]
}
REST API
Authentication
Generating an APIKey
Create an APIKey on the website before signing any requests. After creating an APIKey, keep the following information safe:
- APIKey
- SecretKey
- Passphrase
The system returns randomly-generated APIKeys and SecretKeys. You will need to provide the Passphrase to access the API. We store the salted hash of your Passphrase for authentication. We cannot recover the Passphrase if you have lost it. You will need to create a new set of APIKey.
Making Requests
All private REST requests must contain the following headers:
OK-ACCESS-KEY
The APIKey as a String.OK-ACCESS-SIGN
The Base64-encoded signature (see Signing Messages subsection for details).OK-ACCESS-TIMESTAMP
The UTC timestamp of your request .e.g : 2020-12-08T09:08:57.715ZOK-ACCESS-PASSPHRASE
The passphrase you specified when creating the APIKey.
Request bodies should have content type application/json
and be in valid JSON format.
Signature
Signing Messages
The OK-ACCESS-SIGN
header is generated as follows:
- Create a prehash string of timestamp + method + requestPath + body (where + represents String concatenation).
- Prepare the SecretKey.
- Sign the prehash string with the SecretKey using the HMAC SHA256.
- Encode the signature in the Base64 format.
Example: sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(timestamp + 'GET' + '/api/v5/account/balance?ccy=BTC', SecretKey))
The timestamp
value is the same as the OK-ACCESS-TIMESTAMP
header with millisecond ISO format, e.g. 2020-12-08T09:08:57.715Z
.
The request method should be in UPPERCASE: e.g. GET
and POST
.
The requestPath
is the path of requesting an endpoint.
Example: /api/v5/account/balance
The body
refers to the String of the request body. It can be omitted if there is no request body (frequently the case for GET
requests).
Example: {"instId":"BTC-USDT","lever":"5","mgnMode":"isolated"}
The SecretKey is generated when you create an APIKey.
Example: 22582BD0CFF14C41EDBF1AB98506286D
Trade
All Trade
API endpoints require authentication.
Place order
You can place an order only if you have sufficient funds.
Rate Limit: 60 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/order
Request Example
place order for SPOT
POST /api/v5/trade/order
body
{
"instId":"BTC-USD",
"tdMode":"cash",
"clOrdId":"b15",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
tdMode | String | Yes | Trade mode Margin mode cross isolated Non-Margin mode cash |
clOrdId | String | No | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
tag | String | No | Order tag A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 16 characters. |
side | String | Yes | Order side, buy sell |
ordType | String | Yes | Order typemarket : Market orderlimit : Limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
sz | String | Yes | Quantity to buy or sell |
px | String | Conditional | Order price. Only applicable to limit ,post_only ,fok ,ioc order. |
tgtCcy | String | No | Whether the target currency uses the quote or base currency.base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
banAmend | Boolean | No | Whether to disallow the system from amending the size of the SPOT Market Order. Valid options: true or false . The default value is false .If true , system will not amend and reject the market order if user does not have sufficient funds. Only applicable to SPOT Market Orders |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"clOrdId": "oktswap6",
"ordId": "312269865356374016",
"tag": "",
"sCode": "0",
"sMsg": ""
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
tag | String | Order tag |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Place multiple orders
Place orders in batches. Maximum 20 orders can be placed per request. Request parameters should be passed in the form of an array.
Rate Limit: 300 orders per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/batch-orders
Request Example
batch place order for SPOT
POST /api/v5/trade/batch-orders
body
[
{
"instId":"BTC-USD",
"tdMode":"cash",
"clOrdId":"b15",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
},
{
"instId":"BTC-USD",
"tdMode":"cash",
"clOrdId":"b15",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
}
]
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
tdMode | String | Yes | Trade mode Non-Margin mode cash |
clOrdId | String | No | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
tag | String | No | Order tag A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 16 characters. |
side | String | Yes | Order side buy sell |
ordType | String | Yes | Order typemarket : Market orderlimit : Limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
sz | String | Yes | Quantity to buy or sell |
px | String | Conditional | Order price. Only applicable to limit ,post_only ,fok ,ioc order. |
tgtCcy | String | No | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
banAmend | Boolean | No | Whether to disallow the system from amending the size of the SPOT Market Order. Valid options: true or false . The default value is false .If true , system will not amend and reject the market order if user does not have sufficient funds. Only applicable to SPOT Market Orders |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"tag":"",
"sCode":"0",
"sMsg":""
},
{
"clOrdId":"oktswap7",
"ordId":"12344",
"tag":"",
"sCode":"0",
"sMsg":""
},
.......
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
tag | String | Order tag |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Cancel order
Cancel an incomplete order.
Rate Limit: 60 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/cancel-order
Request Example
POST /api/v5/trade/cancel-order
body
{
"ordId":"2510789768709120",
"instId":"BTC-USD"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
ordId | String | Conditional | Order ID Either ordId or clOrdId is required. If both are passed, ordId will be used. |
clOrdId | String | Conditional | Client Order ID as assigned by the client |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"sCode":"0",
"sMsg":""
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Cancel multiple orders
Cancel incomplete orders in batches. Maximum 20 orders can be canceled per request. Request parameters should be passed in the form of an array.
Rate Limit: 300 orders per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/cancel-batch-orders
Request Example
POST /api/v5/trade/cancel-batch-orders
body
[
{
"instId":"BTC-USD",
"ordId":"12312"
},
{
"instId":"BTC-USD",
"ordId":"1212"
}
]
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
ordId | String | Conditional | Order ID Either ordId or clOrdId is required. If both are passed, ordId will be used. |
clOrdId | String | Conditional | Client Order ID as assigned by the client |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"sCode":"0",
"sMsg":""
},
{
"clOrdId":"oktswap7",
"ordId":"12344",
"sCode":"0",
"sMsg":""
},
.......
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Amend order
Amend an incomplete order.
Rate Limit: 60 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/amend-order
Request Example
POST /api/v5/trade/amend-order
body
{
"ordId":"2510789768709120",
"newSz":"2",
"instId":"BTC-USD"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID |
cxlOnFail | Boolean | No | Whether the order needs to be automatically canceled when the order amendment fails Valid options: false or true , the default is false . |
ordId | String | Conditional | Order ID Either ordId or clOrdId is required. If both are passed, ordId will be used. |
clOrdId | String | Conditional | Client Order ID as assigned by the client |
reqId | String | No | Client Request ID as assigned by the client for order amendment A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. The response will include the corresponding reqId to help you identify the request if you provide it in the request. |
newSz | String | Conditional | New quantity after amendment. Either newSz or newPx is required. When amending a partially-filled order, the newSz should include the amount that has been filled. |
newPx | String | Conditional | New price after amendment. |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"",
"ordId":"12344",
"reqId":"b12344",
"sCode":"0",
"sMsg":""
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
reqId | String | Client Request ID as assigned by the client for order amendment. |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Amend multiple orders
Amend incomplete orders in batches. Maximum 20 orders can be amended per request. Request parameters should be passed in the form of an array.
Rate Limit: 300 orders per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/amend-batch-orders
Request Example
POST /api/v5/trade/amend-batch-orders
body
[
{
"ordId":"2510789768709120",
"newSz":"2",
"instId":"BTC-USD"
},
{
"ordId":"2510789768709121",
"newSz":"2",
"instId":"BTC-USD"
}
]
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID |
cxlOnFail | Boolean | No | Whether the order needs to be automatically canceled when the order amendment failsfalse true , the default is false . |
ordId | String | Conditional | Order ID Either ordId or clOrdId is required, if both are passed, ordId will be used. |
clOrdId | String | Conditional | Client Order ID as assigned by the client |
reqId | String | No | Client Request ID as assigned by the client for order amendment A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. The response will include the corresponding reqId to help you identify the request if you provide it in the request. |
newSz | String | Conditional | New quantity after amendment. Either newSz or newPx is required. When amending a partially-filled order, the newSz should include the amount that has been filled. |
newPx | String | Conditional | New price after amendment. |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"clOrdId":"oktswap6",
"ordId":"12345689",
"reqId":"b12344",
"sCode":"0",
"sMsg":""
},
{
"clOrdId":"oktswap7",
"ordId":"12344",
"reqId":"b12344",
"sCode":"0",
"sMsg":""
},
.......
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
reqId | String | Client Request ID as assigned by the client for order amendment. |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Get order details
Retrieve order details.
Rate Limit: 60 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
GET /api/v5/trade/order
Request Example
GET /api/v5/trade/order?ordId=2510789768709120&instId=BTC-USD
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
ordId | String | Conditional | Order ID Either ordId or clOrdId is required, if both are passed, ordId will be used |
clOrdId | String | Conditional | Client Order ID as assigned by the client |
Response Example
{
"code": "0",
"data": [
{
"accFillSz": "1.6342",
"avgPx": "0.9995",
"cTime": "1672814726198",
"category": "normal",
"ccy": "",
"clOrdId": "",
"fee": "-0.00245007435",
"feeCcy": "USD",
"fillPx": "0.9995",
"fillSz": "1.6342",
"fillTime": "1672814726201",
"instId": "USDT-USD",
"instType": "SPOT",
"lever": "",
"ordId": "530758662663180288",
"ordType": "market",
"pnl": "0",
"posSide": "net",
"px": "",
"rebate": "0",
"rebateCcy": "USDT",
"reduceOnly": "false",
"side": "sell",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"source": "",
"state": "filled",
"sz": "1.6342",
"tag": "",
"tdMode": "cash",
"tgtCcy": "base_ccy",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"tradeId": "3225651",
"uTime": "1672814726203"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument typeSPOT |
instId | String | Instrument ID |
tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
ccy | String | Margin currency. Not enabled. Please disregard. |
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
tag | String | Order tag |
px | String | Price |
sz | String | Quantity to buy or sell |
pnl | String | Profit and loss. Not enabled. Please disregard. |
ordType | String | Order typemarket : Market orderlimit : Limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
side | String | Order side |
posSide | String | Position side. Not enabled. Please disregard. |
tdMode | String | Trade mode |
accFillSz | String | Accumulated fill quantity |
fillPx | String | Last filled price. If none is filled, it will return 0 . |
tradeId | String | Last traded ID |
fillSz | String | Last filled quantity |
fillTime | String | Last filled time |
avgPx | String | Average filled price. If none is filled, it will return 0 . |
state | String | State canceled live partially_filled filled |
lever | String | Leverage. Not enabled. Please disregard. |
tpTriggerPx | String | Take-profit trigger price. |
tpTriggerPxType | String | Take-profit trigger price type. last : last price |
tpOrdPx | String | Take-profit order price. |
slTriggerPx | String | Stop-loss trigger price. |
slTriggerPxType | String | Stop-loss trigger price type. last : last price |
slOrdPx | String | Stop-loss order price. |
feeCcy | String | Fee currency |
fee | String | Fee and rebate It is accumulated fee charged by the platform. It is always negative, e.g. -0.01. |
rebateCcy | String | Rebate currency |
source | String | Order source 13 :The generated limit order after the strategy order is triggered |
rebate | String | Rebate amount, only applicable to spot, the reward of placing orders from the platform (rebate) given to user who has reached the specified trading level. If there is no rebate, this field is "". |
category | String | Categorynormal |
uTime | String | Update time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Get order List
Retrieve all incomplete orders under the current account.
Rate Limit: 60 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/trade/orders-pending
Request Example
GET /api/v5/trade/orders-pending?ordType=post_only,fok,ioc&instType=SPOT
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | No | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USD |
ordType | String | No | Order typemarket : Market orderlimit : Limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
state | String | No | Statelive partially_filled |
after | String | No | Pagination of data to return records earlier than the requested ordId |
before | String | No | Pagination of data to return records newer than the requested ordId |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"accFillSz": "0",
"avgPx": "",
"cTime": "1618235248028",
"category": "normal",
"ccy": "",
"clOrdId": "",
"fee": "0",
"feeCcy": "BTC",
"fillPx": "",
"fillSz": "0",
"fillTime": "",
"instId": "BTC-USDT",
"instType": "SPOT",
"lever": "5.6",
"ordId": "301835739059335168",
"ordType": "limit",
"pnl": "0",
"posSide": "net",
"px": "59200",
"rebate": "0",
"rebateCcy": "USDT",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "last",
"state": "live",
"sz": "1",
"tag": "",
"tgtCcy": "",
"tdMode": "cross",
"source":"",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "last",
"tradeId": "",
"uTime": "1618235248028"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
ccy | String | Margin currency. Not enabled. Please disregard. |
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
tag | String | Order tag |
px | String | Price |
sz | String | Quantity to buy or sell |
pnl | String | Profit and loss. Not enabled. Please disregard. |
ordType | String | Order typemarket : Market orderlimit : Limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
side | String | Order side |
posSide | String | Position side. Not enabled. Please disregard. |
tdMode | String | Trade mode |
accFillSz | String | Accumulated fill quantity |
fillPx | String | Last filled price |
tradeId | String | Last trade ID |
fillSz | String | Last filled quantity |
fillTime | String | Last filled time |
avgPx | String | Average filled price. If none is filled, it will return 0 . |
state | String | Statelive partially_filled |
lever | String | Leverage. Not enabled. Please disregard. |
tpTriggerPx | String | Take-profit trigger price. |
tpTriggerPxType | String | Take-profit trigger price type. last : last price |
tpOrdPx | String | Take-profit order price. |
slTriggerPx | String | Stop-loss trigger price. |
slTriggerPxType | String | Stop-loss trigger price type. last : last price |
slOrdPx | String | Stop-loss order price. |
feeCcy | String | Fee currency |
fee | String | Fee and rebate For spot, it is accumulated fee charged by the platform. It is always negative, e.g. -0.01. |
rebateCcy | String | Rebate currency |
source | String | Order source 13 :The generated limit order after the strategy order is triggered |
rebate | String | Rebate amount, only applicable to spot, the reward of placing orders from the platform (rebate) given to user who has reached the specified trading level. If there is no rebate, this field is "". |
category | String | Category normal |
uTime | String | Update time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Get order history (last 7 days)
Retrieve the completed order data for the last 7 days, and the incomplete orders that have been canceled are only reserved for 2 hours.
Rate Limit: 40 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/trade/orders-history
Request Example
GET /api/v5/trade/orders-history?ordType=post_only,fok,ioc&instType=SPOT
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | yes | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USD |
ordType | String | No | Order typemarket : market orderlimit : limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
state | String | No | Statecanceled filled |
after | String | No | Pagination of data to return records earlier than the requested ordId |
before | String | No | Pagination of data to return records newer than the requested ordId |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"instType": "SPOT",
"instId": "BTC-USD",
"ccy": "",
"ordId": "312269865356374016",
"clOrdId": "b1",
"tag": "",
"px": "999",
"sz": "3",
"ordType": "limit",
"side": "buy",
"posSide": "net",
"tdMode": "cash",
"accFillSz": "0",
"fillPx": "0",
"tradeId": "0",
"fillSz": "0",
"fillTime": "0",
"state": "filled",
"avgPx": "0",
"lever": "",
"tpTriggerPx": "",
"tpTriggerPxType": "last",
"tpOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "last",
"slOrdPx": "",
"feeCcy": "",
"fee": "",
"rebateCcy": "",
"source":"",
"rebate": "",
"tgtCcy":"",
"pnl": "",
"category": "",
"uTime": "1597026383085",
"cTime": "1597026383085"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
ccy | String | Margin currency. Not enabled. Please disregard. |
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
tag | String | Order tag |
px | String | Price |
sz | String | Quantity to buy or sell |
ordType | String | Order typemarket : market orderlimit : limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
side | String | Order side |
posSide | String | Position side. Not enabled. Please disregard. |
tdMode | String | Trade mode |
accFillSz | String | Accumulated fill quantity |
fillPx | String | Last filled price. If none is filled, it will return 0 . |
tradeId | String | Last trade ID |
fillSz | String | Last filled quantity |
fillTime | String | Last filled time |
avgPx | String | Average filled price. If none is filled, it will return 0 . |
state | String | State canceled filled |
lever | String | Leverage. Not enabled. Please disregard. |
tpTriggerPx | String | Take-profit trigger price. |
tpTriggerPxType | String | Take-profit trigger price type. last : last price |
tpOrdPx | String | Take-profit order price. |
slTriggerPx | String | Stop-loss trigger price. |
slTriggerPxType | String | Stop-loss trigger price type. last : last price |
slOrdPx | String | Stop-loss order price. |
feeCcy | String | Fee currency |
fee | String | Fee and rebate For spot, it is accumulated fee charged by the platform. It is always negative, e.g. -0.01. |
rebateCcy | String | Rebate currency |
source | String | Order source 13 :The generated limit order after the strategy order is triggered |
rebate | String | Rebate amount, only applicable to spot, the reward of placing orders from the platform (rebate) given to user who has reached the specified trading level. If there is no rebate, this field is "". |
pnl | String | Profit and loss. Not enabled. Please disregard. |
category | String | Category normal |
uTime | String | Update time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Get order history (last 3 months)
Retrieve the completed order data of the last 3 months.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/trade/orders-history-archive
Request Example
GET /api/v5/trade/orders-history-archive?ordType=post_only,fok,ioc&instType=SPOT
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | yes | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USD |
ordType | String | No | Order typemarket : Market orderlimit : Limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
state | String | No | Statecanceled filled |
after | String | No | Pagination of data to return records earlier than the requested ordId |
before | String | No | Pagination of data to return records newer than the requested ordId |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"data": [
{
"accFillSz": "1.6342",
"avgPx": "0.9995",
"cTime": "1672814726198",
"category": "normal",
"ccy": "",
"clOrdId": "",
"fee": "-0.00245007435",
"feeCcy": "USD",
"fillPx": "0.9995",
"fillSz": "1.6342",
"fillTime": "1672814726201",
"instId": "USDT-USD",
"instType": "SPOT",
"lever": "",
"ordId": "530758662663180288",
"ordType": "market",
"pnl": "0",
"posSide": "",
"px": "",
"rebate": "0",
"rebateCcy": "USDT",
"reduceOnly": "false",
"side": "sell",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"source": "",
"state": "filled",
"sz": "1.6342",
"tag": "",
"tdMode": "cash",
"tgtCcy": "base_ccy",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"tradeId": "3225651",
"uTime": "1672814726859"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
ccy | String | Margin currency. Not enabled. Please disregard. |
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
tag | String | Order tag |
px | String | Price |
sz | String | Quantity to buy or sell |
ordType | String | Order typemarket : Market orderlimit : Limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
side | String | Order side |
posSide | String | Position side. Not enabled. Please disregard. |
tdMode | String | Trade mode |
accFillSz | String | Accumulated fill quantity |
fillPx | String | Last filled price. If none is filled, it will return 0 . |
tradeId | String | Last trade ID |
fillSz | String | Last filled quantity |
fillTime | String | Last filled time |
avgPx | String | Average filled price. If none is filled, it will returns 0 . |
state | String | State canceled filled |
lever | String | Leverage. Not enabled. Please disregard. |
tpTriggerPx | String | Take-profit trigger price. |
tpTriggerPxType | String | Take-profit trigger price type. last : last price |
tpOrdPx | String | Take-profit order price. |
slTriggerPx | String | Stop-loss trigger price. |
slTriggerPxType | String | Stop-loss trigger price type. last : last price |
slOrdPx | String | Stop-loss order price. |
feeCcy | String | Fee currency |
fee | String | Fee and rebate For spot, it is accumulated fee charged by the platform. It is always negative, e.g. -0.01. |
source | String | Order source 13 :The generated limit order after the strategy order is triggered |
rebateCcy | String | Rebate currency |
rebate | String | Rebate amount, only applicable to spot, the reward of placing orders from the platform (rebate) given to user who has reached the specified trading level. If there is no rebate, this field is "". |
pnl | String | Profit and loss. Not enabled. Please disregard. |
category | String | Category normal |
uTime | String | Update time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Get transaction details (last 3 days)
Retrieve recently-filled transaction details in the last 3 day.
Rate Limit: 60 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/trade/fills
Request Example
GET /api/v5/trade/fills
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | No | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USD |
ordId | String | No | Order ID |
after | String | No | Pagination of data to return records earlier than the requested billId |
before | String | No | Pagination of data to return records newer than the requested billId |
begin | String | No | Filter with a begin timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
end | String | No | Filter with an end timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"instType": "SPOT",
"instId": "BTC-USD",
"tradeId": "123",
"ordId": "312269865356374016",
"clOrdId": "b16",
"billId": "1111",
"tag": "",
"fillPx": "999",
"fillSz": "3",
"side": "buy",
"posSide": "net",
"execType": "M",
"feeCcy": "",
"fee": "",
"ts": "1597026383085"
},
{
"instType": "SPOT",
"instId": "BTC-USD",
"tradeId": "123",
"ordId": "312269865356374016",
"clOrdId": "b16",
"billId": "1111",
"tag": "",
"fillPx": "999",
"fillSz": "3",
"side": "buy",
"posSide": "net",
"execType": "M",
"feeCcy": "",
"fee": "",
"ts": "1597026383085"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
tradeId | String | Last trade ID |
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
billId | String | Bill ID |
tag | String | Order tag |
fillPx | String | Last filled price |
fillSz | String | Last filled quantity |
side | String | Order side, buy sell |
posSide | String | Position side. Not enabled. Please disregard. |
execType | String | Liquidity taker or maker, T : taker M : maker |
feeCcy | String | Fee currency |
fee | String | Fee |
ts | String | Data generation time, Unix timestamp format in milliseconds, e.g. 1597026383085 . |
Get transaction details (last 3 months)
Retrieve recently-filled transaction details in the last 3 months.
Rate Limit: 10 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/trade/fills-history
Request Example
GET /api/v5/trade/fills-history
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | YES | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USD |
ordId | String | No | Order ID |
after | String | No | Pagination of data to return records earlier than the requested billId |
before | String | No | Pagination of data to return records newer than the requested billId |
begin | String | No | Filter with a begin timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
end | String | No | Filter with an end timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"instType": "SPOT",
"instId": "BTC-USD",
"tradeId": "123",
"ordId": "312269865356374016",
"clOrdId": "b16",
"billId": "1111",
"tag": "",
"fillPx": "999",
"fillSz": "3",
"side": "buy",
"posSide": "net",
"execType": "M",
"feeCcy": "",
"fee": "",
"ts": "1597026383085"
},
{
"instType": "SPOT",
"instId": "BTC-USD",
"tradeId": "123",
"ordId": "312269865356374016",
"clOrdId": "b16",
"billId": "1111",
"tag": "",
"fillPx": "999",
"fillSz": "3",
"side": "buy",
"posSide": "net",
"execType": "M",
"feeCcy": "",
"fee": "",
"ts": "1597026383085"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
tradeId | String | Last trade ID |
ordId | String | Order ID |
clOrdId | String | Client Order ID as assigned by the client |
billId | String | Bill ID |
tag | String | Order tag |
fillPx | String | Last filled price |
fillSz | String | Last filled quantity |
side | String | Order side, buy sell |
posSide | String | Position side. Not enabled. Please disregard. |
execType | String | Liquidity taker or maker, T : taker M : maker |
feeCcy | String | Fee currency |
fee | String | Fee |
ts | String | Data generation time, Unix timestamp format in milliseconds, e.g. 1597026383085 . |
Place algo order
The algo order includes trigger
order, oco
order, conditional
order,iceberg
order, twap
order and trailing order.
Rate Limit: 20 requests per 2 seconds
Derivatives rate limit rule: UserID + (instrumentType + underlying)
Spot & Margin rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/order-algo
Request Example
POST /api/v5/trade/order-algo
body
{
"instId":"BTC-USDT",
"tdMode":"cash",
"side":"buy",
"ordType":"conditional",
"sz":"2",
"tpTriggerPx":"15",
"tpOrdPx":"18"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
tdMode | String | Yes | Trade mode Non-Margin mode cash |
side | String | Yes | Order side, buy sell |
ordType | String | Yes | Order type conditional : One-way stop order oco : One-cancels-the-other ordertrigger : Trigger ordermove_order_stop : Trailing ordericeberg : Iceberg ordertwap : TWAP order |
sz | String | Yes | Quantity to buy or sell |
tag | String | No | Order tag A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 16 characters. |
tgtCcy | String | No | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT traded with Market buy conditional orderDefault is quote_ccy for buy, base_ccy for sell |
clOrdId | String | No | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
Stop Order
Parameter | Type | Required | Description |
---|---|---|---|
tpTriggerPx | String | No | Take-profit trigger price If you fill in this parameter, you should fill in the take-profit order price as well. |
tpTriggerPxType | String | No | Take-profit trigger price typelast : last priceThe Default is last |
tpOrdPx | String | No | Take-profit order price If you fill in this parameter, you should fill in the take-profit trigger price as well. If the price is -1, take-profit will be executed at the market price. |
slTriggerPx | String | No | Stop-loss trigger price If you fill in this parameter, you should fill in the stop-loss order price. |
slTriggerPxType | String | No | Stop-loss trigger price typelast : last priceThe Default is last |
slOrdPx | String | No | Stop-loss order price If you fill in this parameter, you should fill in the stop-loss trigger price. If the price is -1, stop-loss will be executed at the market price. |
Trigger Order
Parameter | Type | Required | Description |
---|---|---|---|
triggerPx | String | Yes | Trigger price |
orderPx | String | Yes | Order Price If the price is -1 , the order will be executed at the market price. |
triggerPxType | String | No | Trigger price typelast : last priceThe Default is last |
Trailing Stop Order
Parameter | Type | Required | Description |
---|---|---|---|
callbackRatio | String | Conditional | Callback price ratio , e.g. 0.01 Either callbackRatio or callbackSpread is allowed to be passed. |
callbackSpread | String | Conditional | Callback price variance |
activePx | String | No | Active price |
Iceberg Order
Parameter | Type | Required | Description |
---|---|---|---|
pxVar | String | Conditional | Price ratio Either pxVar or pxSpread is allowed to be passed. |
pxSpread | String | Conditional | Price variance |
szLimit | String | Yes | Average amount |
pxLimit | String | Yes | Price Limit |
TWAP Order
Parameter | Type | Required | Description |
---|---|---|---|
pxVar | String | Conditional | Price ratio Either pxVar or pxSpread is allowed to be passed. |
pxSpread | String | Conditional | Price variance |
szLimit | String | Yes | Average amount |
pxLimit | String | Yes | Price Limit |
timeInterval | String | Yes | Time interval |
Learn more about Iceberg Order & TWAP Order
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"algoId": "12345689",
"clOrdId": "",
"sCode": "0",
"sMsg": ""
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
algoId | String | Algo ID |
clOrdId | String | Client Order ID as assigned by the client |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Cancel algo order
Cancel unfilled algo orders (not including Iceberg order, TWAP order, Trailing Stop order). A maximum of 10 orders can be canceled per request. Request parameters should be passed in the form of an array.
Rate Limit: 20 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/cancel-algos
Request Example
POST /api/v5/trade/cancel-algos
body
[
{
"algoId":"198273485",
"instId":"BTC-USD"
},
{
"algoId":"198273485",
"instId":"BTC-USD"
}
]
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
algoId | String | Yes | Algo ID |
instId | String | Yes | Instrument ID, e.g. BTC-USD |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"algoId":"1234",
"sCode":"0",
"sMsg":""
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
algoId | String | Order ID |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Cancel advance algo order
Cancel unfilled algo orders (including Iceberg order, TWAP order, Trailing Stop order). A maximum of 10 orders can be canceled per request. Request parameters should be passed in the form of an array.
Rate Limit: 20 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
HTTP Request
POST /api/v5/trade/cancel-advance-algos
Request Example
POST /api/v5/trade/cancel-advance-algos
body
[
{
"algoId":"198273485",
"instId":"BTC-USD"
},
{
"algoId":"198273485",
"instId":"BTC-USD"
}
]
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
algoId | String | Yes | Algo ID |
instId | String | Yes | Instrument ID, e.g. BTC-USD |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"algoId":"1234",
"sCode":"0",
"sMsg":""
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
algoId | String | Order ID |
sCode | String | The code of the event execution result, 0 means success. |
sMsg | String | Rejection message if the request is unsuccessful. |
Get algo order list
Retrieve a list of untriggered Algo orders under the current account.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/trade/orders-algo-pending
Request Example
GET /api/v5/trade/orders-algo-pending?ordType=conditional
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ordType | String | Yes | Order type conditional : One-way stop order oco : One-cancels-the-other ordertrigger : Trigger ordermove_order_stop : Trailing ordericeberg : Iceberg ordertwap : TWAP order |
algoId | String | No | Algo ID |
clOrdId | String | No | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
instType | String | No | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USD |
after | String | No | Pagination of data to return records earlier than the requested algoId . |
before | String | No | Pagination of data to return records newer than the requested algoId . |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"data": [
{
"activePx": "",
"actualPx": "",
"actualSide": "",
"actualSz": "0",
"algoId": "492453578716610560",
"cTime": "1663682082511",
"callbackRatio": "",
"callbackSpread": "",
"ccy": "",
"clOrdId": "hahawang",
"instId": "BTC-USD",
"instType": "SPOT",
"lever": "",
"moveTriggerPx": "",
"ordId": "0",
"ordPx": "",
"ordType": "conditional",
"posSide": "net",
"pxLimit": "",
"pxSpread": "",
"pxVar": "",
"side": "buy",
"slOrdPx": "-1",
"slTriggerPx": "22000",
"slTriggerPxType": "last",
"state": "live",
"sz": "10",
"szLimit": "",
"tag": "",
"tdMode": "cash",
"tgtCcy": "",
"timeInterval": "",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"triggerPx": "",
"triggerPxType": "",
"triggerTime": ""
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
ccy | String | Margin currency. Not enabled. Please disregard. |
ordId | String | Order ID |
algoId | String | Algo ID |
clOrdId | String | Client Order ID as assigned by the client |
sz | String | Quantity to buy or sell |
ordType | String | Order type |
side | String | Order side |
posSide | String | Position side. Not enabled. Please disregard. |
tdMode | String | Trade mode |
tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT traded with Market order |
state | String | State,live pause partially_effective |
lever | String | Leverage. Not enabled. Please disregard. |
tpTriggerPx | String | Take-profit trigger price |
tpTriggerPxType | String | Take-profit trigger price type. last : last price |
tpOrdPx | String | Take-profit order price |
slTriggerPx | String | Stop-loss trigger price |
slTriggerPxType | String | Stop-loss trigger price type. last : last price |
slOrdPx | String | Stop-loss order price |
triggerPx | String | Trigger price |
triggerPxType | String | Trigger price type. last : last price |
ordPx | String | Order price |
actualSz | String | Actual order quantity |
tag | String | Order tag |
actualPx | String | Actual order price |
actualSide | String | Actual trigger sidetp : take profit sl : stop loss |
triggerTime | String | Trigger time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
pxVar | String | Price ratio Only applicable to iceberg order or twap order |
pxSpread | String | Price variance Only applicable to iceberg order or twap order |
szLimit | String | Average amount Only applicable to iceberg order or twap order |
pxLimit | String | Price Limit Only applicable to iceberg order or twap order |
timeInterval | String | Time interval Only applicable to twap order |
callbackRatio | String | Callback price ratio Only applicable to move_order_stop order |
callbackSpread | String | Callback price variance Only applicable to move_order_stop order |
activePx | String | Active price Only applicable to move_order_stop order |
moveTriggerPx | String | Trigger price Only applicable to move_order_stop order |
cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Get algo order history
Retrieve a list of all algo orders under the current account in the last 3 months.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/trade/orders-algo-history
Request Example
GET /api/v5/trade/orders-algo-history?state=effective&ordType=conditional
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ordType | String | Yes | Order type conditional : One-way stop order oco : One-cancels-the-other ordertrigger : Trigger ordermove_order_stop : Trailing ordericeberg : Iceberg ordertwap : TWAP order |
state | String | Conditional | Stateeffective canceled order_failed Either state or algoId is requied |
algoId | String | Conditional | Algo ID Either state or algoId is required. |
instType | String | No | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USD |
after | String | No | Pagination of data to return records earlier than the requested algoId |
before | String | No | Pagination of data to return records new than the requested algoId |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"instType":"SPOT",
"instId":"BTC-USD",
"ordId":"123445",
"ccy":"",
"clOrdId":"",
"algoId":"1234",
"sz":"999",
"ordType":"oco",
"side":"buy",
"posSide":"net",
"tdMode":"cash",
"tgtCcy": "",
"state":"effective",
"lever":"",
"tpTriggerPx":"",
"tpTriggerPxType":"",
"tpOrdPx":"",
"slTriggerPx":"",
"slTriggerPxType":"",
"triggerPx":"99",
"triggerPxType":"last",
"ordPx":"12",
"actualSz":"",
"actualPx":"",
"actualSide":"",
"pxVar":"",
"pxSpread":"",
"pxLimit":"",
"szLimit":"",
"tag": "adadadadad",
"timeInterval":"",
"callbackRatio":"",
"callbackSpread":"",
"activePx":"",
"moveTriggerPx":"",
"triggerTime":"1597026383085",
"cTime":"1597026383000"
},
{
"instType":"SPOT",
"instId":"BTC-USD",
"ordId":"123445",
"ccy":"",
"clOrdId":"",
"algoId":"1234",
"sz":"999",
"ordType":"oco",
"side":"buy",
"posSide":"net",
"tdMode":"cash",
"tgtCcy": "",
"state":"effective",
"lever":"",
"tpTriggerPx":"",
"tpTriggerPxType":"",
"tpOrdPx":"",
"slTriggerPx":"",
"slTriggerPxType":"",
"triggerPx":"99",
"triggerPxType":"last",
"ordPx":"12",
"actualSz":"",
"actualPx":"",
"actualSide":"",
"pxVar":"",
"pxSpread":"",
"pxLimit":"",
"szLimit":"",
"tag": "adadadadad",
"timeInterval":"",
"callbackRatio":"",
"callbackSpread":"",
"activePx":"",
"moveTriggerPx":"",
"triggerTime":"1597026383085",
"cTime":"1597026383000"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
ccy | String | Margin currency. Not enabled. Please disregard. |
ordId | String | Order ID |
algoId | String | Algo ID |
clOrdId | String | Client Order ID as assigned by the client |
sz | String | Quantity to buy or sell |
ordType | String | Order type |
side | String | Order side |
posSide | String | Position side. Not enabled. Please disregard. |
tdMode | String | Trade mode |
tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
state | String | State effective canceled order_failed |
lever | String | Leverage. Not enabled. Please disregard. |
tpTriggerPx | String | Take-profit trigger price. |
tpTriggerPxType | String | Take-profit trigger price type. last : last price |
tpOrdPx | String | Take-profit order price. |
slTriggerPx | String | Stop-loss trigger price. |
slTriggerPxType | String | Stop-loss trigger price type. last : last price |
slOrdPx | String | Stop-loss order price. |
triggerPx | String | trigger price. |
triggerPxType | String | trigger price type. last : last price |
ordPx | String | Order price |
actualSz | String | Actual order quantity |
actualPx | String | Actual order price |
tag | String | Order tag |
actualSide | String | Actual trigger side, tp : take profit sl : stop loss |
triggerTime | String | Trigger time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
pxVar | String | Price ratio Only applicable to iceberg order or twap order |
pxSpread | String | Price variance Only applicable to iceberg order or twap order |
szLimit | String | Average amount Only applicable to iceberg order or twap order |
pxLimit | String | Price Limit Only applicable to iceberg order or twap order |
timeInterval | String | Time interval Only applicable to twap order |
callbackRatio | String | Callback price ratio Only applicable to move_order_stop order |
callbackSpread | String | Callback price variance Only applicable to move_order_stop order |
activePx | String | Active price Only applicable to move_order_stop order |
moveTriggerPx | String | Trigger price Only applicable to move_order_stop order |
cTime | String | Creation time Unix timestamp format in milliseconds, e.g. 1597026383085 |
Funding
The API endpoints of Funding
require authentication.
Get currencies
Retrieve a list of all currencies.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/currencies
Request Example
GET /api/v5/asset/currencies
Request Parameters
Parameters | Types | Required | Description |
---|---|---|---|
ccy | String | No | Single currency or multiple currencies (no more than 20) separated with comma, e.g. BTC or BTC,ETH . |
Response Example
{
"code": "0",
"data": [
{
"canDep": true,
"canInternal": false,
"canWd": true,
"ccy": "EUR",
"chain": "EUR-fiat",
"depQuotaFixed": "",
"depQuoteDailyLayer2": "",
"logoLink": "https://static.okcoin.com/cdn/assets/imgs/218/3CE0A0023386E9EA.png",
"mainNet": true,
"maxFee": "0",
"maxWd": "1586886",
"minDep": "0.00000001",
"minDepArrivalConfirm": "0",
"minFee": "0",
"minWd": "0",
"minWdUnlockConfirm": "0",
"name": "Euro",
"needTag": false,
"usedDepQuotaFixed": "",
"usedWdQuota": "0",
"wdQuota": "1000000",
"wdTickSz": "4"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ccy | String | Currency, e.g. BTC |
name | String | Chinese name of currency |
logoLink | String | Logo link of currency |
chain | String | Chain name, e.g. USDT-ERC20 , USDT-TRC20 , USDT-Omni |
canDep | Boolean | Availability to deposit from chain.false : not available true : available |
canWd | Boolean | Availability to withdraw to chain.false : not available true : available |
canInternal | Boolean | Availability to internal transfer.false : not available true : available |
minDep | String | Minimum deposit amount of the currency in a single transaction |
minWd | String | Minimum withdrawal amount of the currency in a single transaction |
maxWd | String | Maximum amount of currency withdrawal in a single transaction |
wdTickSz | String | Withdrawal precision, indicating the number of digits after the decimal point |
wdQuota | String | Withdrawal limit in the past 24 hours, unit in USD |
usedWdQuota | String | Amount of currency withdrawal used in the past 24 hours, unit in USD |
minFee | String | Minimum withdrawal fee |
maxFee | String | Maximum withdrawal fee |
mainNet | Boolean | If current chain is main net then return true , otherwise return false |
needTag | Boolean | Whether tag/memo information is required for withdrawal |
minDepArrivalConfirm | String | Minimum number of blockchain confirmations to acknowledge fund deposit. Account is credited after that but the deposit cannot be withdrawn |
minWdUnlockConfirm | String | Minimum number of blockchain confirmations required for withdrawal of a deposit |
depQuotaFixed | String | Fixed deposit limit, unit in BTC Return empty string if there is no deposit limit |
usedDepQuotaFixed | String | Used amount of fixed deposit quota, unit in BTC Return empty string if there is no deposit limit |
Get balance
Retrieve the funding account balances of all the assets and the amount that is available or on hold.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/balances
Request Example
GET /api/v5/asset/balances
Request Parameters
Parameters | Types | Required | Description |
---|---|---|---|
ccy | String | No | Single currency or multiple currencies (no more than 20) separated with comma, e.g. BTC or BTC,ETH . |
Response Example
{
"code": "0",
"msg": "",
"data": [{
"availBal": "37.11827078",
"bal": "37.11827078",
"ccy": "ETH",
"frozenBal": "0"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ccy | String | Currency |
bal | String | Balance |
frozenBal | String | Frozen balance |
availBal | String | Available balance |
Get account asset valuation
View account asset valuation
Rate Limit: 1 request 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/asset-valuation
Request Example
GET /api/v5/asset/asset-valuation
Request Parameters
Parameters | Types | Required | Description |
---|---|---|---|
ccy | String | No | Asset valuation calculation unit BTC USD, CNY, JP, KRW, RUB, EUR VND, IDR, INR, PHP, THB, TRY AUD, SGD, ARS, SAR, AED, IQD The default is the valuation in BTC. |
Response Example
{
"code": "0",
"data": [
{
"details": {
"classic": "124.6",
"earn": "1122.73",
"funding": "0.09",
"trading": "2544.28"
},
"totalBal": "3790.09",
"ts": "1637566660769"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
totalBal | String | Valuation of total account assets |
ts | String | Unix timestamp format in milliseconds, e.g.1597026383085 |
details | Array | Asset valuation details for each account |
> funding | String | Funding account |
> trading | String | Unified account |
> classic | String | Classic account |
> earn | String | Earn account |
Funds transfer
Only API keys with Trade
privilege can call this endpoint.
This endpoint supports the transfer of funds between your funding account and trading account, and from the master account to sub-accounts.
Rate Limit: 1 request per second
Rate limit rule: UserID + Currency
HTTP Request
POST /api/v5/asset/transfer
Request Example
Transfer 1.5 USD from funding account to Trading account when current account is master-account
POST /api/v5/asset/transfer
body
{
"ccy":"USD",
"amt":"1.5",
"from":"6",
"to":"18"
}
Transfer 1.5 USD from funding account to subAccount when current account is master-account
POST /api/v5/asset/transfer
body
{
"ccy":"USD",
"type":"1",
"amt":"1.5",
"from":"6",
"to":"6",
"subAcct":"mini"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | Yes | Currency, e.g. USD |
amt | String | Yes | Amount to be transferred |
from | String | Yes | The remitting account1 : Classic account 6 : Funding account, 18 : Unified account |
to | String | Yes | The beneficiary account1 : Classic account 6 : Funding account, 18 : Unified account |
subAcct | String | Conditional | Name of the sub-account When type is 1 or 2, sub-account is required. |
type | String | No | Transfer type0 : transfer within account1 : master account to sub-account (Only applicable to APIKey from master account)2 : sub-account to master account (Only applicable to APIKey from master account)3 : sub-account to master account (Only applicable to APIKey from sub-account)The default is 0 . |
clientId | String | No | Client-supplied ID A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"transId": "754147",
"ccy": "USD",
"clientId": "",
"from": "6",
"amt": "0.1",
"to": "18"
}
]
}
Response Parameters
Response Example
Parameter | Type | Description |
---|---|---|
transId | String | Transfer ID |
clientId | String | Client-supplied ID |
ccy | String | Currency |
from | String | The remitting account |
amt | String | Transfer amount |
to | String | The beneficiary account |
Get funds transfer state
Retrieve the transfer state data of the last 2 weeks.
Rate Limit: 1 request per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/transfer-state
Request Example
GET /api/v5/asset/transfer-state?transId=1&type=1
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
transId | String | Conditional | Transfer ID Either transId or clientId is required. If both are passed, transId will be used. |
clientId | String | Conditional | Client-supplied ID A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
type | String | No | Transfer type0 : transfer within account1 : master account to sub-account (Only applicable to APIKey from master account)2 : sub-account to master account (Only applicable to APIKey from master account)3 : sub-account to master account (Only applicable to APIKey from sub-account)The default is 0 |
Response Example
{
"code": "0",
"data": [
{
"amt": "1.5",
"ccy": "USDT",
"clientId": "",
"from": "18",
"instId": "", //deprecated
"state": "success",
"subAcct": "test",
"to": "6",
"toInstId": "", //deprecated
"transId": "1",
"type": "1"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
transId | String | Transfer ID |
clientId | String | Client-supplied ID |
ccy | String | Currency, e.g. USDT |
amt | String | Amount to be transferred |
type | String | Transfer type0 : transfer within account1 : master account to sub-account (Only applicable to APIKey from master account)2 : sub-account to master account (Only applicable to APIKey from master account)3 : sub-account to master account (Only applicable to APIKey from sub-account) |
from | String | The remitting account6 : Funding account 18 : Unified account |
to | String | The beneficiary account6 : Funding account 18 : Unified account |
subAcct | String | Name of the sub-account |
instId | String | deprecated |
toInstId | String | deprecated |
state | String | Transfer statesuccess , pending , failed |
Asset bills details
Query the billing record. You can get the latest 1 month historical data.
Rate Limit: 6 Requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/bills
Request Example
GET /api/v5/asset/bills
GET /api/v5/asset/bills?type=1
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | No | Currency |
type | String | No | Bill type1 : Deposit2 : Withdrawal13 : Canceled withdrawal20 : Transfer to sub account21 : Transfer from sub account22 : Transfer out from sub to master account23 : Transfer in from master to sub account37 : Transfer to spot38 : Transfer from spot |
clientId | String | No | Client-supplied ID for transfer or withdrawal A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
after | String | No | Pagination of data to return records earlier than the requested ts , Unix timestamp format in milliseconds, e.g. 1597026383085 |
before | String | No | Pagination of data to return records newer than the requested ts , Unix timestamp format in milliseconds, e.g. 1597026383085 |
limit | String | No | Number of results per request. The maximum is 100 . The default is 100 . |
Response Example
{
"code": "0",
"msg": "",
"data": [{
"billId": "12344",
"ccy": "BTC",
"clientId": "",
"balChg": "2",
"bal": "12",
"type": "1",
"ts": "1597026383085"
}]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
billId | String | Bill ID |
ccy | String | Account balance currency |
clientId | String | Client-supplied ID for transfer or withdrawal |
balChg | String | Change in balance at the account level |
bal | String | Balance at the account level |
type | String | Bill type |
ts | String | Creation time, Unix timestamp format in milliseconds, e.g.1597026383085 |
Lightning deposits
Users can create up to 10,000 different invoices within 24 hours.
Rate Limit: 2 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/deposit-lightning
Request Example
GET /api/v5/asset/deposit-lightning?ccy=BTC&amt=0.01
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | Yes | Token symbol. Currently only BTC is supported. |
amt | String | Yes | Deposit amount between 0.000001 - 0.1 |
to | String | No | Receiving account 6 : Funding account 18 : Unified account If empty, will default to funding account. |
Response Example
{
"code": "0",
"data": [
{
"cTime": "1631171307612",
"invoice": "lnbc100u1psnnvhtpp5yq2x3q5hhrzsuxpwx7ptphwzc4k4wk0j3stp0099968m44cyjg9sdqqcqzpgxqzjcsp5hzzdszuv6yv6yw5svctl8kc8uv6y77szv5kma2kuculj86tk3yys9qyyssqd8urqgcensh9l4zwlwr3lxlcdqrlflvvlwldutm6ljx486h7lylqmd06kky6scas7warx69sregzrx20ffmsr4sp865x3wasrjd8ttgqrlx3tr"
}
],
"msg": ""
}
Response Example
Parameter | Type | Description |
---|---|---|
invoice | String | Invoice text |
cTime | String | Invoice creation time |
Get deposit address
Retrieve the deposit addresses of currencies, including previously-used addresses.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/deposit-address
Request Example
GET /api/v5/asset/deposit-address?ccy=BTC
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | Yes | Currency, e.g. BTC |
Response Example
{
"code": "0",
"data": [
{
"chain": "BTC-Bitcoin",
"ctAddr": "",
"ccy": "BTC",
"to": "6",
"addr": "39XNxK1Ryqgg3Bsyn6HzoqV4Xji25pNkv6",
"selected": true
},
{
"chain": "BTC-OKC",
"ctAddr": "",
"ccy": "BTC",
"to": "6",
"addr": "0x66d0edc2e63b6b992381ee668fbcb01f20ae0428",
"selected": true
},
{
"chain": "BTC-ERC20",
"ctAddr": "5807cf",
"ccy": "BTC",
"to": "6",
"addr": "0x66d0edc2e63b6b992381ee668fbcb01f20ae0428",
"selected": true
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
addr | String | Deposit address |
tag | String | Deposit tag (This will not be returned if the currency does not require a tag for deposit) |
memo | String | Deposit memo (This will not be returned if the currency does not require a payment_id for deposit) |
pmtId | String | Deposit payment ID (This will not be returned if the currency does not require a payment_id for deposit) |
addrEx | Object |
Deposit address attachment (This will not be returned if the currency does not require this) e.g. TONCOIN attached tag name is comment , the return will be {'comment':'123456'} |
ccy | String | Currency, e.g. BTC |
chain | String | Chain name, e.g. USDT-ERC20 , USDT-TRC20 , USDT-Omni |
to | String | The beneficiary account 6 : Funding account 18 : Trading account |
selected | Boolean | Return true if the current deposit address is selected by the website page |
ctAddr | String | Last 6 digits of contract address |
Get deposit history
Retrieve the deposit records according to the currency, deposit status, and time range in reverse chronological order. The 100 most recent records are returned by default.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/deposit-history
Request Example
GET /api/v5/asset/deposit-history
Query deposit history from 2022-06-01 to 2022-07-01
GET /api/v5/asset/deposit-history?ccy=BTC&after=1654041600000&before=1656633600000
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | No | Currency, e.g. BTC |
depId | String | No | Deposit ID |
txId | String | No | Hash record of the deposit |
type | String | No | Deposit Type3 : internal transfer4 : deposit from chain |
state | String | No | Status of deposit 0 : waiting for confirmation1 : deposit credited 2 : deposit successful 8 : pending due to temporary deposit suspension on this crypto currency12 : account or deposit is frozen13 : sub-account deposit interception |
after | String | No | Pagination of data to return records earlier than the requested ts, Unix timestamp format in milliseconds, e.g. 1654041600000 |
before | String | No | Pagination of data to return records newer than the requested ts, Unix timestamp format in milliseconds, e.g. 1656633600000 |
limit | string | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"actualDepBlkConfirm": "17",
"amt": "135.705808",
"ccy": "USDT",
"chain": "USDT-TRC20",
"depId": "34579090",
"from": "",
"state": "2",
"to": "TN4hxxxxxxxxxxxizqs",
"ts": "1655251200000",
"txId": "16f36383292f451xxxxxxxxxxxxxxx584f3391642d988f97"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ccy | String | Currency |
chain | String | Chain name |
amt | String | Deposit amount |
from | String | Only the internal Okcoin account is returned, not the address on the blockchain. |
to | String | Deposit address |
txId | String | Hash record of the deposit |
ts | String | Time that the deposit is credited, Unix timestamp format in milliseconds, e.g. 1655251200000 |
state | String | Status of deposit 0 : waiting for confirmation1 : deposit credited 2 : deposit successful 8 : pending due to temporary deposit suspension on this crypto currency12 : account or deposit is frozen13 : sub-account deposit interception |
depId | String | Deposit ID |
actualDepBlkConfirm | String | Actual amount of blockchain confirm in a single deposit |
Withdrawal
Withdrawal of tokens. Sub-account does not support withdrawal.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
POST /api/v5/asset/withdrawal
Request Example
POST /api/v5/asset/withdrawal
body
{
"amt":"1",
"fee":"0.0005",
"dest":"4",
"ccy":"BTC",
"chain":"BTC-Bitcoin",
"toAddr":"17DKe3kkkkiiiiTvAKKi2vMPbm1Bz3CMKw"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | Yes | Currency, e.g. USD |
amt | String | Yes | Withdrawal amount |
dest | String | Yes | Withdrawal method3 : internal 4 : on chain |
toAddr | String | Yes | If your dest is 4 ,toAddr should be a trusted crypto currency address. Some crypto currency addresses are formatted as 'address:tag' , e.g. 'ARDOR-7JF3-8F2E-QUWZ-CAN7F:123456' If your dest is 3 ,toAddr should be a recipient address which can be email, phone or login account name. |
fee | String | Yes | Transaction fee |
chain | String | Conditional | Chain name There are multiple chains under some currencies, such as USDT has USDT-ERC20 , USDT-TRC20 , and USDT-Omni .If the parameter is not filled in, the default will be the main chain. |
clientId | String | No | Client-supplied ID A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
Response Example
{
"code": "0",
"msg": "",
"data": [{
"amt": "0.1",
"wdId": "67485",
"ccy": "BTC",
"clientId": "",
"chain": "BTC-Bitcoin"
}]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ccy | String | Currency |
chain | String | Chain name, e.g. USDT-ERC20 , USDT-TRC20 , USDT-Omni |
amt | String | Withdrawal amount |
wdId | String | Withdrawal ID |
clientId | String | Client-supplied ID A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
Lightning withdrawals
The maximum withdrawal amount is 0.1 BTC per request, and 1 BTC in 24 hours. The minimum withdrawal amount is approximately 0.000001 BTC. Sub-account does not support withdrawal.
Rate Limit: 2 requests per second
Rate limit rule: UserID
HTTP Request
POST /api/v5/asset/withdrawal-lightning
Request Example
POST /api/v5/asset/withdrawal-lightning
body
{
"ccy":"BTC",
"invoice":"lnbc100u1psnnvhtpp5yq2x3q5hhrzsuxpwx7ptphwzc4k4wk0j3stp0099968m44cyjg9sdqqcqzpgxqzjcsp5hz"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | Yes | Token symbol. Currently only BTC is supported. |
invoice | String | Yes | Invoice text |
memo | String | No | Lightning withdrawal memo |
Response Example
{
"code": "0",
"msg": "",
"data": [{
"wdId": "121212",
"cTime": "1597026383085"
}]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
wdId | String | Withdrawal ID |
cTime | String | Withdrawal ID creation time |
Cancel withdrawal
You can cancel normal withdrawal requests, but you cannot cancel withdrawal requests on Lightning.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
POST /api/v5/asset/cancel-withdrawal
Request Example
POST /api/v5/asset/cancel-withdrawal
body {
"wdId":"1123456"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
wdId | String | Yes | Withdrawal ID |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"wdId": "1123456"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
wdId | String | Withdrawal ID |
Get withdrawal history
Retrieve the withdrawal records according to the currency, withdrawal status, and time range in reverse chronological order. The 100 most recent records are returned by default.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/asset/withdrawal-history
Request Example
GET /api/v5/asset/withdrawal-history
Query withdrawal history from 2022-06-01 to 2022-07-01
GET /api/v5/asset/withdrawal-history?ccy=BTC&after=1654041600000&before=1656633600000
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | No | Currency, e.g. BTC |
wdId | String | No | Withdrawal ID |
clientId | String | No | Client-supplied ID A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
txId | String | No | Hash record of the deposit |
type | String | No | Withdrawal type 3 : internal transfer4 : withdrawal to chain |
state | String | No | Status of withdrawal-3 : pending cancel -2 : canceled -1 : failed 0 : pending 1 :sending 2 : sent 3 : awaiting email verification 4 : awaiting manual verification 5 : awaiting identity verification |
after | String | No | Pagination of data to return records earlier than the requested ts, Unix timestamp format in milliseconds, e.g. 1654041600000 |
before | String | No | Pagination of data to return records newer than the requested ts, Unix timestamp format in milliseconds, e.g. 1656633600000 |
limit | String | No | Number of results per request. The maximum is 100 ; The default is 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"chain": "ETH-Ethereum",
"fee": "0.007",
"ccy": "ETH",
"clientId": "",
"amt": "0.029809",
"txId": "0x35c******b360a174d",
"from": "156****359",
"to": "0xa30d1fab********7CF18C7B6C579",
"state": "2",
"ts": "1655251200000",
"wdId": "15447421"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ccy | String | Currency |
chain | String | Chain name, e.g. USDT-ERC20 , USDT-TRC20 , USDT-Omni |
amt | String | Token amount |
ts | String | Time the withdrawal request was submitted, Unix timestamp format in milliseconds, e.g. 1655251200000 . |
from | String | Remitting address User account ID will be shown for Okcoin addresses. |
to | String | Receiving address |
tag | String | Some currencies require a tag for withdrawals. This is not returned if not required. |
pmtId | String | Some currencies require a payment ID for withdrawals. This is not returned if not required. |
memo | String | Some currencies require this parameter for withdrawals. This is not returned if not required. |
addrEx | Object | Withdrawal address attachment (This will not be returned if the currency does not require this) e.g. TONCOIN attached tag name is comment, the return will be {'comment':'123456'} |
txId | String | Hash record of the withdrawal. This parameter will returned "" for internal transfers. |
fee | String | Withdrawal fee |
state | String | Status of withdrawal -3 : pending cancel -2 : canceled -1 : failed 0 : pending 1 :sending 2 : sent 3 : awaiting email verification 4 : awaiting manual verification 5 : awaiting identity verification |
wdId | String | Withdrawal ID |
clientId | String | Client-supplied ID |
Account
The API endpoints of Account
require authentication.
Get balance
Retrieve a list of assets (with non-zero balance), remaining balance, and available amount in the trading account.
Rate Limit: 10 requests per 2 seconds
Rate limit rule: UserID
HTTP Requests
GET /api/v5/account/balance
Request Example
Get the balance of all assets in the account
GET /api/v5/account/balance
Get the balance of BTC and ETH assets in the account
GET /api/v5/account/balance?ccy=BTC,ETH
Request Parameters
Parameters | Types | Required | Description |
---|---|---|---|
ccy | String | No | Single currency or multiple currencies (no more than 20) separated with comma, e.g. BTC or BTC,ETH . |
Response Example
{
"code": "0",
"data": [
{
"adjEq": "",
"details": [
{
"availBal": "1.63427",
"availEq": "",
"cashBal": "1.63427",
"ccy": "USD",
"crossLiab": "",
"disEq": "0",
"eq": "1.63427",
"eqUsd": "1.63427",
"fixedBal": "0",
"frozenBal": "0",
"interest": "",
"isoEq": "",
"isoLiab": "",
"isoUpl": "",
"liab": "",
"maxLoan": "",
"mgnRatio": "",
"notionalLever": "",
"ordFrozen": "0",
"spotInUseAmt": "",
"stgyEq": "0",
"twap": "0",
"uTime": "1672814264380",
"upl": "",
"uplLiab": ""
}
],
"imr": "",
"isoEq": "",
"mgnRatio": "",
"mmr": "",
"notionalUsd": "",
"ordFroz": "",
"totalEq": "1.63427",
"uTime": "1672814275772"
}
],
"msg": ""
}
Response Parameters
Parameters | Types | Description |
---|---|---|
uTime | String | Update time of account information, millisecond format of Unix timestamp, e.g. 1597026383085 |
totalEq | String | Total equity in USD |
isoEq | String | Isolated margin equity in USD. Not enabled. Please disregard. |
adjEq | String | Adjusted / Effective equity in USD . Not enabled. Please disregard. |
ordFroz | String | Cross margin frozen for pending orders in USD. Not enabled. Please disregard. |
imr | String | Frozen equity for open positions and pending orders in USD. Not enabled. Please disregard. |
mmr | String | Maintenance margin requirement in USD. Not enabled. Please disregard. |
mgnRatio | String | Margin ratio in USD. Not enabled. Please disregard. |
notionalUsd | String | Notional value of positions in USD . Not enabled. Please disregard. |
details | Array | Detailed asset information in all currencies |
> ccy | String | Currency |
> eq | String | Equity of the currency |
> cashBal | String | Cash balance |
> uTime | String | Update time of currency balance information, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> isoEq | String | Isolated margin equity of the currency. Not enabled. Please disregard. |
> availEq | String | Available equity of the currency . Not enabled. Please disregard. |
> disEq | String | Discount equity of the currency in USD. |
> availBal | String | Available balance of the currency |
> frozenBal | String | Frozen balance of the currency |
> ordFrozen | String | Margin frozen for open orders |
> liab | String | Liabilities of the currency. Not enabled. Please disregard. |
> upl | String | Unrealized profit and loss of the currency. Not enabled. Please disregard. |
> uplLiab | String | Liabilities due to Unrealized loss of the currency. Not enabled. Please disregard. |
> crossLiab | String | Cross liabilities of the currency. Not enabled. Please disregard. |
> isoLiab | String | Isolated liabilities of the currency. Not enabled. Please disregard. |
> mgnRatio | String | Margin ratio of the currency. Not enabled. Please disregard. |
> interest | String | Interest of the currency. Not enabled. Please disregard. |
> twap | String | Risk indicator of auto liability repayment. Not enabled. Please disregard. |
> maxLoan | String | Max loan of the currency. Not enabled. Please disregard. |
> eqUsd | String | Equity in USD of the currency |
> notionalLever | String | Leverage of the currency. Not enabled. Please disregard. |
> stgyEq | String | Strategy equity |
> isoUpl | String | Isolated unrealized profit and loss of the currency. Not enabled. Please disregard. |
> spotInUseAmt | String | Spot in use amount. Not enabled. Please disregard. |
Distribution of applicable fields are as follows:
Parameters | Simple |
---|---|
uTime | Yes |
totalEq | Yes |
isoEq | |
adjEq | |
ordFroz | |
imr | |
mmr | |
mgnRatio | |
notionalUsd | |
details | |
> ccy | Yes |
> eq | Yes |
> cashBal | Yes |
> uTime | Yes |
> isoEq | |
> availEq | |
> disEq | Yes |
> availBal | Yes |
> frozenBal | Yes |
> ordFrozen | Yes |
> liab | |
> upl | |
> uplLiab | |
> crossLiab | |
> isoLiab | |
> mgnRatio | |
> interest | |
> twap | |
> maxLoan | |
> eqUsd | Yes |
> notionalLever | |
> stgyEq | Yes |
> isoUpl |
Get bills details (last 7 days)
Retrieve the bills of the account. The bill refers to all transaction records that result in changing the balance of an account. Pagination is supported, and the response is sorted with the most recent first. This endpoint can retrieve data from the last 7 days.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/account/bills
Request Example
GET /api/v5/account/bills
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | No | Instrument typeSPOT |
ccy | String | No | Bill currency |
type | String | No | Bill type1 : Transfer 2 : Trade |
subType | String | No | Bill subtype1 : Buy 2 : Sell 11 : Transfer in 12 : Transfer out |
after | String | No | Pagination of data to return records earlier than the requested bill ID. |
before | String | No | Pagination of data to return records newer than the requested bill ID. |
begin | String | No | Filter with a begin timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
end | String | No | Filter with an end timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
limit | String | No | Number of results per request. The maximum is 100 . The default is 100 . |
Response Example
{
"code": "0",
"data": [
{
"bal": "1.63093282565",
"balChg": "1.63093282565",
"billId": "530758662684151809",
"ccy": "USD",
"execType": "T",
"fee": "-0.00245007435",
"from": "",
"instId": "USDT-USD",
"instType": "SPOT",
"mgnMode": "cash",
"notes": "",
"ordId": "530758662663180288",
"pnl": "0",
"posBal": "0",
"posBalChg": "0",
"subType": "1",
"sz": "1.6333829",
"to": "",
"ts": "1672814726203",
"type": "2"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
billId | String | Bill ID |
type | String | Bill type |
subType | String | Bill subtype |
ts | String | Creation time, Unix timestamp format in milliseconds, e.g.1597026383085 |
balChg | String | Change in balance amount at the account level |
posBalChg | String | Change in balance amount at the position level. Not enabled. Please disregard. |
bal | String | Balance at the account level |
posBal | String | Balance at the position level. Not enabled. Please disregard. |
sz | String | Quantity |
ccy | String | Account balance currency |
pnl | String | Profit and loss. Not enabled. Please disregard. |
fee | String | Fee Negative number represents the user transaction fee charged by the platform. Positive number represents rebate. |
mgnMode | String | Margin mode. Not enabled. Please disregard. |
instId | String | Instrument ID, e.g. BTC-USD |
ordId | String | Order ID When bill type is not trade , the field returns "" |
execType | String | Liquidity taker or maker, T :taker M :maker |
from | String | The remitting account6 : FUNDING 18 : Trading accountOnly applicable to transfer . When bill type is not transfer , the field returns "". |
to | String | The beneficiary account6 : FUNDING 18 : Trading accountOnly applicable to transfer . When bill type is not transfer , the field returns "". |
notes | String | Notes Only applicable to transfer . When bill type is not transfer , the field returns "". |
Get bills details (last 3 months)
Retrieve the account’s bills. The bill refers to all transaction records that result in changing the balance of an account. Pagination is supported, and the response is sorted with most recent first. This endpoint can retrieve data from the last 3 months.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/account/bills-archive
Request Example
GET /api/v5/account/bills-archive
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | No | Instrument typeSPOT |
ccy | String | No | Bill currency |
type | String | No | Bill type1 : Transfer 2 : Trade |
subType | String | No | Bill subtype1 : Buy 2 : Sell 11 : Transfer in 12 : Transfer out |
after | String | No | Pagination of data to return records earlier than the requested bill ID. |
before | String | No | Pagination of data to return records newer than the requested bill ID. |
begin | String | No | Filter with a begin timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
end | String | No | Filter with an end timestamp. Unix timestamp format in milliseconds, e.g. 1597026383085 |
limit | String | No | Number of results per request. The maximum is 100 . The default is 100 . |
Response Example
{
"code": "0",
"data": [
{
"bal": "1.63093282565",
"balChg": "1.63093282565",
"billId": "530758662684151809",
"ccy": "USD",
"execType": "T",
"fee": "-0.00245007435",
"from": "",
"instId": "USDT-USD",
"instType": "SPOT",
"mgnMode": "cash",
"notes": "",
"ordId": "530758662663180288",
"pnl": "0",
"posBal": "0",
"posBalChg": "0",
"subType": "1",
"sz": "1.6333829",
"to": "",
"ts": "1672814726203",
"type": "2"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
billId | String | Bill ID |
type | String | Bill type |
subType | String | Bill subtype |
ts | String | Creation time, Unix timestamp format in milliseconds, e.g.1597026383085 |
balChg | String | Change in balance amount at the account level |
posBalChg | String | Change in balance amount at the position level. Not enabled. Please disregard. |
bal | String | Balance at the account level |
posBal | String | Balance at the position level. Not enabled. Please disregard. |
sz | String | Quantity |
ccy | String | Account balance currency |
pnl | String | Profit and loss. Not enabled. Please disregard. |
fee | String | Fee Negative number represents the user transaction fee charged by the platform. Positive number represents rebate. |
mgnMode | String | Margin mode. Not enabled. Please disregard. |
instId | String | Instrument ID, e.g. BTC-USD |
ordId | String | Order ID When bill type is not trade , the field returns "" |
execType | String | Liquidity taker or maker, T :taker M :maker |
from | String | The remitting account6 : FUNDING 18 : Trading accountOnly applicable to transfer . When bill type is not transfer , the field returns "". |
to | String | The beneficiary account6 : FUNDING 18 : Trading accountOnly applicable to transfer . When bill type is not transfer , the field returns "". |
notes | String | Notes Only applicable to transfer . When bill type is not transfer , the field returns "". |
Get account configuration
Retrieve current account configuration.
Rate Limit: 5 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/account/config
Request Example
GET /api/v5/account/config
Request Parameters
none
Response Example
{
"code": "0",
"data": [
{
"acctLv": "1",
"autoLoan": false,
"ctIsoMode": "automatic",
"greeksType": "PA",
"level": "Lv1",
"levelTmp": "",
"mgnIsoMode": "automatic",
"posMode": "net_mode",
"spotOffsetType": "",
"uid": "1300041872592896"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
uid | String | Account ID |
acctLv | String | Account level 1 : Simple |
posMode | String | Position mode. Not enabled. Please disregard. |
autoLoan | Boolean | Whether to borrow coins automatically. Not enabled. Please disregard. |
greeksType | String | Current display type of Greeks. Not enabled. Please disregard. |
level | String | The user level of the current real trading volume on the platform, e.g Lv1 |
levelTmp | String | Temporary experience user level of special users. Not enabled. Please disregard. |
ctIsoMode | String | Contract isolated margin trading settings. Not enabled. Please disregard. |
mgnIsoMode | String | Margin isolated margin trading settings. Not enabled. Please disregard. |
spotOffsetType | String | Risk offset type. Not enabled. Please disregard. |
The following table is the relation between the level value and tier displayed on the website
level value | Tier displayed on the website |
---|---|
Lv1~Lv5 | P0 |
VIP1 | P1 |
VIP2 | P2 |
VIP3 | P3 |
VIP4 | P4 |
VIP5 | P5 |
VIP6 | P6 |
VIP7 | P7 |
VIP8 | P8 |
VIP9 | P9 |
VIP10 | P10 |
Get maximum buy/sell amount or open amount
Rate Limit: 20 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/account/max-size
Request Example
GET /api/v5/account/max-size?instId=BTC-USD&tdMode=cash
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Single instrument or multiple instruments (no more than 5) separated with comma, e.g. BTC-USD |
tdMode | String | Yes | Trade mode cash |
px | String | No | Price When the price is not specified, it will be calculated according to the last traded price. The parameter will be ignored when multiple instruments are specified. |
Response Example
{
"code": "0",
"data": [
{
"ccy": "",
"instId": "BTC-USD",
"maxBuy": "0.0000965776484683",
"maxSell": "0"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instId | String | Instrument ID |
ccy | String | Currency used for margin. Not enabled. Please disregard. |
maxBuy | String | SPOT : The maximum quantity in base currency that you can buy |
maxSell | String | SPOT : The maximum quantity in quote currency that you can sell |
Get maximum available tradable amount
Rate Limit: 20 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/account/max-avail-size
Request Example
GET /api/v5/account/max-avail-size?instId=BTC-USD&tdMode=cash
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Single instrument or multiple instruments (no more than 5) separated with comma, e.g. BTC-USDT,ETH-USDT |
tdMode | String | Yes | Trade mode cash |
Response Example
{
"code": "0",
"data": [
{
"availBuy": "1.63093282565",
"availSell": "0",
"instId": "BTC-USD"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instId | String | Instrument ID |
availBuy | String | Amount available to buy |
availSell | String | Amount available to sell |
Get fee rates
Rate Limit: 5 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/account/trade-fee
Request Example
GET /api/v5/account/trade-fee?instType=SPOT
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | Yes | Instrument typeSPOT |
instId | String | No | Instrument ID, e.g. BTC-USDT |
Response Example
{
"code": "0",
"data": [
{
"category": "1",
"delivery": "",
"exercise": "",
"instType": "SPOT",
"level": "Lv1",
"maker": "-0.001",
"makerU": "",
"makerUSDC": "-0.001",
"taker": "-0.0015",
"takerU": "",
"takerUSDC": "-0.0015",
"ts": "1672825392244"
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
level | String | Fee rate Level |
taker | String | Taker fee rate |
maker | String | Maker fee rate |
takerU | String | Taker fee rate of USDT-margined contracts. Not enabled. Please disregard. |
makerU | String | Maker fee rate of USDT-margined contracts. Not enabled. Please disregard. |
delivery | String | Delivery fee rate. Not enabled. Please disregard. |
exercise | String | Fee rate for exercising the option. Not enabled. Please disregard. |
instType | String | Instrument type |
takerUSDC | String | Taker fee rate for the USDC trading pairs. Not enabled. Please disregard. |
makerUSDC | String | Maker fee rate for the USDC trading pairs. Not enabled. Please disregard. |
ts | String | Data return time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
category | String | Currency category. Note: this parameter is already deprecated |
The following table is the relation between the level value and tier displayed on the website
level value | Tier displayed on the website |
---|---|
Lv1~Lv5 | P0 |
VIP1 | P1 |
VIP2 | P2 |
VIP3 | P3 |
VIP4 | P4 |
VIP5 | P5 |
VIP6 | P6 |
VIP7 | P7 |
VIP8 | P8 |
VIP9 | P9 |
VIP10 | P10 |
Get maximum withdrawals
Retrieve the maximum transferable amount from trading account to funding account. If no currency is specified, the transferable amount of all owned currencies will be returned.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
GET /api/v5/account/max-withdrawal
Request Example
GET /api/v5/account/max-withdrawal
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | No | Single currency or multiple currencies (no more than 20) separated with comma, e.g. BTC or BTC,ETH . |
Response Example
{
"code": "0",
"data": [
{
"ccy": "USD",
"maxWd": "1.63093282565",
"maxWdEx": "",
"spotOffsetMaxWd": "",
"spotOffsetMaxWdEx": ""
},
{
"ccy": "USDT",
"maxWd": "0.00007",
"maxWdEx": "",
"spotOffsetMaxWd": "",
"spotOffsetMaxWdEx": ""
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ccy | String | Currency |
maxWd | String | Max withdrawal |
maxWdEx | String | Max withdrawal (including borrowed assets under Multi-currency margin ). Not enabled. Please disregard. |
spotOffsetMaxWd | String | Max withdrawal under Spot-Derivatives risk offset mode (excluding borrowed assets under Portfolio margin ). Not enabled. Please disregard. |
spotOffsetMaxWdEx | String | Max withdrawal under Spot-Derivatives risk offset mode (including borrowed assets under Portfolio margin ). Not enabled. Please disregard. |
OTC-Desk RFQ
Available Pairs
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/otc/rfq/instruments
Request Example
GET /api/v5/otc/rfq/instruments
Request Parameters
None
Response Example
{
"code": "0",
"data": [
{
"instruments": [
{
"baseCcy": "BTC",
"baseCcyIcon": "https://static.coinall.ltd/cdn/oksupport/asset/currency/icon/btc.png",
"baseSingleMin": "0.257",
"instId": "BTC-USD",
"quoteCcy": "USD",
"quoteCcyIcon": "https://static.coinall.ltd/cdn/assets/imgs/218/7775D0B35AA6AF73.png",
"quoteSingleMin": "10000"
}
],
"ts": "1623727445510"
}
],
"msg": ""
}
Response Parameters
Parameters | Parameters types | Description |
---|---|---|
ts | String | Data update time Unix timestamp in milliseconds, such as: 1597026383085 |
instruments | Array | List of token pairs for trading |
>instId | String | Trading pair |
>baseCcy | String | Base currency, such as BTC in BTC-USD , BTC in BTC-USDT |
>baseSingleMin | String | Minimium tradable amount for base currency |
>baseCcyIcon | String | Icon link for base currency |
>quoteCcy | String | Quote currency, such as USD in BTC-USD , USDT in BTC-USDT |
>quoteSingleMin | String | Minimium tradable amount for quote currency |
>quoteCcyIcon | String | Icon link for quote currency |
Request Quote
Query current market quotation information
Rate Limit: 3 requests per second
Rate limit rule: UserID
HTTP Request
POST /api/v5/otc/rfq/quote
Request Example
POST /api/v5/otc/rfq/quote
body
{
"baseCcy": "BTC",
"quoteCcy": "USD",
"side": "sell",
"rfqSz": "1000",
"rfqSzCcy": "USD"
}
Request Parameters
Parameters | Parameters types | Required | Description |
---|---|---|---|
baseCcy | String | Yes | Base currency, such as BTC in BTC-USD |
quoteCcy | String | Yes | Quote currency, such as USD in BTC-USD |
side | String | Yes | Side buy:buy sell:sell Buy & sell: two_way From the perspective of a customer, it describes the transaction side of baseCcy |
rfqSz | String | Yes | Amount |
rfqSzCcy | String | Yes | Token |
clQReqId | String | No | Client-defined quote request ID, order id, with only length limitation |
clQReqTs | String | No | Client rfq sending time, Unix timestamp in milliseconds. |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"quoteTs":"1597026383085",
"ttlMs":"1000",
"clQReqId":"6666",
"quoteId":"123133",
"baseCcy":"BTC",
"quoteCcy":"USDT",
"side":"buy",
"origRfqSz":"0.55",
"rfqSz":"0.5",
"rfqSzCcy":"BTC",
"bidPx":"10790",
"bidBaseSz":"0.5",
"bidQuoteSz":"5395",
"askPx":"10800",
"askBaseSz":"54000",
"askQuoteSz":"5"
}
]
}
Response Parameters
Parameters | Parameters types | Description |
---|---|---|
quoteTs | String | Time of quote generation, Unix timestamp in milliseconds |
ttlMs | String | Time to expiry for the quote in milliseconds |
clQReqId | String | Client-defined quote request ID |
quoteId | String | Quote ID, as the input in a transaction request |
baseCcy | String | Base currency, such as BTC in BTC-USDT |
quoteCcy | String | Quote currency, such as USDT in BTC-USDT |
side | String | Side buy:buy sell:sell Buy & sell: two_way |
origRfqSz | String | Original amount |
rfqSz | String | Amount can be quoted |
rfqSzCcy | String | Token can be quoted |
bidPx | String | Bid price |
bidBaseSz | String | The amount of baseCcy that a customer may need to pay. This field is only valid when the quotation request is Sell or TwoWay |
bidQuoteSz | String | The amount of quoteCcy that a customer may obtain. This field is only valid when the quotation request is Sell or TwoWay |
askPx | String | Ask price |
askBaseSz | String | The amount of baseCcy that a customer may obtain. This field is only valid when the quotation request is Buy or TwoWay |
askQuoteSz | String | The amount of quoteCcy that a customer may need to pay. This field is only valid when the quotation request is Buy or TwoWay |
Place Order
Rate Limit: 3 requests per second
Rate limit rule: UserID
HTTP Request
POST /api/v5/otc/rfq/trade
Request Example
POST /api/v5/otc/rfq/trade
body
{
"clTReqId": "5111",
"quoteId": "12638308",
"baseCcy": "BTC",
"quoteCcy": "USD",
"side": "buy",
"Sz": "2",
"szCcy": "BTC"
}
Request Parameters
Parameters | Parameters types | Required | Description |
---|---|---|---|
clTReqId | String | Yes | Client-defined trade request ID |
clTReqTs | String | No | Client rfq sending time, Unix timestamp in milliseconds |
quoteId | String | Yes | Quotation number returned by quotation query. |
baseCcy | String | Yes | Base currency, such as BTC in BTC-USD |
quoteCcy | String | Yes | Quote currency, such as USD in BTC-USD |
side | String | Yes | Side buy:buy sell:sell |
sz | String | Yes | Amount |
szCcy | String | Yes | Token |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"ts":"1597026383085",
"tradeId":"159",
"quoteId":"126383085",
"clTReqId":"5111",
"state":"live",
"instId":"BTC-USDT",
"baseCcy":"BTC",
"quoteCcy":"USDT",
"side":"buy",
"px":"0.55",
"filledBaseSz":"",
"filledTermSz":"1"
}
]
}
Response Parameters
Parameters | Parameters types | Description |
---|---|---|
ts | String | Unix timestamp in milliseconds |
tradeId | String | Transaction ID |
quoteId | String | Quotation ID returned by quotation query |
clTReqId | String | User-defined ID |
state | String | Order status, PendingNew : the transaction has been created FullyFilled : the order is completely filled Rejected : the transaction is rejected |
instId | String | Trading pair |
baseCcy | String | Base currency, such as BTC in BTC-USDT |
quoteCcy | String | Quote currency, such as USDT in BTC-USDT |
side | String | Side buy:buy sell:sell |
px | String | Price |
filledBaseSz | String | Size of order |
filledQuoteSz | String | Size of order |
Order Details
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/otc/rfq/trade
Request Example
GET/api/v5/otc/rfq/trade?tradeId=134
Request Parameters
Parameters | Parameters types | Required | Description |
---|---|---|---|
clTReqId | String | Optional | Client-defined trade request ID |
tradeId | String | Optional | Order ID. One of clTReqId and tradeId must be filled in. If the user passes both values, only the tradeId parameter will be checked. |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"ts":"1597026383085",
"tradeId":"159",
"quoteId":"126383085",
"clTReqId":"5111",
"state":"FullyFilled",
"instId":"BTC-USDT",
"baseCcy":"BTC",
"quoteCcy":"USDT",
"side":"buy",
"px":"0.55",
"filledBaseSz":"",
"filledTermSz":"1"
}
]
}
Response Parameters
Parameters | Parameters types | Description |
---|---|---|
ts | String | Unix timestamp in milliseconds |
tradeId | String | Transaction ID |
quoteId | String | Quotation ID returned by quotation query |
clTReqId | String | User-defined ID |
state | String | Order status, PendingNew : the transaction has been created FullyFilled : the order is completely filled Rejected : the transaction is rejected |
instId | String | Trading pair |
baseCcy | String | Base currency, such as BTC in BTC-USDT |
quoteCcy | String | Quote currency, such as USDT in BTC-USDT |
side | String | Side buy:buy sell:sell |
px | String | Trading price |
filledBaseSz | String | Size of order |
filledQuoteSz | String | Size of order |
Order History
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/otc/rfq/history
Request Example
GET /api/v5/otc/rfq/history
Request Parameters
Parameters | Parameters types | Required | Description |
---|---|---|---|
begin | String | No | Start of trading time, Unix timestamp in milliseconds |
end | String | No | End of trading time, Unix timestamp in milliseconds. |
pageSz | String | No | Returned quantity per page, default 100 |
pageIdx | String | No | Which page does it currently belong to, the default value is 0 |
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"ts":"1597026383085",
"pageIdx":"1",
"totalPageCnt":"160",
"totalRecordCnt":"1590",
"trades":[
{
"ts":"1597026383085",
"tradeTs":"1597026383085",
"tradeId":"13085",
"clTReqId":"",
"instId":"BTC-USDT",
"side":"buy",
"px":"3085",
"baseCcy":"BTC",
"baseSz":"85",
"quoteCcy":"USD",
"quoteSz":"38"
},
{
"ts":"1597026383085",
"tradeTs":"1597026383085",
"tradeId":"13085",
"clTReqId":"",
"instId":"BTC-USDT",
"side":"buy",
"px":"3085",
"baseCcy":"BTC",
"baseSz":"85",
"quoteCcy":"USD",
"quoteSz":"38"
}
]
}
]
}
Response Parameters
Parameters | Parameters types | Description |
---|---|---|
ts | String | Unix timestamp in milliseconds |
pageIdx | String | Which page does it currently belong to, the default value is 0 |
totalPageCnt | String | Pages in total |
totalRecordCnt | String | Items in total |
trades | Array |
Transaction history list |
>ts | String | Record generation time, Unix timestamp in milliseconds |
>tradeTs | String | Transaction ID |
>tradeId | String | Client-defined ID |
>clTReqId | String | Amount can be quoted |
>instId | String | Trading pair |
>side | String | Side buy : buy sell : sell |
>px | String | Price |
>baseCcy | String | Base currency, such as BTC in BTC-USDT |
>baseSz | String | Amount of base currency |
>quoteCcy | String | Quote currency, such as USDT in BTC-USDT |
>quoteSz | String | Amount of quote currency |
Fiat
Start with a whitelisted Prime Trust or Silvergate account linked to an open Okcoin account.
Deposit
Use GET and POST endpoints to make deposits with PrimeX and SEN to OKCoin accounts.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
POST /api/v5/fiat/deposit
Request Example
POST /api/v5/fiat/deposit
body {
"chanId": "3",
"bankAcctNum": "hahawang",
"amt": "10"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
chanId | String | Yes | Channel ID. 9 :PrimeX; 28 :PrimeX US; 21 :PrimeX Europe; 3 :Silvergate SEN; 27 :Silvergate SEN HK; 24 :ACH |
amt | String | Yes | Amount to deposit |
bankAcctNum | String | Yes | The number of the account linked to the channel. Use GET v5/fiat/channel to get the number, or input it manually. |
to | String | No | Amount to deposit. Recharge to the account: funding :Funding Account |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"depId": "1123456",
"cTime": "1637566660769"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
depId | String | The order number of the transaction |
cTime | String | When the request was created |
Cancel deposit
You can cancel a pending deposit request.
Rate Limit: 100 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
POST /api/v5/fiat/cancel-deposit
Request Example
POST /api/v5/fiat/cancel-deposit
body {
"depId": "02007131856581300"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
depId | String | Yes | The order number of the transaction to be canceled |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"depId": "1123456"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
depId | String | The order number of the transaction |
Get deposit history
Deposit history query requests can be filtered by the different elements, such as channels, deposit status, and currencies. Paging is also available during query and is stored in reverse order based on the transaction time, with the latest one at the top.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET api/v5/fiat/deposit-history
Request Example
GET api/v5/fiat/deposit-history?after=1515&chanId=3&status=0
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
chanId | String | No | Channel ID used in the transaction. 9 :PrimeX; 28 :PrimeX US; 21 :PrimeX Europe; 3 :Silvergate SEN; 27 :Silvergate SEN HK; 24 :ACH |
ccy | String | No | What currency the deposit was made in. USD EUR SGD |
state | String | No | Deposit state. -2 :User canceled the order;-1 :Deposit attempt has failed; 0 :Deposit request submitted; 1 :Deposit request is pending; 2 :Deposit has been credited |
depId | String | No | Deposit ID used in the transaction |
after | String | No | If requesting the page content (previous data) prior to this ID, the value given will be the billId of the corresponding interface. |
before | String | No | If requesting the page content (updated data) followed by this ID, the value given will be the billId of the corresponding interfac |
limit | String | No | The maximum number of result sets returned by paginations is 100, if not filled in, 100 will be returned by default. |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"depId": "02007131618204007",
"chanId": "3",
"billId": "1513",
"bankAcctName": "qiang wang",
"bankAcctNum": "hahawang",
"amt": "10",
"state": "0",
"ccy": "USD",
"cTime": "1637566660769",
"uTime": "1637566660770"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
depId | String | Deposit ID used in the transaction |
chanId | String | Channel ID used in the transaction |
billId | String | Ledger ID for pagination |
bankAcctName | String | The account name used in the transaction |
bankAcctNum | String | The account number used in the transaction |
amt | String | Amount deposited |
state | String | Deposit state. -2 :User canceled the order;-1 :Deposit attempt has failed; 0 :Deposit request submitted; 1 :Deposit request is pending; 2 :Deposit has been credited |
ccy | String | What currency the deposit was made in - USD, EUR, SGD |
cTime | String | When the request was created, e.g.1637566660769 |
uTime | String | When the request was last updated, e.g.1637566660770 |
Withdrawal
Use GET and POST endpoints to make deposits with PrimeX and SEN to OKCoin accounts.
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
POST /api/v5/fiat/withdrawal
Request Example
POST /api/v5/fiat/withdrawal
body {
"chanId": "3",
"bankAcctNum": "hahawang",
"amt": "10"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
chanId | String | Yes | Channel ID. 9 :PrimeX; 28 :PrimeX US; 21 :PrimeX Europe; 3 :Silvergate SEN; 27 :Silvergate SEN HK |
amt | String | Yes | Amount to withdraw |
bankAcctNum | String | Yes | The number of the account linked to the channel. Use GET v5/fiat/channel to get the number, or input it manually. |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"depId": "1123456",
"fee": "0",
"cTime": "1637566660769"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
wdId | String | The order number of the transaction |
cTime | String | When the request was created, e.g.1637566660769 |
fee | String | Cost of making the withdrawal |
Cancel withdrawal
You can cancel a pending withdrawal request.
Rate Limit: 100 requests per 2 seconds
Rate limit rule: UserID
HTTP Request
POST /api/v5/fiat/cancel-withdrawal
Request Example
POST /api/v5/fiat/cancel-withdrawal
body {
"wdId": "12007131909122084"
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
wdId | String | Yes | The order number of the transaction |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"wdId": "12007131909122084"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
wdId | String | The order number of the transaction |
Get withdrawal history
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/fiat/withdrawal-history
Request Example
GET /api/v5/fiat/withdrawal-history?before=360&chanId=3
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
chanId | String | No | Channel ID used in the transaction. 9 :PrimeX; 28 :PrimeX US; 21 :PrimeX Europe; 3 :Silvergate SEN; 27 :Silvergate SEN HK |
ccy | String | No | What currency the withdrawal was made in. USD EUR SGD |
state | String | No | Withdrawal state. -2 :User canceled the order;-1 :Withdrawal attempt has failed; 0 :Withdrawal request submitted; 1 :Withdrawal request is pending; 2 :Withdrawal has been credited |
wdId | String | No | Withdrawal request ID. Same as the ID on the withdrawal history page. |
after | String | No | If requesting the page content (previous data) prior to this ID, the value given will be the billId of the corresponding interface. |
before | String | No | If requesting the page content (updated data) followed by this ID, the value given will be the billId of the corresponding interfac |
limit | String | No | The maximum number of result sets returned by paginations is 100, if not filled in, 100 will be returned by default. |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"wdId": "02007131618204007",
"chanId": "3",
"billId": "1513",
"bankAcctName": "qiang wang",
"bankAcctNum": "hahawang",
"amt": "10",
"fee": "0",
"state": "0",
"ccy": "USD",
"cTime": "1637566660769",
"uTime": "1637566660770"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
wdId | String | The order number of the transaction |
chanId | String | Channel ID used in the transaction |
billId | String | Ledger ID for pagination |
bankAcctName | String | The account name used in the transaction |
bankAcctNum | String | The account number used in the transaction |
amt | String | Amount withdrawed |
fee | String | Cost of making the withdrawal |
state | String | Withdrawal state. -2 :User canceled the order;-1 :Withdrawal attempt has failed; 0 :Withdrawal request submitted; 1 :Withdrawal request is pending; 2 :Withdrawal has been credited |
ccy | String | What currency the withdrawal was made in - USD, EUR, SGD |
cTime | String | When the request was created, e.g.1637566660769 |
uTime | String | When the request was last updated, e.g.1637566660770 |
Get channel info
Rate Limit: 6 requests per second
Rate limit rule: UserID
HTTP Request
GET /api/v5/fiat/channel
Request Example
GET /api/v5/fiat/channel
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
chanId | String | No | Channel ID used in the transaction. 9 :PrimeX; 28 :PrimeX US; 21 :PrimeX Europe; 3 :Silvergate SEN; 27 :Silvergate SEN HK; 24 :ACH |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"chanId": "3",
"ccy": "USD",
"depQuota": "999999999",
"minDep": "1",
"wdQuota": "4000000",
"minWd": "1",
"usedWdQuota": "0",
"validWdQuota": "4000000",
"bankAcctInfo": [
{
"bankAcctName": "CASHBACK DEBIT",
"bankAcctNum": "CASHBACK DEBIT-1234",
"instName": "Discover",
"maskAcctNum": "1234"
}
]
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
chanId | String | Channel ID |
ccy | String | Currency type(Selectable fields:USD, EUR, SGD) |
depQuota | String | Daily(in the past 24 hours) max deposit unit |
minDep | String | Minimum deposit unit per transaction |
wdQuota | String | Daily(in the past 24 hours) withdrawal limit |
minWd | String | Minimum withdraw amount per transaction |
usedWdQuota | String | Amount that’s been withdrawn against the daily limit(in the past 24 hours) |
validWdQuota | String | Amount that can be withdrawn in 1 day(in the past 24 hours) |
bankAcctInfo | String | Linked bank accounts list. One payment channel can be linked to multiple bank accounts. |
> bankAcctName | String | bank account name |
> bankAcctNum | String | bank account number |
> instName | String | Institution name |
> maskAcctNum | String | mask account number |
SubAccount
The API endpoints of SubAccount
require authentication.
View sub-account list
Applies to master accounts only
Rate limit:2 requests per 2 seconds
Rate limit rule: UserID
HTTP request
GET /api/v5/users/subaccount/list
Request sample
GET /api/v5/users/subaccount/list
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
enable | String | No | Sub-account status, true : Normal ; false : Frozen |
subAcct | String | No | Sub-account name |
after | String | No | If you query the data prior to the requested creation time ID, the value will be a Unix timestamp in millisecond format. |
before | String | No | If you query the data after the requested creation time ID, the value will be a Unix timestamp in millisecond format. |
limit | String | No | Number of results per request. The maximum is 100. The default is 100. |
Returned results
{
"code":"0",
"msg":"",
"data":[
{
"enable":true,
"subAcct":"test-1",
"type":"1",
"label":"trade futures",
"mobile":"1818181",
"gAuth":true,
"canTransOut": true,
"ts":"1597026383085"
},
{
"enable":false,
"type":"1",
"subAcct":"test-2",
"label":"trade spot",
"mobile":"1818199",
"gAuth":true,
"canTransOut": false,
"ts":"1597026383082"
}
]
}
Response parameters
Parameter name | Type | Description |
---|---|---|
type | String | Sub-account type 1 :Standard sub-account 2 :Custody trading sub-account |
enable | Boolean | Sub-account status true : Normal ; false :Frozen |
subAcct | String | Sub-account name |
label | String | Sub-account note |
mobile | String | Mobile number that linked with the sub-account. |
gAuth | Boolean | If the sub-account switches on the Google Authenticator for login authentication. true : On ; false : Off |
canTransOut | Boolean | Whether the sub-account has the right to transfer out. false : cannot transfer out true : can transfer. Not enabled. Please disregard. |
ts | String | Sub-account creation time, Unix timestamp in millisecond format. e.g. 1597026383085 |
Query the APIKey of a sub-account
Applies to master accounts only
Rate limit:1 request per second
Rate limit rule: UserID
HTTP request
GET /api/v5/users/subaccount/apikey
Request sample
Get /api/v5/users/subaccount/apikey?subAcct=panpanBroker2
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
subAcct | String | Yes | Sub-account name |
apiKey | String | No | API public key |
Returned results
"code":"0",
"msg":"",
"data":[
{
"label":"v5",
"apiKey":"arg13sdfgs",
"perm":"read_only,trade",
"ip":"1.1.1.1,2.2.2.2",
"ts":"1597026383085"
},
{
"label":"v5.1",
"apiKey":"arg13sdfgs",
"perm":"read_only",
"ip":"1.1.1.1,2.2.2.2",
"ts":"1597026383085"
}
]
}
Response parameters
Parameter name | Type | Description |
---|---|---|
label | String | APIKey note |
apiKey | String | API public key |
perm | String | APIKey access read_only:Read only ;trade :Trade |
ip | String | IP address that linked with APIKey |
ts | String | Creation time |
Get sub-account trading balance
Query detailed balance info of Trading Account of a sub-account via the master account (applies to master accounts only)
Rate limit:2 requests per 2 seconds
Rate limit rule: UserID
HTTP request
GET /api/v5/account/subaccount/balances
Request sample
GET /api/v5/account/subaccount/balances?subAcct=test1
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
subAcct | String | Yes | Sub-account name |
Returned result
{
"code": "0",
"data": [
{
"adjEq": "10679688.0460531643092577",
"details": [
{
"availBal": "",
"availEq": "9930359.9998",
"cashBal": "9930359.9998",
"ccy": "USDT",
"crossLiab": "0",
"disEq": "9439737.0772999514",
"eq": "9930359.9998",
"eqUsd": "9933041.196999946",
"frozenBal": "0",
"interest": "0",
"isoEq": "0",
"isoLiab": "0",
"liab": "0",
"maxLoan": "10000",
"mgnRatio": "",
"notionalLever": "",
"ordFrozen": "0",
"twap": "0",
"uTime": "1620722938250",
"upl": "0",
"uplLiab": "0"
},
{
"availBal": "",
"availEq": "33.6799714158199414",
"cashBal": "33.2009985",
"ccy": "BTC",
"crossLiab": "0",
"disEq": "1239950.9687532129092577",
"eq": "33.771820625136023",
"eqUsd": "1239950.9687532129092577",
"frozenBal": "0.0918492093160816",
"interest": "0",
"isoEq": "0",
"isoLiab": "0",
"liab": "0",
"maxLoan": "1453.92289531493594",
"mgnRatio": "",
"notionalLever": "",
"ordFrozen": "0",
"twap": "0",
"uTime": "1620722938250",
"upl": "0.570822125136023",
"uplLiab": "0"
}
],
"imr": "3372.2942371050594217",
"isoEq": "0",
"mgnRatio": "70375.35408747017",
"mmr": "134.8917694842024",
"notionalUsd": "33722.9423710505978888",
"ordFroz": "0",
"totalEq": "11172992.1657531589092577",
"uTime": "1623392334718"
}
],
"msg": ""
}
Response parameters
Parameters | Types | Description |
---|---|---|
uTime | String | The latest time to get account information, millisecond format of Unix timestamp, e.g. 1597026383085 |
totalEq | String | Total equity in USD |
isoEq | String | Isolated margin equity in USD. Not enabled. Please disregard. |
adjEq | String | Adjusted / Effective equity in USD. Not enabled. Please disregard. |
ordFroz | String | Margin frozen for pending cross orders in USD. Not enabled. Please disregard. |
imr | String | Frozen equity for open positions and pending orders in USD. Not enabled. Please disregard. |
mmr | String | Maintenance margin requirement in USD. Not enabled. Please disregard. |
mgnRatio | String | Margin ratio in USD. Not enabled. Please disregard. |
notionalUsd | String | Notional value of positions in USD . Not enabled. Please disregard. |
details | Array | Detailed asset information in all currencies |
> ccy | String | Currency |
> eq | String | Equity of the currency |
> cashBal | String | Cash Balance |
> uTime | String | Update time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> isoEq | String | Isolated margin equity of the currency. Not enabled. Please disregard. |
> availEq | String | Available equity of the currency. Not enabled. Please disregard. |
> disEq | String | Discount equity of the currency in USD |
> availBal | String | Available balance of the currency |
> frozenBal | String | Frozen balance of the currency |
> ordFrozen | String | Margin frozen for open orders |
> liab | String | Liabilities of the currency. Not enabled. Please disregard. |
> upl | String | Unrealized profit and loss of the currency. Not enabled. Please disregard. |
> uplLiab | String | Liabilities due to Unrealized loss of the currency. Not enabled. Please disregard. |
> crossLiab | String | Cross Liabilities of the currency. Not enabled. Please disregard. |
> isoLiab | String | Isolated Liabilities of the currency. Not enabled. Please disregard. |
> mgnRatio | String | Margin ratio of the currency. Not enabled. Please disregard. |
> interest | String | Interest of the currency. Not enabled. Please disregard. |
> twap | String | System's forced repayment(TWAP) indicator. Not enabled. Please disregard. |
> maxLoan | String | Max loan of the currency. Not enabled. Please disregard. |
> eqUsd | String | Equity usd of the currency |
> notionalLever | String | Leverage of the currency. Not enabled. Please disregard. |
Get sub-account funding balance
Query detailed balance info of Funding Account of a sub-account via the master account (applies to master accounts only)
Rate limit:2 requests per 2 seconds
Rate limit rule: UserID
HTTP request
GET /api/v5/asset/subaccount/balances
Request sample
GET/api/v5/asset/subaccount/balances?subAcct=test1
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
subAcct | String | Yes | Sub-account name |
ccy | String | No | Single currency or multiple currencies (no more than 20) separated with comma, e.g. BTC or BTC,ETH . |
Returned result
{
"code": "0",
"msg": "",
"data": [{
"availBal": "37.11827078",
"bal": "37.11827078",
"ccy": "ETH",
"frozenBal": "0"
}
]
}
Response parameters
Parameter | Type | Description |
---|---|---|
ccy | String | Currency |
bal | String | Balance |
frozenBal | String | Frozen balance |
availBal | String | Available balance |
History of sub-account transfer
Applies to master accounts only.
Retrieve the transfer data for the last 3 months.
Rate limit:6 requests per second
Rate limit rule: UserID
HTTP request
GET /api/v5/asset/subaccount/bills
Request sample
GET /api/v5/asset/subaccount/bills
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | No | Currency, such as BTC |
type | String | No | 0 : Transfers from master account to sub-account ;1 : Transfers from sub-account to master account. |
subAcct | String | No | Sub-account name |
after | String | No | If you query the data prior to the requested bill ID, the value will be a Unix timestamp in millisecond format. |
before | String | No | If you query the data after the requested bill ID, the value will be a Unix timestamp in millisecond format. |
limit | String | No | Number of results per request. The maximum is 100. The default is 100. |
Returned results
{
"code": "0",
"msg": "",
"data": [{
"billId": "12344",
"type":"1",
"ccy": "BTC",
"amt":"2",
"subAcct":"test-1",
"ts":"1597026383085"
}]
}
Response parameters
Parameter name | Type | Description |
---|---|---|
billId | String | Bill ID |
ccy | String | Account balance currency |
amt | String | Transfer amount |
type | String | Bill type |
subAcct | String | Sub-account name |
ts | String | Sub-account creation time with Unix timestamp in millisecond format,1597026383085 e.g., 1597026383085 |
Master accounts manage the transfers between sub-accounts
Applies to master accounts only
Rate limit:1 request per second
Rate limit rule: UserID
HTTP request
POST /api/v5/asset/subaccount/transfer
Request sample
POST /api/v5/asset/subaccount/transfer
body
{
"ccy":"USD",
"amt":"1.5",
"from":"6",
"to":"6",
"fromSubAccount":"test-1",
"toSubAccount":"test-2"
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
ccy | String | Yes | Currency |
amt | String | Yes | Transfer amount |
from | String | Yes | 6 :Funding Account 18 :Trading account |
to | String | Yes | 6 :Funding Account 18 :Trading account |
fromSubAccount | String | Yes | Sub-account name of the account that transfers funds out. |
toSubAccount | String | Yes | Sub-account name of the account that transfers funds in. |
Returned results
{
"code":"0",
"msg":"",
"data":[
{
"transId":"12345",
}
]
}
Response parameters
Parameter name | Type | Description |
---|---|---|
transId | String | Transfer ID |
Market data
The API endpoints of Market Data
do not require authentication.
Get tickers
Retrieve the latest price snapshot, best bid/ask price, and trading volume in the last 24 hours.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/tickers
Request Example
GET /api/v5/market/tickers?instType=SPOT
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | Yes | Instrument typeSPOT |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"instType": "SPOT",
"instId": "BTC-USD",
"last": "16848.15",
"lastSz": "0.0005",
"askPx": "16849.01",
"askSz": "0.0401",
"bidPx": "16848.15",
"bidSz": "0.017",
"open24h": "16761.08",
"high24h": "16943.44",
"low24h": "16629.04",
"volCcy24h": "2993092.015",
"vol24h": "178.2431",
"ts": "1672841403093",
"sodUtc0": "16688.74",
"sodUtc8": "16700.35"
},
{
"instType": "SPOT",
"instId": "ETH-USD",
"last": "1252.02",
"lastSz": "0.1727",
"askPx": "1251.95",
"askSz": "0.2296",
"bidPx": "1251.81",
"bidSz": "0.1699",
"open24h": "1217.86",
"high24h": "1260",
"low24h": "1206.08",
"volCcy24h": "4766566.0992",
"vol24h": "3860.2722",
"ts": "1672841403094",
"sodUtc0": "1214.45",
"sodUtc8": "1211.18"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
last | String | Last traded price |
lastSz | String | Last traded size |
askPx | String | Best ask price |
askSz | String | Best ask size |
bidPx | String | Best bid price |
bidSz | String | Best bid size |
open24h | String | Open price in the past 24 hours |
high24h | String | Highest price in the past 24 hours |
low24h | String | Lowest price in the past 24 hours |
volCcy24h | String | 24h trading volume, with a unit of currency .The value is the quantity in quote currency. |
vol24h | String | 24h trading volume, with a unit of contract .The value is the quantity in base currency. |
sodUtc0 | String | Open price in the UTC 0 |
sodUtc8 | String | Open price in the UTC 8 |
ts | String | Ticker data generation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Get ticker
Retrieve the latest price snapshot, best bid/ask price, and trading volume in the last 24 hours.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/ticker
Request Example
GET /api/v5/market/ticker?instId=BTC-USD
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"instType": "SPOT",
"instId": "BTC-USD",
"last": "16838.49",
"lastSz": "0.237",
"askPx": "16836.62",
"askSz": "0.0431",
"bidPx": "16835.97",
"bidSz": "0.2",
"open24h": "16764.37",
"high24h": "16943.44",
"low24h": "16629.04",
"volCcy24h": "2991370.9916",
"vol24h": "178.1375",
"ts": "1672841618814",
"sodUtc0": "16688.74",
"sodUtc8": "16700.35"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID |
last | String | Last traded price |
lastSz | String | Last traded size |
askPx | String | Best ask price |
askSz | String | Best ask size |
bidPx | String | Best bid price |
bidSz | String | Best bid size |
open24h | String | Open price in the past 24 hours |
high24h | String | Highest price in the past 24 hours |
low24h | String | Lowest price in the past 24 hours |
volCcy24h | String | 24h trading volume, with a unit of currency .The value is the quantity in quote currency. |
vol24h | String | 24h trading volume, with a unit of contract .The value is the quantity in base currency. |
sodUtc0 | String | Open price in the UTC 0 |
sodUtc8 | String | Open price in the UTC 8 |
ts | String | Ticker data generation time, Unix timestamp format in milliseconds, e.g. 1597026383085 . |
Get order book
Retrieve order book of the instrument.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/books
Request Example
GET /api/v5/market/books?instId=BTC-USD
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
sz | String | No | Order book depth per side. Maximum 400, e.g. 400 bids + 400 asks Default returns to 1 depth data |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"asks": [
[
"41006.8",
"0.60038921",
"0",
"1"
]
],
"bids": [
[
"41006.3",
"0.30178218",
"0",
"2"
]
],
"ts": "1629966436396"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
asks | Array | Order book on sell side |
bids | Array | Order book on buy side |
ts | String | Order book generation time |
Get candlesticks
Retrieve the candlestick charts. This endpoint can retrieve the latest 1,440 data entries. Charts are returned in groups based on the requested bar.
Rate Limit: 40 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/candles
Request Example
GET /api/v5/market/candles?instId=BTC-USD
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
bar | String | No | Bar size, the default is 1m e.g. [1m/3m/5m/15m/30m/1H/2H/4H] Hong Kong time opening price k-line:[6H/12H/1D/2D/3D/1W/1M/3M] UTC time opening price k-line:[/6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/1Wutc/1Mutc/3Mutc] |
after | String | No | Pagination of data to return records earlier than the requested ts |
before | String | No | Pagination of data to return records newer than the requested ts |
limit | String | No | Number of results per request. The maximum is 300 . The default is 100 . |
Response Example
{
"code":"0",
"msg":"",
"data":[
[
"1597026383085",
"3.721",
"3.743",
"3.677",
"3.708",
"8422410",
"22698348.04828491",
"12698348.04828491",
"0"
],
[
"1597026383085",
"3.731",
"3.799",
"3.494",
"3.72",
"24912403",
"67632347.24399722",
"37632347.24399722",
"1"
]
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ts | String | Opening time of the candlestick, Unix timestamp format in milliseconds, e.g. 1597026383085 |
o | String | Open price |
h | String | highest price |
l | String | Lowest price |
c | String | Close price |
vol | String | Trading volume, the value is the quantity in base currency. |
volCcy | String | Trading volume, the value is the quantity in quote currency. |
volCcyQuote | String | Trading volume, the value is the quantity in quote currency. Not enabled. Please disregard. |
confirm | String | The state of candlesticks.0 represents that it is uncompleted, 1 represents that it is completed. |
Get candlesticks history
Retrieve history candlestick charts from recent years.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/history-candles
Request Example
GET /api/v5/market/history-candles?instId=BTC-USD
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
after | String | No | Pagination of data to return records earlier than the requested ts |
before | String | No | Pagination of data to return records newer than the requested ts |
bar | String | No | Bar size, the default is 1m e.g. [1m/3m/5m/15m/30m/1H/2H/4H] Hong Kong time opening price k-line:[6H/12H/1D/2D/3D/1W/1M/3M] UTC time opening price k-line:[6Hutc/12Hutc/1Dutc/2Dutc/3Dutc/1Wutc/1Mutc/3Mutc] |
limit | String | No | Number of results per request. The maximum is 100 . The default is 100 . |
Response Example
{
"code":"0",
"msg":"",
"data":[
[
"1597026383085",
"3.721",
"3.743",
"3.677",
"3.708",
"8422410",
"22698348.04828491",
"12698348.04828491",
"1"
],
[
"1597026383085",
"3.731",
"3.799",
"3.494",
"3.72",
"24912403",
"67632347.24399722",
"37632347.24399722",
"1"
]
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ts | String | Opening time of the candlestick, Unix timestamp format in milliseconds, e.g. 1597026383085 |
o | String | Open price |
h | String | Highest price |
l | String | Lowest price |
c | String | Close price |
vol | String | Trading volume, the value is the quantity in base currency. |
volCcy | String | Trading volume, the value is the quantity in quote currency. |
volCcyQuote | String | Trading volume, the value is the quantity in quote currency. Not enabled. Please disregard. |
confirm | String | The state of candlesticks.0 represents that it is uncompleted, 1 represents that it is completed. |
Get trades
Retrieve the recent transactions of an instrument.
Rate Limit: 100 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/trades
Request Example
GET /api/v5/market/trades?instId=BTC-USD
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
limit | String | No | Number of results per request. The maximum is 500 ; The default is 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"instId": "BTC-USD",
"side": "sell",
"sz": "0.00001",
"px": "29963.2",
"tradeId": "242720720",
"ts": "1654161646974"
},
{
"instId": "BTC-USD",
"side": "sell",
"sz": "0.00001",
"px": "29964.1",
"tradeId": "242720719",
"ts": "1654161641568"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instId | String | Instrument ID |
tradeId | String | Trade ID |
px | String | Trade price |
sz | String | Trade quantity |
side | String | Trade sidebuy sell |
ts | String | Trade time, Unix timestamp format in milliseconds, e.g. 1597026383085 . |
Get trades history
Retrieve the recent transactions of an instrument from the last 3 months with pagination.
Rate Limit: 10 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/history-trades
Request Example
GET /api/v5/market/history-trades?instId=BTC-USD
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instId | String | Yes | Instrument ID, e.g. BTC-USD |
type | String | No | Pagination Type 1 : tradeId 2 : timestampThe default is 1 |
after | String | No | Pagination of data to return records earlier than the requested tradeId or ts. |
before | String | No | Pagination of data to return records newer than the requested tradeId. Do not support timestamp for pagination |
limit | String | No | Number of results per request. The maximum and default both are 100 |
Response Example
{
"code": "0",
"msg": "",
"data": [
{
"instId": "BTC-USD",
"side": "sell",
"sz": "0.00001",
"px": "29963.2",
"tradeId": "242720720",
"ts": "1654161646974"
},
{
"instId": "BTC-USD",
"side": "sell",
"sz": "0.00001",
"px": "29964.1",
"tradeId": "242720719",
"ts": "1654161641568"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instId | String | Instrument ID |
tradeId | String | Trade ID |
px | String | Trade price |
sz | String | Trade quantity |
side | String | Trade sidebuy sell |
ts | String | Trade time, Unix timestamp format in milliseconds, e.g. 1597026383085 . |
Get 24H total volume
The 24-hour trading volume is calculated on a rolling basis, using USD as the pricing unit.
Rate Limit: 2 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/platform-24-volume
Request Example
GET /api/v5/market/platform-24-volume
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"volCny": "230900886396766",
"volUsd": "34462818865189",
"ts": "1657856040389"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
volUsd | String | 24-hour total trading volume on the platform in "USD" |
volCny | String | 24-hour total trading volume on the platform in "CNY" |
ts | String | Data return time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Get oracle
Get the crypto price of signing using Open Oracle smart contract.
Rate Limit: 1 request per 5 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/open-oracle
Request Example
GET /api/v5/market/open-oracle
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"messages":[
"0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000616d3b1400000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000e70528b800000000000000000000000000000000000000000000000000000000000000006707269636573000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034254430000000000000000000000000000000000000000000000000000000000"
],
"prices":{
"BTC":"62014"
},
"signatures":[
"0xf18330e59eaf42373c2c40f1f9e24113ba21d4ed734dd3ed3bc1d12290fa74ba5623fca1113c5d245a1202dc065e333615b90f810f12132ce4a1ecacb8c6b24a000000000000000000000000000000000000000000000000000000000000001b"
],
"timestamp":"1634548500"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
messages | String | ABI-encoded values [kind, timestamp, key, value], where kind equals 'prices', timestamp is the time when price was obtained, key is the asset ticker (e.g. btc) and value is the asset price. |
prices | String | Readable asset prices |
signatures | String | Ethereum-compatible ECDSA signatures for each message |
timestamp | String | Time of latest datapoint, Unix timestamp, e.g. 1597026387 |
Get exchange rate
This interface provides the average exchange rate data for 2 weeks
Rate Limit: 1 request per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/market/exchange-rate
Request Example
GET /api/v5/market/exchange-rate
Response Example
{
"code": "0",
"msg": "",
"data": [ {
"usdCny": "6.44"
}]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
usdCny | String | Exchange rate |
Public data
The API endpoints of Public Data
do not require authentication.
Get instruments
Retrieve a list of instruments with open contracts.
Rate Limit: 20 requests per 2 seconds
Rate limit rule: IP + instrumentType
HTTP Request
GET /api/v5/public/instruments
Request Example
GET /api/v5/public/instruments?instType=SPOT
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
instType | String | Yes | Instrument typeSPOT |
instId | String | No | Instrument ID |
Response Example
{
"code": "0",
"data": [
{
"alias": "",
"baseCcy": "BTC",
"category": "1",
"ctMult": "",
"ctType": "",
"ctVal": "",
"ctValCcy": "",
"expTime": "",
"instFamily": "",
"instId": "BTC-USD",
"instType": "SPOT",
"lever": "",
"listTime": "1671521075000",
"lotSz": "0.0001",
"maxIcebergSz": "99999999999999",
"maxLmtSz": "99999999999999",
"maxMktSz": "1000000",
"maxStopSz": "1000000",
"maxTriggerSz": "99999999999999",
"maxTwapSz": "99999999999999",
"minSz": "0.0001",
"optType": "",
"quoteCcy": "USD",
"settleCcy": "",
"state": "live",
"stk": "",
"tickSz": "0.01",
"uly": ""
}
],
"msg": ""
}
Response Parameters
Parameter | Type | Description |
---|---|---|
instType | String | Instrument type |
instId | String | Instrument ID, e.g. BTC-USD |
uly | String | Underlying. Not enabled. Please disregard. |
instFamily | String | Instrument family. Not enabled. Please disregard. |
category | String | Fee schedule. Not enabled. Please disregard. |
baseCcy | String | Base currency, e.g. BTC inBTC-USD |
quoteCcy | String | Quote currency, e.g. USD in BTC-USD |
settleCcy | String | Settlement and margin currency. Not enabled. Please disregard. |
ctVal | String | Contract value. Not enabled. Please disregard. |
ctMult | String | Contract multiplier. Not enabled. Please disregard. |
ctValCcy | String | Contract value currency. Not enabled. Please disregard. |
optType | String | Option type. Not enabled. Please disregard. |
stk | String | Strike price. Not enabled. Please disregard. |
listTime | String | Listing time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
expTime | String | Expiry time, Unix timestamp format in milliseconds, e.g. 1597026383085 . Not enabled. Please disregard. |
lever | String | Max Leverage. Not enabled. Please disregard. |
tickSz | String | Tick size, e.g. 0.0001 |
lotSz | String | Lot size, e.g. BTC-USD: 1 |
minSz | String | Minimum order size |
ctType | String | Contract typelinear : linear contractinverse : inverse contract. Not enabled. Please disregard. |
alias | String | Alias. Not enabled. Please disregard. |
state | String | Instrument statuslive suspend preopen |
maxLmtSz | String | The maximum order quantity of the spot limit order |
maxMktSz | String | The maximum order quantity of the spot market order |
maxTwapSz | String | The maximum order quantity of the spot twap order |
maxIcebergSz | String | The maximum order quantity of the spot iceBerg order |
maxTriggerSz | String | The maximum order quantity of the spot trigger order |
maxStopSz | String | The maximum order quantity of the spot stop order |
Get system time
Retrieve API server time.
Rate Limit: 10 requests per 2 seconds
Rate limit rule: IP
HTTP Request
GET /api/v5/public/time
Request Example
GET /api/v5/public/time
Response Example
{
"code":"0",
"msg":"",
"data":[
{
"ts":"1597026383085"
}
]
}
Response Parameters
Parameter | Type | Description |
---|---|---|
ts | String | System time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Status
Get event status of system upgrade
Rate Limit: 1 request per 5 seconds
HTTP Requests
GET /api/v5/system/status
Request Example
GET /api/v5/system/status
GET /api/v5/system/status?state=canceled
Request Parameters
Parameters | Types | Required | Description |
---|---|---|---|
state | String | No | System maintenance status,scheduled : waiting; ongoing : processing; pre_open : pre_open; completed : completed ;canceled : canceled. Generally, pre_open last about 10 minutes. There will be pre_open when the time of upgrade is too long. If this parameter is not filled, the data with status scheduled , ongoing and pre_open will be returned by default |
Response Example
{
"code": "0",
"msg": "",
"data": [{
"title": "Spot System Upgrade",
"state": "scheduled",
"begin": "1620723600000",
"end": "1620724200000",
"href": "",
"serviceType": "1",
"system": "classic",
"scheDesc": ""
}]
}
Response Parameters
Parameters | Types | Description |
---|---|---|
title | String | The title of system maintenance instructions |
state | String | System maintenance status |
begin | String | Begin time of system maintenance, Unix timestamp format in milliseconds, e.g. 1617788463867 |
end | String | Time of resuming trading totally. Unix timestamp format in milliseconds, e.g. 1617788463867 .It is expected end time before completed , changed to actual end time after completed . |
preOpenBegin | String | The time of pre_open. Canceling orders, placing Post Only orders, and transferring funds to trading accounts are back after preOpenBegin . |
href | String | Hyperlink for system maintenance details, if there is no return value, the default value will be empty. e.g. “” |
serviceType | String | Service type, 0 :WebSocket ; 1 :Classic account 5 :Unified account; 99 : Others (e.g. Suspend partial instruments) |
system | String | System, classic : Classic account unified : Unified account |
scheDesc | String | Rescheduled description, e.g. Rescheduled from 2021-01-26T16:30:00.000Z to 2021-01-28T16:30:00.000Z |
WebSocket API
Overview
WebSocket is a new HTML5 protocol that achieves full-duplex data transmission between the client and server, allowing data to be transferred effectively in both directions. A connection between the client and server can be established with just one handshake. The server will then be able to push data to the client according to preset rules. Its advantages include:
- The WebSocket request header size for data transmission between client and server is only 2 bytes.
- Either the client or server can initiate data transmission.
- There's no need to repeatedly create and delete TCP connections, saving resources on bandwidth and server.
Connect
Connection instructions:
Connection limit: 1 request per second
When subscribing to a public channel, use the address of the public service. When subscribing to a private channel, use the address of the private service
Subscription limit: 240 times per hour
Login
Rate Limit: 1 request per second Applicable to single-account login
Rate Limit: 1 request per 15 seconds Applicable to multi-account batch login
Request Example
{
"op": "login",
"args": [
{
"apiKey": "985d5b66-57ce-40fb-b714-afc0b9787083",
"passphrase": "123456",
"timestamp": "1538054050",
"sign": "7L+zFQ+CEgGu5rzCj4+BdV2/uUHGqddA9pI6ztsRRPs="
},
{
"apiKey" : "86126n98-57ce-40fb-b714-afc0b9787083",
"passphrase" :"123456",
"timestamp" :"1538054050",
"sign" :"7L+zFQ+CEgGu5rzCj4+BdV2/uUHGqddA9pI6ztsRRPs="
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, login |
args | Array | Yes | List of account to login, the maximum is 100 |
> apiKey | String | Yes | APIKey |
> passphrase | String | Yes | APIKey password |
> timestamp | String | Yes | Unix Epoch time, the unit is seconds |
> sign | String | Yes | Signature string |
Successful Response Example
{
"event": "login",
"code": "0",
"msg": ""
}
Failure Response Example
{
"event": "error",
"code": "60009",
"msg": "Login failed."
}
Response Example When Partially Successful
{
"event": "login",
"code": "60022",
"msg": "Bulk login partially succeeded",
"data":[
{"apiKey": "86126n98-57ce-40fb-b714-afc0b9787083"}
]
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Operation, login error |
code | String | No | Error code |
msg | String | No | Error message |
data | Object | No | List returned after login failure |
> apiKey | String | Yes | APIKey returned after login failure |
api_key: Unique identification for invoking API. Requires user to apply one manually.
passphrase: APIKey password
timestamp: the Unix Epoch time, the unit is seconds
sign: signature string, the signature algorithm is as follows:
First concatenate timestamp
, method
, requestPath
, strings, then use HMAC SHA256 method to encrypt the concatenated string with SecretKey, and then perform Base64 encoding.
secretKey: The security key generated when the user applies for APIKey, e.g. : 22582BD0CFF14C41EDBF1AB98506286D
Example of timestamp: const timestamp = '' + Date.now() / 1,000
Among sign example: sign=CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(timestamp +'GET'+'/users/self/verify', secretKey))
method: always 'GET'.
requestPath : always '/users/self/verify'
Subscribe
Subscription Instructions
Request format description
{
"op": "subscribe",
"args": ["<SubscriptionTopic>"]
}
WebSocket channels are divided into two categories: public
and private
channels.
Public channels
-- No authentication is required, include tickers channel, K-Line channel, limit price channel, order book channel, and mark price channel etc.
Private channels
-- including account channel, order channel, and position channel, etc -- require log in.
Users can choose to subscribe to one or more channels, and the total length of multiple channels cannot exceed 4,096 bytes.
Request Example
{
"op":"subscribe",
"args":[
{
"channel":"tickers",
"instId":"BTC-USD"
},
{
"channel":"candle1m",
"instId":"BTC-USD"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name |
> instType | String | No | Instrument typeSPOT |
> uly | String | No | Underlying |
> instId | String | No | Instrument ID |
Response Example
{
"event": "subscribe",
"arg": {
"channel": "tickers",
"instId": "BTC-USD"
}
}
Return parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instType | String | No | Instrument typeSPOT |
> uly | String | No | Underlying |
> instId | String | No | Instrument ID |
code | String | No | Error code |
msg | String | No | Error message |
Unsubscribe
Unsubscribe from one or more channels.
Request format description
{
"op": "unsubscribe",
"args": ["< SubscriptionTopic> "]
}
Request Example
{
"op": "unsubscribe",
"args": [
{
"channel": "tickers",
"instId": "BTC-USD"
},
{
"channel": "candle1m",
"instId": "BTC-USD"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, unsubscribe |
args | Array | Yes | List of channels to unsubscribe from |
> channel | String | Yes | Channel name |
> instType | String | No | Instrument typeSPOT |
> uly | String | No | Underlying |
> instId | String | No | Instrument ID |
Response Example
{
"event": "unsubscribe",
"arg": {
"channel": "tickers",
"instId": "BTC-USD"
}
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, unsubscribe error |
arg | Object | No | Unsubscribed channel |
> channel | String | Yes | Channel name |
> instType | String | No | Instrument typeSPOT |
> uly | String | No | Underlying |
> instId | String | No | Instrument ID |
code | String | No | Error code |
msg | String | No | Error message |
Trade
The WebSocket Trade
APIs require authentication.
Place order
You can place an order only if you have sufficient funds.
Rate Limit: 60 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
Request Example
{
"id": "1512",
"op": "order",
"args": [{
"side": "buy",
"instId": "BTC-USDT",
"tdMode": "cash",
"ordType": "market",
"sz": "100"
}]
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
id | String | Yes | Unique identifier of the message Provided by client. It will be returned in response message for identifying the corresponding request. A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
op | String | Yes | Operation, e.g. order |
args | Array | Yes | Request parameters |
> instId | String | Yes | Instrument ID,e.g. BTC-USD |
> tdMode | String | Yes | Trade mode Non-Margin mode cash |
> clOrdId | String | No | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
> tag | String | No | Order tag A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 16 characters. |
> side | String | Yes | Order side, buy sell |
> ordType | String | Yes | Order typemarket : market orderlimit : limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
> sz | String | Yes | Quantity to buy or sell. |
> px | String | Conditional | Order price Only applicable to limit ,post_only ,fok ,ioc order. |
> tgtCcy | String | No | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
> banAmend | Boolean | No | Whether to disallow the system from amending the size of the SPOT Market Order. Valid options: true or false . The default value is false .If true , system will not amend and reject the market order if user does not have sufficient funds. Only applicable to SPOT Market Orders |
expTime | String | No | Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085 |
Successful Response Example
{
"id": "1512",
"op": "order",
"data": [
{
"clOrdId": "",
"ordId": "12345689",
"tag": "",
"sCode": "0",
"sMsg": ""
}
],
"code": "0",
"msg": ""
}
Failure Response Example
{
"id": "1512",
"op": "order",
"data": [
{
"clOrdId": "",
"ordId": "",
"tag": "",
"sCode": "5XXXX",
"sMsg": "not exist"
}
],
"code": "1",
"msg": ""
}
Response Example When Format Error
{
"id": "1512",
"op": "order",
"data": [],
"code": "60013",
"msg": "Invalid args"
}
Response Parameters
Parameter | Type | Description |
---|---|---|
id | String | Unique identifier of the message |
op | String | Operation |
code | String | Error Code |
msg | String | Error message |
data | Array | Data |
> ordId | String | Order ID |
> clOrdId | String | Client Order ID as assigned by the client |
> tag | String | Order tag |
> sCode | String | Order status code, 0 means success |
> sMsg | String | Order status message |
Place multiple orders
Place orders in a batch. Maximum 20 orders can be placed per request
Rate Limit: 300 orders per 2 seconds
Spot rate limit rule: UserID + instrumentID
Request Example
{
"id": "1513",
"op": "batch-orders",
"args": [
{
"instId":"BTC-USD",
"tdMode":"cash",
"clOrdId":"b15",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
},
{
"instId":"BTC-USD",
"tdMode":"cash",
"clOrdId":"b15",
"side":"buy",
"ordType":"limit",
"px":"2.15",
"sz":"2"
}
]
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
id | String | Yes | Unique identifier of the message Provided by client. It will be returned in response message for identifying the corresponding request. A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
op | String | Yes | Operation, e.g. batch-orders |
args | Array | Yes | Request Parameters |
> instId | String | Yes | Instrument ID, e.g. BTC-USDT |
> tdMode | String | Yes | Trade mode Non-Margin mode cash |
> clOrdId | String | No | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
> tag | String | No | Order tag A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 16 characters. |
> side | String | Yes | Order side, buy sell |
> ordType | String | Yes | Order typemarket : market orderlimit : limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
> sz | String | Yes | Quantity to buy or sell. |
> px | String | Conditional | Price Only applicable to limit ,post_only ,fok ,ioc order. |
> tgtCcy | String | No | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
> banAmend | Boolean | No | Whether to disallow the system from amending the size of the SPOT Market Order. Valid options: true or false . The default value is false .If true , system will not amend and reject the market order if user does not have sufficient funds. Only applicable to SPOT Market Orders |
expTime | String | No | Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085 |
Response Example When All Succeed
{
"id": "1513",
"op": "batch-orders",
"data": [
{
"clOrdId": "",
"ordId": "12345689",
"tag": "",
"sCode": "0",
"sMsg": ""
},
{
"clOrdId": "",
"ordId": "12344",
"tag": "",
"sCode": "0",
"sMsg": ""
}
],
"code": "0",
"msg": ""
}
Response Example When Partially Successful
{
"id": "1513",
"op": "batch-orders",
"data": [
{
"clOrdId": "",
"ordId": "12345689",
"tag": "",
"sCode": "0",
"sMsg": ""
},
{
"clOrdId": "",
"ordId": "",
"tag": "",
"sCode": "5XXXX",
"sMsg": "Insufficient margin"
}
],
"code": "2",
"msg": ""
}
Response Example When All Failed
{
"id": "1513",
"op": "batch-orders",
"data": [
{
"clOrdId": "oktswap6",
"ordId": "",
"tag": "",
"sCode": "5XXXX",
"sMsg": "Insufficient margin"
},
{
"clOrdId": "oktswap7",
"ordId": "",
"tag": "",
"sCode": "5XXXX",
"sMsg": "Insufficient margin"
}
],
"code": "1",
"msg": ""
}
Response Example When Format Error
{
"id": "1513",
"op": "batch-orders",
"data": [],
"code": "60013",
"msg": "Invalid args"
}
Response Parameters
Parameter | Type | Description |
---|---|---|
id | String | Unique identifier of the message |
op | String | Operation |
code | String | Error Code |
msg | String | Error message |
data | Array | Data |
> ordId | String | Order ID |
> clOrdId | String | Client Order ID as assigned by the client |
> tag | String | Order tag |
> sCode | String | Order status code, 0 means success |
> sMsg | String | Order status message |
Cancel order
Cancel an incomplete order
Rate Limit: 60 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
Request Example
{
"id": "1514",
"op": "cancel-order",
"args": [
{
"instId": "BTC-USD",
"ordId": "2510789768709120"
}
]
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
id | String | Yes | Unique identifier of the message Provided by client. It will be returned in response message for identifying the corresponding request. A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
op | String | Yes | Operation, e.g. cancel-order |
args | Array | Yes | Request Parameters |
> instId | String | Yes | Instrument ID |
> ordId | String | Conditional | Order ID Either ordId or clOrdId is required, if both are passed, ordId will be used |
> clOrdId | String | Conditional | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
Successful Response Example
{
"id": "1514",
"op": "cancel-order",
"data": [
{
"clOrdId": "",
"ordId": "2510789768709120",
"sCode": "0",
"sMsg": ""
}
],
"code": "0",
"msg": ""
}
Failure Response Example
{
"id": "1514",
"op": "cancel-order",
"data": [
{
"clOrdId": "",
"ordId": "2510789768709120",
"sCode": "5XXXX",
"sMsg": "Order not exist"
}
],
"code": "1",
"msg": ""
}
Response Example When Format Error
{
"id": "1514",
"op": "cancel-order",
"data": [],
"code": "60013",
"msg": "Invalid args"
}
Response Parameters
Parameter | Type | Description |
---|---|---|
id | String | Unique identifier of the message |
op | String | Operation |
code | String | Error Code |
msg | String | Error message |
data | Array | Data |
> ordId | String | Order ID |
> clOrdId | String | Client Order ID as assigned by the client |
> sCode | String | Order status code, 0 means success |
> sMsg | String | Order status message |
Cancel multiple orders
Cancel incomplete orders in batches. Maximum 20 orders can be canceled per request.
Rate Limit: 300 orders per 2 seconds
Spot rate limit rule: UserID + instrumentID
Request Example
{
"id": "1515",
"op": "batch-cancel-orders",
"args": [
{
"instId": "BTC-USD",
"ordId": "2517748157541376"
},
{
"instId": "LTC-USD",
"ordId": "2517748155771904"
}
]
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
id | String | Yes | Unique identifier of the message Provided by client. It will be returned in response message for identifying the corresponding request. A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
op | String | Yes | Operation, e.g. batch-cancel-orders |
args | Array | Yes | Request Parameters |
> instId | String | Yes | Instrument ID |
> ordId | String | Conditional | Order ID Either ordId or clOrdId is required, if both are passed, ordId will be used |
> clOrdId | String | Conditional | Client Order ID as assigned by the client A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
Response Example When All Succeed
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [
{
"clOrdId": "oktswap6",
"ordId": "2517748157541376",
"sCode": "0",
"sMsg": ""
},
{
"clOrdId": "oktswap7",
"ordId": "2517748155771904",
"sCode": "0",
"sMsg": ""
}
],
"code": "0",
"msg": ""
}
Response Example When partially successfully
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [
{
"clOrdId": "oktswap6",
"ordId": "2517748157541376",
"sCode": "0",
"sMsg": ""
},
{
"clOrdId": "oktswap7",
"ordId": "2517748155771904",
"sCode": "5XXXX",
"sMsg": "order not exist"
}
],
"code": "2",
"msg": ""
}
Response Example When All Failed
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [
{
"clOrdId": "oktswap6",
"ordId": "2517748157541376",
"sCode": "5XXXX",
"sMsg": "order not exist"
},
{
"clOrdId": "oktswap7",
"ordId": "2517748155771904",
"sCode": "5XXXX",
"sMsg": "order not exist"
}
],
"code": "1",
"msg": ""
}
Response Example When Format Error
{
"id": "1515",
"op": "batch-cancel-orders",
"data": [],
"code": "60013",
"msg": "Invalid args"
}
Response Parameters
Parameter | Type | Description |
---|---|---|
id | String | Unique identifier of the message |
op | String | Operation |
code | String | Error Code |
msg | String | Error message |
data | Array | Data |
> ordId | String | Order ID |
> clOrdId | String | Client Order ID as assigned by the client |
> sCode | String | Order status code, 0 means success |
> sMsg | String | Order status message |
Amend order
Amend an incomplete order.
Rate Limit: 60 requests per 2 seconds
Spot rate limit rule: UserID + instrumentID
Request Example
{
"id": "1512",
"op": "amend-order",
"args": [
{
"instId": "BTC-USD",
"ordId": "2510789768709120",
"newSz": "2"
}
]
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
id | String | Yes | Unique identifier of the message Provided by client. It will be returned in response message for identifying the corresponding request. A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
op | String | Yes | Operation, e.g. amend-order |
args | Array | Yes | Request Parameters |
> instId | String | Yes | Instrument ID |
> cxlOnFail | Boolean | No | Whether the order needs to be automatically canceled when the order amendment fails Valid options: false or true , the default is false . |
> ordId | String | Conditional | Order ID Either ordId or clOrdId is required, if both are passed, ordId will be used. |
> clOrdId | String | Conditional | Client Order ID as assigned by the client |
> reqId | String | No | Client Request ID as assigned by the client for order amendment A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
> newSz | String | Conditional | New quantity after amendment. Either newSz or newPx is required. When amending a partially-filled order, the newSz should include the amount that has been filled. |
> newPx | String | Conditional | New price after amendment. |
expTime | String | No | Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085 |
Successful Response Example
{
"id": "1512",
"op": "amend-order",
"data": [
{
"clOrdId": "",
"ordId": "2510789768709120",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
}
],
"code": "0",
"msg": ""
}
Failure Response Example
{
"id": "1512",
"op": "amend-order",
"data": [
{
"clOrdId": "",
"ordId": "2510789768709120",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
}
],
"code": "1",
"msg": ""
}
Response Example When Format Error
{
"id": "1512",
"op": "amend-order",
"data": [],
"code": "60013",
"msg": "Invalid args"
}
Response Parameters
Parameter | Type | Description |
---|---|---|
id | String | Unique identifier of the message |
op | String | Operation |
code | String | Error Code |
msg | String | Error message |
data | Array | Data |
> ordId | String | Order ID |
> clOrdId | String | Client Order ID as assigned by the client |
> reqId | String | Client Request ID as assigned by the client for order amendment |
> sCode | String | Order status code, 0 means success |
> sMsg | String | Order status message |
Amend multiple orders
Amend incomplete orders in batches. Maximum 20 orders can be amended per request.
Rate Limit: 300 orders per 2 seconds
Spot rate limit rule: UserID + instrumentID
Request Example
{
"id": "1513",
"op": "batch-amend-orders",
"args": [
{
"instId": "BTC-USD",
"ordId": "12345689",
"newSz": "2"
},
{
"instId": "BTC-USD",
"ordId": "12344",
"newSz": "2"
}
]
}
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
id | String | Yes | Unique identifier of the message Provided by client. It will be returned in response message for identifying the corresponding request. A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
op | String | Yes | Operation, e.g. batch-amend-orders |
args | Array | Yes | Request Parameters |
> instId | String | Yes | Instrument ID |
> cxlOnFail | Boolean | No | Whether the order needs to be automatically canceled when the order amendment fails Valid options: false or true , the default is false . |
> ordId | String | Conditional | Order ID Either ordId or clOrdId is required, if both are passed, ordId will be used. |
> clOrdId | String | Conditional | Client Order ID as assigned by the client |
> reqId | String | No | Client Request ID as assigned by the client for order amendment A combination of case-sensitive alphanumerics, all numbers, or all letters of up to 32 characters. |
> newSz | String | Conditional | New quantity after amendment. Either newSz or newPx is required. When amending a partially-filled order, the newSz should include the amount that has been filled. |
> newPx | String | Conditional | New price after amendment. |
expTime | String | No | Request effective deadline. Unix timestamp format in milliseconds, e.g. 1597026383085 |
Response Example When All Succeed
{
"id": "1513",
"op": "batch-amend-orders",
"data": [
{
"clOrdId": "oktswap6",
"ordId": "12345689",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
},
{
"clOrdId": "oktswap7",
"ordId": "12344",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
}
],
"code": "0",
"msg": ""
}
Response Example When All Failed
{
"id": "1513",
"op": "batch-amend-orders",
"data": [
{
"clOrdId": "",
"ordId": "12345689",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
},
{
"clOrdId": "oktswap7",
"ordId": "",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
}
],
"code": "1",
"msg": ""
}
Response Example When Partially Successful
{
"id": "1513",
"op": "batch-amend-orders",
"data": [
{
"clOrdId": "",
"ordId": "12345689",
"reqId": "b12344",
"sCode": "0",
"sMsg": ""
},
{
"clOrdId": "oktswap7",
"ordId": "",
"reqId": "b12344",
"sCode": "5XXXX",
"sMsg": "order not exist"
}
],
"code": "2",
"msg": ""
}
Response Example When Format Error
{
"id": "1513",
"op": "batch-amend-orders",
"data": [],
"code": "60013",
"msg": "Invalid args"
}
Response Parameters
Parameter | Type | Description |
---|---|---|
id | String | Unique identifier of the message |
op | String | Operation |
code | String | Error Code |
msg | String | Error message |
data | Array | Data |
> ordId | String | Order ID |
> clOrdId | String | Client Order ID as assigned by the client |
> reqId | String | Client Request ID as assigned by the client for order amendment If the user provides reqId in the request, the corresponding reqId will be returned |
> sCode | String | Order status code, 0 means success |
> sMsg | String | Order status message |
Private channel
Account channel
Retrieve account information. Data will be pushed when triggered by events such as placing order, canceling order, transaction execution, etc. It will also be pushed in regular interval according to subscription granularity.
Request Example : single
{
"op": "subscribe",
"args": [
{
"channel": "account",
"ccy": "BTC"
}
]
}
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "account"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, account |
> ccy | String | No | Currency |
Successful Response Example : single
{
"event": "subscribe",
"arg": {
"channel": "account",
"ccy": "BTC"
}
}
Successful Response Example
{
"event": "subscribe",
"arg": {
"channel": "account"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"account\", \"ccy\" : \"BTC\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Operation, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name, account |
> ccy | String | No | Currency |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example: single
{
"arg": {
"channel": "account",
"uid": "1300041872592896"
},
"data": [
{
"adjEq": "",
"details": [
{
"availBal": "1.63093282565",
"availEq": "",
"cashBal": "1.63093282565",
"ccy": "USD",
"coinUsdPrice": "1",
"crossLiab": "",
"disEq": "0",
"eq": "1.63093282565",
"eqUsd": "1.63093282565",
"fixedBal": "0",
"frozenBal": "0",
"interest": "",
"isoEq": "",
"isoLiab": "",
"isoUpl": "",
"liab": "",
"maxLoan": "",
"mgnRatio": "",
"notionalLever": "",
"ordFrozen": "0",
"spotInUseAmt": "",
"stgyEq": "0",
"twap": "0",
"uTime": "1672814726203",
"upl": ""
}
],
"imr": "",
"isoEq": "",
"mgnRatio": "",
"mmr": "",
"notionalUsd": "",
"ordFroz": "",
"totalEq": "1.63100282285",
"uTime": "1672814733845"
}
]
}
Push Data Example
{
"arg": {
"channel": "account",
"uid": "1300041872592896"
},
"data": [
{
"adjEq": "",
"details": [
{
"availBal": "1.63093282565",
"availEq": "",
"cashBal": "1.63093282565",
"ccy": "USD",
"coinUsdPrice": "1",
"crossLiab": "",
"disEq": "0",
"eq": "1.63093282565",
"eqUsd": "1.63093282565",
"fixedBal": "0",
"frozenBal": "0",
"interest": "",
"isoEq": "",
"isoLiab": "",
"isoUpl": "",
"liab": "",
"maxLoan": "",
"mgnRatio": "",
"notionalLever": "",
"ordFrozen": "0",
"spotInUseAmt": "",
"stgyEq": "0",
"twap": "0",
"uTime": "1672814726203",
"upl": ""
},
{
"availBal": "0.00007",
"availEq": "",
"cashBal": "0.00007",
"ccy": "USDT",
"coinUsdPrice": "0.99996",
"crossLiab": "",
"disEq": "0",
"eq": "0.00007",
"eqUsd": "0.0000699972",
"fixedBal": "0",
"frozenBal": "0",
"interest": "",
"isoEq": "",
"isoLiab": "",
"isoUpl": "",
"liab": "",
"maxLoan": "",
"mgnRatio": "",
"notionalLever": "",
"ordFrozen": "0",
"spotInUseAmt": "",
"stgyEq": "0",
"twap": "0",
"uTime": "1672814726203",
"upl": ""
}
],
"imr": "",
"isoEq": "",
"mgnRatio": "",
"mmr": "",
"notionalUsd": "",
"ordFroz": "",
"totalEq": "1.63100282285",
"uTime": "1672814733845"
}
]
}
Push data parameters
Parameters | Types | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> uid | String | User Identifier |
data | Array | Subscribed data |
> uTime | String | The latest time to get account information, millisecond format of Unix timestamp, e.g. 1597026383085 |
> totalEq | String | Total equity in USD |
> isoEq | String | Isolated margin equity in USD. Not enabled. Please disregard. |
> adjEq | String | Adjusted / Effective equity in USD. Not enabled. Please disregard. |
> ordFroz | String | Margin frozen for pending cross orders in USD. Not enabled. Please disregard. |
> imr | String | Frozen equity for open positions and pending orders in USD. Not enabled. Please disregard. |
> mmr | String | Maintenance margin requirement in USD . Not enabled. Please disregard. |
> mgnRatio | String | Margin ratio in USD . Not enabled. Please disregard. |
> notionalUsd | String | Notional value of positions in USD . Not enabled. Please disregard. |
> details | Array | Detailed asset information in all currencies |
>> ccy | String | Currency |
>> eq | String | Equity of the currency |
>> cashBal | String | Cash Balance |
>> uTime | String | Update time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
>> isoEq | String | Isolated margin equity of the currency. Not enabled. Please disregard. |
>> availEq | String | Available equity of the currency. Not enabled. Please disregard. |
>> disEq | String | Discount equity of the currency in USD |
>> availBal | String | Available balance of the currency |
>> frozenBal | String | Frozen balance of the currency |
>> ordFrozen | String | Margin frozen for open orders |
>> liab | String | Liabilities of the currency. Not enabled. Please disregard. |
>> upl | String | Unrealized profit and loss of the currency. Not enabled. Please disregard. |
>> uplLiab | String | Liabilities due to Unrealized loss of the currency. Not enabled. Please disregard. |
>> crossLiab | String | Cross Liabilities of the currency. Not enabled. Please disregard. |
>> isoLiab | String | Isolated Liabilities of the currency. Not enabled. Please disregard. |
>> mgnRatio | String | Margin ratio of the currency. Not enabled. Please disregard. |
>> interest | String | Interest of the currency. Not enabled. Please disregard. |
>> twap | String | System is forced repayment(TWAP) indicator. Not enabled. Please disregard. |
>> maxLoan | String | Max loan of the currency. Not enabled. Please disregard. |
>> eqUsd | String | Equity usd of the currency |
>> notionalLever | String | Leverage of the currency. Not enabled. Please disregard. |
>> coinUsdPrice | String | Price index usd of the currency |
>> stgyEq | String | strategy equity |
>> isoUpl | String | Isolated unrealized profit and loss of the currency. Not enabled. Please disregard. |
>> spotInUseAmt | String | Spot in use amount. Not enabled. Please disregard. |
Order channel
Retrieve order information. Data will not be pushed when first subscribed. Data will only be pushed when triggered by events such as placing/canceling order.
Request Example : single
{
"op": "subscribe",
"args": [{
"channel": "orders",
"instType": "SPOT",
"instId": "BTC-USD"
}]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, orders |
> instType | String | Yes | Instrument typeSPOT |
> instId | String | No | Instrument ID |
Successful Response Example : single
{
"event": "subscribe",
"arg": {
"channel": "orders",
"instType": "SPOT",
"instId": "BTC-USD"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"orders\", \"instType\" : \"SPOTT\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instType | String | Yes | Instrument typeSPOT |
> instId | String | No | Instrument ID |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example: single
{
"arg": {
"channel": "orders",
"instType": "SPOT",
"instId": "ETH-USD",
"uid": "1300041872592896"
},
"data": [
{
"accFillSz": "0",
"amendResult": "",
"avgPx": "0",
"cTime": "1672898607313",
"category": "normal",
"ccy": "",
"clOrdId": "",
"code": "0",
"execType": "",
"fee": "0",
"feeCcy": "ETH",
"fillFee": "0",
"fillFeeCcy": "",
"fillNotionalUsd": "",
"fillPx": "",
"fillSz": "0",
"fillTime": "",
"instId": "ETH-USD",
"instType": "SPOT",
"lever": "0",
"msg": "",
"notionalUsd": "0.25",
"ordId": "531110485559349248",
"ordType": "limit",
"pnl": "0",
"posSide": "",
"px": "250",
"rebate": "0",
"rebateCcy": "USD",
"reduceOnly": "false",
"reqId": "",
"side": "buy",
"slOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "last",
"source": "",
"state": "live",
"sz": "0.001",
"tag": "",
"tdMode": "cash",
"tgtCcy": "",
"tpOrdPx": "",
"tpTriggerPx": "",
"tpTriggerPxType": "last",
"tradeId": "",
"uTime": "1672898607313"
}
]
}
Push data parameters
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> uid | String | User Identifier |
> instType | String | Instrument type |
> instId | String | Instrument ID |
data | Array | Subscribed data |
> instType | String | Instrument type |
> instId | String | Instrument ID |
> tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market orders. Default is quote_ccy for buy, base_ccy for sell |
> ccy | String | Margin currency. Not enabled. Please disregard. |
> ordId | String | Order ID |
> clOrdId | String | Client Order ID as assigned by the client |
> tag | String | Order tag |
> px | String | Order price |
> sz | String | The original order quantity, SPOT , in the unit of currency; |
> notionalUsd | String | Estimated national value in USD of order |
> ordType | String | Order typemarket : market orderlimit : limit orderpost_only : Post-only orderfok : Fill-or-kill orderioc : Immediate-or-cancel order |
> side | String | Order side, buy sell |
> posSide | String | Position side. Not enabled. Please disregard. |
> tdMode | String | Trade mode, cash : cash |
> fillPx | String | Last filled price |
> tradeId | String | Last trade ID |
> fillSz | String | Last filled quantity |
> fillTime | String | Last filled time |
> fillFee | String | last filled fee amount or rebate amount: Negative number represents the user transaction fee charged by the platform; Positive number represents rebate |
> fillFeeCcy | String | last filled fee currency |
> execType | String | Liquidity taker or maker of the last filled, T: taker M: maker |
> accFillSz | String | Accumulated fill quantity |
> fillNotionalUsd | String | Filled notional value in USD of order |
> avgPx | String | Average filled price. If none is filled, it will return 0 . |
> state | String | Order state canceled live partially_filled filled |
> lever | String | Leverage. Not enabled. Please disregard. |
> tpTriggerPx | String | Take-profit trigger price |
> tpTriggerPxType | String | Take-profit trigger price type. last : last price |
> tpOrdPx | String | Take-profit order price |
> slTriggerPx | String | Stop-loss trigger price |
> slTriggerPxType | String | Stop-loss trigger price type. last : last price |
> slOrdPx | String | Stop-loss order price |
> feeCcy | String | Fee currencySPOT : If you buy, you will receive BTC; if you sell, you will receive USDT |
> fee | String | Fee and rebate For spot, it is accumulated fee charged by the platform. It is always negative, e.g. -0.01. |
> rebateCcy | String | Rebate currency, if there is no rebate, this field is "". |
> rebate | String | Rebate accumulated amount, only applicable to spot, the reward of placing orders from the platform (rebate) given to user who has reached the specified trading level. If there is no rebate, this field is "". |
> pnl | String | Profit and loss. Not enabled. Please disregard. |
> source | String | Order source 13 :The generated limit order after the strategy order is triggered |
> category | String | Categorynormal |
> uTime | String | Update time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> reqId | String | Client Request ID as assigned by the client for order amendment. "" will be returned if there is no order amendment. |
> amendResult | String | The result of amending the order-1 : failure0 : success1 : Automatic cancel (due to failed amendment) When amending the order through API and the amendment failed, -1 will be returned if cxlOnFail is set to false . Otherwise 1 will be returned if cxlOnFail is set to true . When amending the order through Web/APP and the amendment failed, -1 will be returned. |
> code | String | Error Code, the default is 0 |
> msg | String | Error Message, The default is "" |
Algo orders channel
Retrieve algo orders (includes trigger
order, oco
order, conditional
order). Data will not be pushed when first subscribed. Data will only be pushed when triggered by events such as placing/canceling order.
Request Example : single
{
"op": "subscribe",
"args": [
{
"channel": "orders-algo",
"instType": "SPOT",
"instId": "BTC-USD"
}
]
}
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "orders-algo",
"instType": "SPOT"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, orders-algo |
> instType | String | Yes | Instrument typeSPOT |
> instId | String | No | Instrument ID |
Successful Response Example : single
{
"event": "subscribe",
"arg": {
"channel": "orders-algo",
"instType": "SPOT",
"instId": "BTC-USD"
}
}
Successful Response Example
{
"event": "subscribe",
"arg": {
"channel": "orders-algo",
"instType": "SPOT"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"orders-algo\", \"instType\" : \"SPOTT\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instType | String | Yes | Instrument typeSPOT |
> instId | String | No | Instrument ID |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example: single
{
"arg": {
"channel": "orders-algo",
"uid": "77982378738415879",
"instType": "SPOT",
"instId": "BTC-USD"
},
"data": [{
"instType": "SPOT",
"instId": "BTC-USD",
"ordId": "312269865356374016",
"ccy": "BTC",
"clOrdId": "",
"algoId": "1234",
"px": "999",
"sz": "3",
"tdMode": "cash",
"tgtCcy": "",
"notionalUsd": "",
"ordType": "trigger",
"side": "buy",
"posSide": "net",
"state": "live",
"lever": "20",
"tpTriggerPx": "",
"tpTriggerPxType": "",
"tpOrdPx": "",
"slTriggerPx": "",
"slTriggerPxType": "",
"triggerPx": "99",
"triggerPxType": "last",
"ordPx": "12",
"tag": "adadadadad",
"actualSz": "",
"actualPx": "",
"actualSide": "",
"triggerTime": "1597026383085",
"cTime": "1597026383000"
}]
}
Response parameters when data is pushed.
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> uid | String | User Identifier |
> instType | String | Instrument type |
> instId | String | Instrument ID |
data | Array | Subscribed data |
> instType | String | Instrument type |
> instId | String | Instrument ID |
> ccy | String | Margin currency. Not enabled. Please disregard. |
> ordId | String | Order ID, the order ID associated with the algo order. |
> algoId | String | Algo ID |
> clOrdId | String | Client Order ID as assigned by the client |
> sz | String | Quantity to buy or sell. SPOT : in the unit of currency. |
> ordType | String | Order typeconditional : One-way stop order oco : One-cancels-the-other ordertrigger : Trigger order |
> side | String | Order side, buy sell |
> posSide | String | Position side. Not enabled. Please disregard. |
> tdMode | String | Trade mode, cash : cash |
> tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
> lever | String | Leverage. Not enabled. Please disregard. |
> state | String | Order status live : to be effectiveeffective : effectivecanceled : canceledorder_failed : order failed |
> tpTriggerPx | String | Take-profit trigger price. |
> tpTriggerPxType | String | Take-profit trigger price type. last : last price |
> tpOrdPx | String | Take-profit order price. |
> slTriggerPx | String | Stop-loss trigger price. |
> slTriggerPxType | String | Stop-loss trigger price type. last : last price |
> slOrdPx | String | Stop-loss order price. |
> triggerPx | String | Trigger price |
> triggerPxType | String | Trigger price type. last : last price |
> ordPx | String | Order price |
> actualSz | String | Actual order quantity |
> actualPx | String | Actual order price |
> notionalUsd | String | Estimated national value in USD of order |
> tag | String | Order tag |
> actualSide | String | Actual trigger side |
> triggerTime | String | Trigger time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> reduceOnly | String | Whether the order can only reduce the position size. Valid options: true or false . |
> cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Advance algo orders channel
Retrieve advance algo orders (including Iceberg order, TWAP order, Trailing order). Data will be pushed when first subscribed. Data will be pushed when triggered by events such as placing/canceling order.
Request Example : single
{
"op": "subscribe",
"args": [
{
"channel": "algo-advance",
"instType": "SPOT",
"instId": "BTC-USD"
}
]
}
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "algo-advance",
"instType": "SPOT"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, algo-advance |
> instType | String | Yes | Instrument typeSPOT |
> instId | String | No | Instrument ID |
> algoId | String | No | Algo Order ID |
Successful Response Example : single
{
"event": "subscribe",
"arg": {
"channel": "algo-advance",
"instType": "SPOT",
"instId": "BTC-USD"
}
}
Successful Response Example
{
"event": "subscribe",
"arg": {
"channel": "algo-advance",
"instType": "SPOT"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"algo-advance\", \"instType\" : \"SPOTT\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instType | String | Yes | Instrument typeSPOT |
> instId | String | No | Instrument ID |
> algoId | String | No | Algo Order ID |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example: single
{
"arg":{
"channel":"algo-advance",
"uid": "77982378738415879",
"instType":"SPOT",
"instId":"BTC-USD"
},
"data":[
{
"actualPx":"",
"actualSide":"",
"actualSz":"0",
"algoId":"355056228680335360",
"cTime":"1630924001545",
"ccy":"",
"clOrdId": "",
"count":"1",
"instId":"BTC-USD",
"instType":"SPOT",
"lever":"0",
"notionalUsd":"",
"ordPx":"",
"ordType":"iceberg",
"pTime":"1630924295204",
"posSide":"net",
"pxLimit":"10",
"pxSpread":"1",
"pxVar":"",
"side":"buy",
"slOrdPx":"",
"slTriggerPx":"",
"state":"pause",
"sz":"0.1",
"szLimit":"0.1",
"tdMode":"cash",
"timeInterval":"",
"tpOrdPx":"",
"tpTriggerPx":"",
"tag": "adadadadad",
"triggerPx":"",
"triggerTime":"",
"callbackRatio":"",
"callbackSpread":"",
"activePx":"",
"moveTriggerPx":""
}
]
}
Response parameters when data is pushed.
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> uid | String | User Identifier |
> instType | String | Instrument type |
> instId | String | Instrument ID |
> algoId | String | Algo Order ID |
data | Array | Subscribed data |
> instType | String | Instrument type |
> instId | String | Instrument ID |
> ccy | String | Margin currency. Not enabled. Please disregard. |
> ordId | String | Order ID, the order ID associated with the algo order. |
> algoId | String | Algo ID |
> clOrdId | String | Client Order ID as assigned by the client |
> sz | String | Quantity to buy or sell. SPOT : in the unit of currency. |
> ordType | String | Order typeiceberg : Iceberg ordertwap : TWAP ordermove_order_stop : Trailing order |
> side | String | Order side, buy sell |
> posSide | String | Position side. Not enabled. Please disregard. |
> tdMode | String | Trade mode, cash : cash |
> tgtCcy | String | Order quantity unit setting for sz base_ccy : Base currency ,quote_ccy : Quote currency Only applicable to SPOT Market OrdersDefault is quote_ccy for buy, base_ccy for sell |
> lever | String | Leverage. Not enabled. Please disregard. |
> state | String | Order status live : to be effectiveeffective : effectivecanceled : canceledorder_failed : order failed |
> tpTriggerPx | String | Take-profit trigger price. |
> tpOrdPx | String | Take-profit order price. |
> slTriggerPx | String | Stop-loss trigger price. |
> slOrdPx | String | Stop-loss order price. |
> triggerPx | String | Trigger price |
> ordPx | String | Order price |
> actualSz | String | Actual order quantity |
> actualPx | String | Actual order price |
> notionalUsd | String | Estimated national value in USD of order |
> tag | String | Order tag |
> actualSide | String | Actual trigger side |
> triggerTime | String | Trigger time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> cTime | String | Creation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> pxVar | String | Price ratio Only applicable to iceberg order or twap order |
> pxSpread | String | Price variance Only applicable to iceberg order or twap order |
> szLimit | String | Average amount Only applicable to iceberg order or twap order |
> pxLimit | String | Price limit Only applicable to iceberg order or twap order |
> timeInterval | String | Time interval Only applicable to twap order |
> count | String | Algo Order count Only applicable to iceberg order or twap order |
> callbackRatio | String | Callback price ratio Only applicable to move_order_stop order |
> callbackSpread | String | Callback price variance Only applicable to move_order_stop order |
> activePx | String | Active price Only applicable to move_order_stop order |
> moveTriggerPx | String | Trigger price Only applicable to move_order_stop order |
> pTime | String | Push time of algo order information, millisecond format of Unix timestamp, e.g. 1597026383085 |
Public channel
Instruments channel
The instruments will be pushed if there is any change to the instrument’s state (such as listing of new trading pairs, trading suspension, etc.).
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "instruments",
"instType": "SPOT"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, instruments |
> instType | String | Yes | Instrument typeSPOT |
Successful Response Example
{
"event": "subscribe",
"arg": {
"channel": "instruments",
"instType": "SPOT"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"instruments\", \"instType\" : \"SPOTT\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instType | String | Yes | Instrument typeSPOT |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example
{
"arg": {
"channel": "instruments",
"instType": "SPOT"
},
"data": [
{
"alias": "",
"baseCcy": "BTC",
"category": "1",
"ctMult": "",
"ctType": "",
"ctVal": "",
"ctValCcy": "",
"expTime": "",
"instFamily": "",
"instId": "BTC-USD",
"instType": "SPOT",
"lever": "",
"listTime": "",
"lotSz": "0.0001",
"maxIcebergSz": "",
"maxLmtSz": "99999999999999",
"maxMktSz": "1000000",
"maxStopSz": "1000000",
"maxTriggerSz": "",
"maxTwapSz": "",
"minSz": "0.0001",
"optType": "",
"quoteCcy": "USD",
"settleCcy": "",
"state": "live",
"stk": "",
"tickSz": "0.01",
"uly": ""
}
]
}
Push data parameters
Parameter | Type | Description |
---|---|---|
arg | Object | Subscribed channel |
> channel | String | Channel name |
> instType | String | Instrument type |
data | Array | Subscribed data |
> instType | String | Instrument type |
> instId | String | Instrument ID, e.g. BTC-USD |
> uly | String | Underlying. Not enabled. Please disregard. |
> instFamily | String | Instrument family. Not enabled. Please disregard. |
> category | String | Fee Schedule. Not enabled. Please disregard. |
> baseCcy | String | Base currency, e.g. BTC in BTC-USD |
> quoteCcy | String | Quote currency, e.g. USD in BTC-USD |
> settleCcy | String | Settlement and margin currency. Not enabled. Please disregard. |
> ctVal | String | Contract value. Not enabled. Please disregard. |
> ctMult | String | Contract multiplier. Not enabled. Please disregard. |
> ctValCcy | String | Contract value currency. Not enabled. Please disregard. |
> optType | String | Option type. Not enabled. Please disregard. |
> stk | String | Strike price. Not enabled. Please disregard. |
> listTime | String | Listing time |
> expTime | String | Expiry time. Not enabled. Please disregard. |
> lever | String | Max Leverage. Not enabled. Please disregard. |
> tickSz | String | Tick size, e.g. 0.0001 |
> lotSz | String | Lot size,e.g. BTC-USD: 1 |
> minSz | String | Minimum order size |
> ctType | String | Contract type, linear : linear contract inverse : inverse contract. Not enabled. Please disregard. |
> alias | String | Alias. Not enabled. Please disregard. |
> state | String | Instrument status live suspend preopen |
> maxLmtSz | String | The maximum order quantity of the spot limit order |
> maxMktSz | String | The maximum order quantity of the spot market order |
> maxTwapSz | String | The maximum order quantity of the spot twap order |
> maxIcebergSz | String | The maximum order quantity of the spot iceBerg order |
> maxTriggerSz | String | The maximum order quantity of the spot trigger order |
> maxStopSz | String | The maximum order quantity of the spot stop order |
Tickers channel
Retrieve the last traded price, bid price, ask price and 24-hour trading volume of instruments.
The fastest rate is 1 update/100ms. There will be no update if the event is not triggered. The events which can trigger update: trade, the change on best ask/bid.
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "tickers",
"instId": "BTC-USD"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, tickers |
> instId | String | Yes | Instrument ID |
Successful Response Example
{
"event": "subscribe",
"arg": {
"channel": "tickers",
"instId": "BTC-USD"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"tickers\", \"instId\" : \"BTC-USDD\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instId | String | Yes | Instrument ID |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example
{
"arg": {
"channel": "tickers",
"instId": "BTC-USD"
},
"data": [
{
"instType": "SPOT",
"instId": "BTC-USD",
"last": "16838.75",
"lastSz": "0.0027",
"askPx": "16838.75",
"askSz": "0.0275",
"bidPx": "16836.5",
"bidSz": "0.0404",
"open24h": "16762.13",
"high24h": "16943.44",
"low24h": "16629.04",
"sodUtc0": "16688.74",
"sodUtc8": "16700.35",
"volCcy24h": "3016898.9552",
"vol24h": "179.6477",
"ts": "1672842446928"
}
]
}
Push data parameters
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> instId | String | Instrument ID |
data | Array | Subscribed data |
> instType | String | Instrument type |
> instId | String | Instrument ID |
> last | String | Last traded price |
> lastSz | String | Last traded size |
> askPx | String | Best ask price |
> askSz | String | Best ask size |
> bidPx | String | Best bid price |
> bidSz | String | Best bid size |
> open24h | String | Open price in the past 24 hours |
> high24h | String | Highest price in the past 24 hours |
> low24h | String | Lowest price in the past 24 hours |
> volCcy24h | String | 24h trading volume, with a unit of currency .The value is the quantity in quote currency. |
> vol24h | String | 24h trading volume, with a unit of contract .The value is the quantity in base currency. |
>sodUtc0 | String | Open price in the UTC 0 |
>sodUtc8 | String | Open price in the UTC 8 |
> ts | String | Ticker data generation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Candlesticks channel
Retrieve the candlesticks data of an instrument. the push frequency is the fastest interval 1 second push the data.
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "candle1D",
"instId": "BTC-USD"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
channel | String | Yes | Channel name candle3M candle1M candle1W candle1D candle2D candle3D candle5D candle12H candle6H candle4H candle2H candle1H candle30m candle15m candle5m candle3m candle1m candle3Mutc candle1Mutc candle1Wutc candle1Dutc candle2Dutc candle3Dutc candle5Dutc candle12Hutc candle6Hutc |
instId | String | Yes | Instrument ID |
Successful Response Example
{
"event": "subscribe",
"arg": {
"channel": "candle1D",
"instId": "BTC-USD"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"candle1D\", \"instId\" : \"BTC-USD-191227\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
channel | String | yes | channel name |
instId | String | Yes | Instrument ID |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example
{
"arg": {
"channel": "candle1m",
"instId": "BTC-USD"
},
"data": [
[
"1672913160000",
"16837.25",
"16837.25",
"16837.25",
"16837.25",
"0.0438",
"737.4716",
"737.4716",
"1"
]
]
}
Push data parameters
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> instId | String | Instrument ID |
data | Array | Subscribed data |
> ts | String | Opening time of the candlestick, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> o | String | Open price |
> h | String | highest price |
> l | String | Lowest price |
> c | String | Close price |
> vol | String | Trading volume, the value is the quantity in base currency. |
> volCcy | String | Trading volume, the value is the quantity in quote currency. |
> volCcyQuote | String | Trading volume, the value is the quantity in quote currency. Not enabled. Please disregard. |
> confirm | String | The state of candlesticks.0 represents that it is uncompleted, 1 represents that it is completed. |
Trades channel
Retrieve the recent trades data. Data will be pushed whenever there is a trade. Every update contain only one trade.
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "trades",
"instId": "BTC-USD"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, trades |
> instId | String | Yes | Instrument ID |
Successful Response Example
{
"event": "subscribe",
"args": {
"channel": "trades",
"instId": "BTC-USD"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"trades\", \"instId\" : \"BTC-USD-191227\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instId | String | Yes | Instrument ID |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example
{
"arg": {
"channel": "trades",
"instId": "BTC-USD"
},
"data": [
{
"instId": "BTC-USD",
"tradeId": "130639474",
"px": "42219.9",
"sz": "0.12060306",
"side": "buy",
"ts": "1630048897897"
}
]
}
Push data parameters
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> instId | String | Instrument ID |
data | Array | Subscribed data |
> instId | String | Instrument ID, e.g. BTC-USD |
> tradeId | String | Trade ID |
> px | String | Trade price |
> sz | String | Trade size |
> side | String | Trade direction, buy , sell |
> ts | String | Filled time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
Order book channel
Retrieve order book data.
Use books
for 400 depth levels, book5
for 5 depth levels, bbo-tbt
tick-by-tick 1 depth level, books50-l2-tbt
tick-by-tick 50 depth levels, and books-l2-tbt
for tick-by-tick 400 depth levels.
books
: 400 depth levels will be pushed in the initial full snapshot. Incremental data will be pushed every 100 ms when there are changes in the order book.books5
: 5 depth levels snapshot will be pushed every time. Snapshot data will be pushed every 100 ms when there are changes in the order book.bbo-tbt
: 1 depth level snapshot will be pushed every time. Snapshot data will be pushed every 10 ms when there are changes in the order book.books-l2-tbt
: 400 depth levels will be pushed in the initial full snapshot. Incremental data will be pushed every 10 ms when there are changes in the order book.books50-l2-tbt
: 50 depth levels will be pushed in the initial full snapshot. Incremental data will be pushed every 10 ms when there are changes in the order book.
Identity verification refers to Login
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "books",
"instId": "BTC-USD"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | Operation, subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, books books5 books50-l2-tbt books-l2-tbt |
> instId | String | Yes | Instrument ID |
Response Example
{
"event": "subscribe",
"arg": {
"channel": "books",
"instId": "BTC-USD"
}
}
Failure example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"books\", \"instId\" : \"BTC-USDC\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | Event, subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name |
> instId | String | Yes | Instrument ID |
msg | String | No | Error message |
code | String | No | Error code |
Push Data Example: Full Snapshot
{
"arg": {
"channel": "books",
"instId": "BTC-USD"
},
"action": "snapshot",
"data": [
{
"asks": [
["8476.98", "415", "0", "13"],
["8477", "7", "0", "2"],
["8477.34", "85", "0", "1"],
["8477.56", "1", "0", "1"],
["8505.84", "8", "0", "1"],
["8506.37", "85", "0", "1"],
["8506.49", "2", "0", "1"],
["8506.96", "100", "0", "2"]
],
"bids": [
["8476.97", "256", "0", "12"],
["8475.55", "101", "0", "1"],
["8475.54", "100", "0", "1"],
["8475.3", "1", "0", "1"],
["8447.32", "6", "0", "1"],
["8447.02", "246", "0", "1"],
["8446.83", "24", "0", "1"],
["8446", "95", "0", "3"]
],
"ts": "1597026383085",
"checksum": -855196043
}
]
}
Push Data Example: Incremental Data
{
"arg": {
"channel": "books",
"instId": "BTC-USD"
},
"action": "update",
"data": [
{
"asks": [
["8476.98", "415", "0", "13"],
["8477", "7", "0", "2"],
["8477.34", "85", "0", "1"],
["8477.56", "1", "0", "1"],
["8505.84", "8", "0", "1"],
["8506.37", "85", "0", "1"],
["8506.49", "2", "0", "1"],
["8506.96", "100", "0", "2"]
],
"bids": [
["8476.97", "256", "0", "12"],
["8475.55", "101", "0", "1"],
["8475.54", "100", "0", "1"],
["8475.3", "1", "0", "1"],
["8447.32", "6", "0", "1"],
["8447.02", "246", "0", "1"],
["8446.83", "24", "0", "1"],
["8446", "95", "0", "3"]
],
"ts": "1597026383085",
"checksum": -855196043
}
]
}
Push data parameters
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
> instId | String | Instrument ID |
action | String | Push data action, incremental data or full snapshot.snapshot : full update : incremental |
data | Array | Subscribed data |
> asks | Array | Order book on sell side |
> bids | Array | Order book on buy side |
> ts | String | Order book generation time, Unix timestamp format in milliseconds, e.g. 1597026383085 |
> checksum | Integer | Checksum, implementation details below |
Checksum
This mechanism can assist users in checking the accuracy of depth data.
Merging incremental data into full data
After subscribing to the incremental load push (such as books
400 levels) of Order Book Channel, users first receive the initial full load of market depth. After the incremental load is subsequently received, update the local full load.
- If there is the same price, compare the size. If the size is 0, delete this depth data. If the size changes, replace the original data.
- If there is no same price, sort by price (bid in descending order, ask in ascending order), and insert the depth information into the full load.
Calculate Checksum
Use the first 25 bids and asks in the full load to form a string (where a colon connects the price and size in an ask or a bid), and then calculate the CRC32 value (32-bit signed integer).
Calculate Checksum
1. More than 25 levels of bid and ask
A full load of market depth (only 2 levels of data are shown here, while 25 levels of data should actually be intercepted):
"bids": [
["3366.1", "7", "0", "3"],
["3366", "6", "3", "4"]
]
"asks": [
["3366.8", "9", "10", "3"],
["3368", "8", "3", "4"]
]
Check string:
"3366.1:7:3366.8:9:3366:6:3368:8"
2. Less than 25 levels of bid or ask
A full load of market depth:
"bids": [
["3366.1", "7", "0", "3"]
]
"asks": [
["3366.8", "9", "10", "3"],
["3368", "8", "3", "4"],
["3372", "8", "3", "4"]
]
Check string:
"3366.1:7:3366.8:9:3368:8:3372:8"
- When the bid and ask depth data exceeds 25 levels, each of them will intercept 25 levels of data, and the string to be checked is queued in a way that the bid and ask depth data are alternately arranged.
Such as:bid[price:size]
:ask[price:size]
:bid[price:size]
:ask[price:size]
... - When the bid or ask depth data is less than 25 levels, the missing depth data will be ignored.
Such as:bid[price:size]
:ask[price:size]
:asks[price:size]
:asks[price:size]
...
Status channel
Get the status of system maintenance and push when the system maintenance status changes. First subscription: "Push the latest change data"; every time there is a state change, push the changed content
Request Example
{
"op": "subscribe",
"args": [
{
"channel": "status"
}
]
}
Request parameters
Parameter | Type | Required | Description |
---|---|---|---|
op | String | Yes | subscribe unsubscribe |
args | Array | Yes | List of subscribed channels |
> channel | String | Yes | Channel name, status |
Successful Response Example
{
"event": "subscribe",
"arg": {
"channel": "status"
}
}
Failure Response Example
{
"event": "error",
"code": "60012",
"msg": "Invalid request: {\"op\": \"subscribe\", \"argss\":[{ \"channel\" : \"statuss\"}]}"
}
Response parameters
Parameter | Type | Required | Description |
---|---|---|---|
event | String | Yes | subscribe unsubscribe error |
arg | Object | No | Subscribed channel |
> channel | String | Yes | Channel name, status |
code | String | No | Error code |
msg | String | No | Error message |
Push Data Example
{
"arg": {
"channel": "status"
},
"data": [{
"title": "Spot System Upgrade",
"state": "scheduled",
"begin": "1610019546",
"href": "",
"end": "1610019546",
"serviceType": "1",
"system": "classic",
"scheDesc": "",
"ts": "1597026383085"
}]
}
Push data parameters
Parameter | Type | Description |
---|---|---|
arg | Object | Successfully subscribed channel |
> channel | String | Channel name |
data | Array | Subscribed data |
> title | String | The title of system maintenance instructions |
> state | String | System maintenance status,scheduled : waiting; ongoing : processing; pre_open : pre_open; completed : completed ;canceled : canceled. Generally, pre_open last about 10 minutes. There will be pre_open when the time of upgrade is too long. |
> begin | String | Start time of system maintenance, Unix timestamp format in milliseconds, e.g. 1617788463867 |
> end | String | Time of resuming trading totally. Unix timestamp format in milliseconds, e.g. 1617788463867 .It is expected end time before completed , changed to actual end time after completed . |
> preOpenBegin | String | The time of pre_open. Canceling orders, placing Post Only orders, and transferring funds to trading accounts are back after preOpenBegin . |
> href | String | Hyperlink for system maintenance details, if there is no return value, the default value will be empty. e.g. “” |
> serviceType | String | Service type, 0 :WebSocket ; 1 :Classic account 5 :Unified account; 99 : Others (e.g. Suspend partial instruments) |
> system | String | System, classic : Classic account unified : Unified account |
> scheDesc | String | Rescheduled description, e.g. Rescheduled from 2021-01-26T16:30:00.000Z to 2021-01-28T16:30:00.000Z |
> ts | String | Push time, Unix timestamp format in milliseconds, e.g. 1617788463867 |
Error Code
Here is the REST API Error Code
REST
REST API Error Code is from 50000 to 59999.
Public
Error Code from 50000 to 53999
General Class
Error Code | HTTP Status Code | Error Message |
---|---|---|
0 | 200 | |
1 | 200 | Operation failed. |
2 | 200 | Bulk operation partially succeeded. |
50000 | 400 | Body cannot be empty. |
50001 | 503 | Service temporarily unavailable, please try again later. |
50002 | 400 | Json data format error. |
50004 | 400 | Endpoint request timeout (does not mean that the request was successful or failed, please check the request result). |
50005 | 410 | API is offline or unavailable. |
50006 | 400 | Invalid Content_Type, please use "application/json" format. |
50007 | 200 | Account blocked. |
50008 | 200 | User does not exist. |
50009 | 200 | Account is suspended due to ongoing liquidation. |
50010 | 200 | User ID cannot be empty. |
50011 | 429 | Requests too frequent. |
50012 | 200 | Account status invalid. |
50013 | 429 | System is busy, please try again later. |
50014 | 400 | Parameter {0} cannot be empty. |
50015 | 400 | Either parameter {0} or {1} is required. |
50016 | 400 | Parameter {0} does not match parameter {1}. |
50024 | 200 | Parameter {0} and {1} cannot exist at the same time. |
50025 | 200 | Parameter {0} count exceeds the limit {1}. |
50026 | 500 | System error, please try again later. |
50027 | 200 | The account is restricted from trading. |
50028 | 200 | Unable to take the order, please reach out to support center for details. |
50029 | 200 | This instrument ({0}) is unavailable at present due to risk management. Please contact customer service for help. |
50030 | 200 | No permission to use this API |
50032 | 200 | This asset is blocked, allow its trading and try again |
50033 | 200 | This instrument is blocked, allow its trading and try again |
50035 | 403 | This endpoint requires that APIKey must be bound to IP |
50036 | 200 | Invalid expTime |
50037 | 200 | Order expired |
50038 | 200 | This feature is temporarily unavailable in demo trading |
50039 | 200 | The before parameter is not available for implementing timestamp pagination |
50041 | 200 | You are not currently on the whitelist, please contact customer service |
API Class
Error Code | HTTP Status Code | Error Message |
---|---|---|
50100 | 400 | API frozen, please contact customer service. |
50101 | 401 | APIKey does not match current environment. |
50102 | 401 | Timestamp request expired. |
50103 | 401 | Request header "OK-ACCESS-KEY" cannot be empty. |
50104 | 401 | Request header "OK-ACCESS-PASSPHRASE" cannot be empty. |
50105 | 401 | Request header "OK-ACCESS-PASSPHRASE" incorrect. |
50106 | 401 | Request header "OK-ACCESS-SIGN" cannot be empty. |
50107 | 401 | Request header "OK-ACCESS-TIMESTAMP" cannot be empty. |
50108 | 401 | Exchange ID does not exist. |
50109 | 401 | Exchange domain does not exist. |
50110 | 401 | Your IP {0} is not included in your API key's IP whitelist. |
50111 | 401 | Invalid OK-ACCESS-KEY. |
50112 | 401 | Invalid OK-ACCESS-TIMESTAMP. |
50113 | 401 | Invalid signature. |
50114 | 401 | Invalid authorization. |
50115 | 405 | Invalid request method. |
Trade Class
Error Code | HTTP Status code | Error Message |
---|---|---|
51000 | 400 | Parameter {0} error. |
51001 | 200 | Instrument ID does not exist. |
51003 | 200 | Either client order ID or order ID is required. |
51005 | 200 | Order amount exceeds the limit. |
51006 | 200 | Order price is not within the price limit (max buy price: {0} min sell price: {1}) |
51008 | 200 | Order failed. Insufficient {0} balance in account |
51008 | 200 | Order failed. Insufficient account balance, and the adjusted equity in USD is less than IMR |
51008 | 200 | Order failed. Insufficient account balance |
51009 | 200 | Order placement function is blocked by the platform. |
51010 | 200 | Operation is not supported under the current account mode. |
51011 | 200 | Duplicated order ID. |
51012 | 200 | Token does not exist. |
51014 | 200 | Index does not exist. |
51015 | 200 | Instrument ID does not match instrument type. |
51016 | 200 | Duplicated client order ID. |
51020 | 200 | Order amount should be greater than the min available amount. |
51023 | 200 | Position does not exist. |
51024 | 200 | Trading account is blocked. |
51025 | 200 | Order count exceeds the limit. |
51026 | 200 | Instrument type does not match underlying index. |
51030 | 200 | Funding fee is being settled. |
51031 | 200 | This order price is not within the closing price range. |
51032 | 200 | Closing all positions at market price. |
51033 | 200 | The total amount per order for this pair has reached the upper limit. |
51037 | 200 | The current account risk status only supports you to place IOC orders that can reduce the risk of your account. |
51038 | 200 | There is already an IOC order under the current risk module that reduces the risk of the account. |
51044 | 200 | The order type {0}, {1} is not allowed to set stop loss and take profit |
51046 | 200 | The take profit trigger price should be higher than the order price |
51047 | 200 | The stop loss trigger price should be lower than the order price |
51048 | 200 | The take profit trigger price should be lower than the order price |
51049 | 200 | The stop loss trigger price should be higher than the order price |
51050 | 200 | The take profit trigger price should be higher than the best ask price |
51051 | 200 | The stop loss trigger price should be lower than the best ask price |
51052 | 200 | The take profit trigger price should be lower than the best bid price |
51053 | 200 | The stop loss trigger price should be higher than the best bid price |
51054 | 500 | Getting information timed out, please try again later |
51056 | 200 | Action not allowed |
51058 | 200 | No available position for this algo order |
51059 | 200 | Strategy for the current state does not support this operation |
51101 | 200 | Entered amount exceeds the max pending order amount (Cont) per transaction. |
51103 | 200 | Entered amount exceeds the max pending order count of the underlying asset. |
51104 | 200 | Entered amount exceeds the max pending order amount (Cont) of the underlying asset. |
51106 | 200 | Entered amount exceeds the max order amount (Cont) of the underlying asset. |
51107 | 200 | Entered amount exceeds the max holding amount (Cont). |
51109 | 200 | No available offer. |
51110 | 200 | You can only place a limit order after Call Auction has started. |
51111 | 200 | Maximum {0} orders can be placed in bulk. |
51112 | 200 | Close order size exceeds your available size. |
51113 | 429 | Market-price liquidation requests too frequent. |
51115 | 200 | Cancel all pending close-orders before liquidation. |
51116 | 200 | Order price or trigger price exceeds {0}. |
51117 | 200 | Pending close-orders count exceeds limit. |
51120 | 200 | Order quantity is less than {0}, please try again. |
51121 | 200 | Order count should be the integer multiples of the lot size. |
51122 | 200 | Order price should be higher than the min price {0}. |
51124 | 200 | You can only place limit orders during call auction. |
51127 | 200 | Available balance is 0. |
51129 | 200 | The value of the position and buy order has reached the position limit, and no further buying is allowed. |
51131 | 200 | Insufficient balance. |
51132 | 200 | Your position amount is negative and less than the minimum trading amount. |
51134 | 200 | Closing position failed. Please check your holdings and pending orders. |
51135 | 200 | Your closing price has triggered the limit price, and the max buy price is {0}. |
51136 | 200 | Your closing price has triggered the limit price, and the min sell price is {0}. |
51137 | 200 | Your opening price has triggered the limit price, and the max buy price is {0}. |
51138 | 200 | Your opening price has triggered the limit price, and the min sell price is {0}. |
51139 | 200 | Reduce-only feature is unavailable for the spot transactions by simple account. |
51143 | 200 | There is no valid quotation in the market, and the order cannot be filled in USDT mode, please try to switch to currency mode |
51148 | 200 | ReduceOnly cannot increase the position quantity. |
51149 | 500 | Order timed out, please try again later. |
51150 | 200 | The precision of the number of trades or the price exceeds the limit. |
51201 | 200 | Value of per market order cannot exceed 1,000,000 USDT. |
51202 | 200 | Market - order amount exceeds the max amount. |
51203 | 200 | Order amount exceeds the limit {0}. |
51204 | 200 | The price for the limit order cannot be empty. |
51205 | 200 | Reduce-Only is not available. |
51206 | 200 | Please cancel the Reduce Only order before placing the current {0} order to avoid opening a reverse position. |
51250 | 200 | Algo order price is out of the available range. |
51251 | 200 | Algo order type error (when user place an iceberg order). |
51252 | 200 | Algo order amount is out of the available range. |
51253 | 200 | Average amount exceeds the limit of per iceberg order. |
51254 | 200 | Iceberg average amount error (when user place an iceberg order). |
51255 | 200 | Limit of per iceberg order: Total amount/1000 < x <= Total amount. |
51256 | 200 | Iceberg order price variance error. |
51257 | 200 | Trail order callback rate error. |
51258 | 200 | Trail - order placement failed. The trigger price of a sell order should be higher than the last transaction price. |
51259 | 200 | Trail - order placement failed. The trigger price of a buy order should be lower than the last transaction price. |
51260 | 200 | Maximum {0} pending trail - orders can be held at the same time. |
51261 | 200 | Each user can hold up to {0} pending stop - orders at the same time. |
51262 | 200 | Maximum {0} pending iceberg orders can be held at the same time. |
51263 | 200 | Maximum {0} pending time-weighted orders can be held at the same time. |
51264 | 200 | Average amount exceeds the limit of per time-weighted order. |
51265 | 200 | Time-weighted order limit error. |
51267 | 200 | Time-weighted order strategy initiative rate error. |
51268 | 200 | Time-weighted order strategy initiative range error. |
51269 | 200 | Time-weighted order interval error, the interval should be {0}<= x<={1}. |
51270 | 200 | The limit of time-weighted order price variance is 0 < x <= 1%. |
51271 | 200 | Sweep ratio should be 0 < x <= 100%. |
51272 | 200 | Price variance should be 0 < x <= 1%. |
51273 | 200 | Total amount should be more than {0}. |
51274 | 200 | Total quantity of time-weighted order must be larger than single order limit. |
51275 | 200 | The amount of single stop-market order cannot exceed the upper limit. |
51276 | 200 | Stop - Market orders cannot specify a price. |
51277 | 200 | TP trigger price cannot be higher than the last price. |
51278 | 200 | SL trigger price cannot be lower than the last price. |
51279 | 200 | TP trigger price cannot be lower than the last price. |
51280 | 200 | SL trigger price cannot be higher than the last price. |
51281 | 200 | trigger not support the tgtCcy parameter. |
51282 | 200 | The range of Price variance is {0}~{1} |
51283 | 200 | The range of Time interval is {0}~{1} |
51284 | 200 | The range of Average amount is {0}~{1} |
51285 | 200 | The range of Total amount is {0}~{1} |
51286 | 200 | The total amount should not be less than {0} |
51288 | 200 | We are stopping the Bot. Please do not click it multiple times |
51289 | 200 | Bot configuration does not exist. Please try again later |
51290 | 200 | The Bot engine is being upgraded. Please try again later |
51291 | 200 | This Bot does not exist or has been stopped |
51292 | 200 | This Bot type does not exist |
51293 | 200 | This Bot does not exist |
51294 | 200 | This Bot cannot be created temporarily. Please try again later |
51299 | 200 | Order did not go through. You can hold maximum {0} orders of this type |
51300 | 200 | TP trigger price cannot be higher than the mark price |
51302 | 200 | SL trigger price cannot be lower than the mark price |
51303 | 200 | TP trigger price cannot be lower than the mark price |
51304 | 200 | SL trigger price cannot be higher than the mark price |
51305 | 200 | TP trigger price cannot be higher than the index price |
51306 | 200 | SL trigger price cannot be lower than the index price |
51307 | 200 | TP trigger price cannot be lower than the index price |
51308 | 200 | SL trigger price cannot be higher than the index price |
51309 | 200 | Cannot create trading bot during call auction |
51311 | 200 | Failed to place trailing stop order. Callback rate should be within {0}<x<={1} |
51312 | 200 | Failed to place trailing stop order. Order amount should be within {0}<x<={1} |
51313 | 200 | Manual transfer in isolated mode does not support bot trading |
51341 | 200 | Position closing not allowed |
51342 | 200 | Closing order already exists. Please try again later |
51343 | 200 | TP price must be less than the lower price |
51344 | 200 | SL price must be greater than the upper price |
51345 | 200 | Policy type is not grid policy |
51346 | 200 | The highest price cannot be lower than the lowest price |
51347 | 200 | No profit available |
51348 | 200 | Stop loss price should be less than the lower price in the range |
51349 | 200 | Stop profit price should be greater than the highest price in the range |
51350 | 200 | No recommended parameters |
51351 | 200 | Single income must be greater than 0 |
51400 | 200 | Cancelation failed as the order does not exist. |
51401 | 200 | Cancelation failed as the order is already canceled. |
51402 | 200 | Cancelation failed as the order is already completed. |
51403 | 200 | Cancelation failed as the order type does not support cancelation. |
51404 | 200 | Order cancelation unavailable during the second phase of call auction. |
51405 | 200 | Cancelation failed as you do not have any pending orders. |
51406 | 400 | Canceled - order count exceeds the limit {0}. |
51407 | 200 | Either order ID or client order ID is required. |
51408 | 200 | Pair ID or name does not match the order info. |
51409 | 200 | Either pair ID or pair name ID is required. |
51410 | 200 | Cancelation pending. Duplicate order rejected. |
51411 | 200 | Account does not have permission for mass cancelation. |
51412 | 200 | The order has been triggered and cannot be canceled. |
51413 | 200 | Cancelation failed as the order type is not supported by endpoint. |
51415 | 200 | Unable to place order. Spot trading only supports using the last price as trigger price. Please select "Last" and try again. |
51500 | 200 | Either order price or amount is required. |
51501 | 400 | Maximum {0} orders can be modified. |
51503 | 200 | Order modification failed as the order does not exist. |
51506 | 200 | Order modification unavailable for the order type. |
51508 | 200 | Orders are not allowed to be modified during the call auction. |
51509 | 200 | Modification failed as the order has been canceled. |
51510 | 200 | Modification failed as the order has been completed. |
51511 | 200 | Operation failed as the order price did not meet the requirement for Post Only. |
51512 | 200 | Failed to amend orders in batches. You cannot have duplicate orders in the same amend-batch-orders request. |
51513 | 200 | Number of modification requests that are currently in progress for an order cannot exceed 3. |
51600 | 200 | Status not found. |
51601 | 200 | Order status and order ID cannot exist at the same time. |
51602 | 200 | Either order status or order ID is required. |
51603 | 200 | Order does not exist. |
51607 | 200 | The file is generating. |
Data class
Error Code | HTTP Status Code | Error Message |
---|---|---|
52000 | 200 | No market data found. |
Spot
Error Code from 54000 to 54999
Error Code | HTTP Status Code | Error Message |
---|---|---|
54000 | 200 | Margin trading is not supported. |
Funding
Error Code from 58000 to 58999
Error Code | HTTP Status Code | Error Message |
---|---|---|
58002 | 200 | Please activate Savings Account first. |
58003 | 200 | Currency type is not supported by Savings Account. |
58004 | 200 | Account blocked |
58005 | 200 | The purchase/redeemed amount must be no greater than {0}. |
58006 | 200 | Service unavailable for token {0}. |
58007 | 200 | Abnormal Assets interface. Please try again later. |
58008 | 200 | You do not have assets in this currency. |
58009 | 200 | Currency pair do not exist. |
58010 | 200 | The chain {0} is not supported. |
58011 | 200 | Sorry, we are unable to provide services to unverified users in {Region} due to local laws and regulations. Please verify your account in order to use the services. |
58012 | 200 | Sorry, you can't transfer assets to this recipient as Okcoin are unable to provide services to unverified users in {region} due to local laws and regulations. |
58100 | 200 | The trading product triggers risk control, and the platform has suspended the fund transfer-out function with related users. Please wait patiently. |
58101 | 200 | Transfer suspended |
58102 | 429 | Too frequent transfer (transfer too frequently). |
58104 | 200 | Since your P2P transaction is abnormal, you are restricted from making fund transfers. Please contact customer support to remove the restriction. |
58105 | 200 | Since your P2P transaction is abnormal, you are restricted from making fund transfers. Please transfer funds on our website or app to complete identity verification. |
58112 | 200 | Your fund transfer failed. Please try again later. |
58114 | 400 | Transfer amount must be more than 0. |
58115 | 200 | Sub-account does not exist. |
58116 | 200 | Transfer amount exceeds the limit. |
58117 | 200 | Account assets are abnormal, please deal with negative assets before transferring. |
58119 | 200 | {0} Sub-account has no permission to transfer out, please set first. |
58120 | 200 | The transfer service is temporarily unavailable, please try again later. |
58121 | 200 | This transfer will result in a high-risk level of your position, which may lead to forced liquidation. You need to re-adjust the transfer amount to make sure the position is at a safe level before proceeding with the transfer. |
58123 | 200 | Parameter from cannot equal to parameter to. |
58124 | 200 | Your transfer is being processed, transfer id:{trId}. Please check the latest state of your transfer from the endpoint (GET /api/v5/asset/transfer-state) |
58200 | 200 | Withdrawal from {0} to {1} is currently not supported for this currency. |
58201 | 200 | Withdrawal amount exceeds the daily limit. |
58202 | 200 | The minimum withdrawal amount for NEO is 1, and the amount must be an integer. |
58203 | 200 | Please add a withdrawal address. |
58204 | 200 | Withdrawal suspended. |
58205 | 200 | Withdrawal amount exceeds the upper limit. |
58206 | 200 | Withdrawal amount is less than the lower limit. |
58207 | 200 | Withdrawal address is not in the verification-free whitelist. |
58208 | 200 | Withdrawal failed. Please link your email. |
58209 | 200 | Sub-accounts cannot be deposits or withdrawals |
58210 | 200 | Withdrawal fee exceeds the upper limit. |
58211 | 200 | Withdrawal fee is lower than the lower limit (withdrawal endpoint: incorrect fee). |
58212 | 200 | Withdrawal fee should be {0}% of the withdrawal amount. |
58213 | 200 | Please set a trading password before withdrawing. |
58214 | 200 | Withdrawals suspended due to {chainName} maintenance |
58215 | 200 | Withdrawal ID does not exist. |
58216 | 200 | Operation not allowed. |
58217 | 200 | You cannot withdraw your asset at the moment due to a risk detected in your withdrawal address, contact customer support for details. |
58218 | 200 | Your saved withdrawal account has expired. |
58220 | 200 | The withdrawal order is already canceled. |
58221 | 200 | Missing label of withdrawal address. |
58222 | 200 | Temporarily unable to process withdrawal address. |
58224 | 200 | This type of coin does not support on-chain withdrawals. Please use internal transfers. |
58225 | 200 | Sorry, you can't transfer assets to this recipient as Okcoin are unable to provide services to unverified users in {region} due to local laws and regulations. |
58226 | 200 | {chainName} is delisted and not available for crypto withdrawal. |
58300 | 200 | Deposit-address count exceeds the limit. |
58301 | 200 | Deposit-address not exist. |
58302 | 200 | Deposit-address needs tag. |
58303 | 200 | Deposit for the chain {0} is closed now. |
58304 | 200 | Failed to create invoice. |
58350 | 200 | Insufficient balance. |
58351 | 200 | Invoice expired. |
58352 | 200 | Invalid invoice. |
58353 | 200 | Deposit amount must be within limits. |
58354 | 200 | You have reached the limit of 10,000 invoices per day. |
58355 | 200 | Permission denied. Please contact your account manager. |
58356 | 200 | The accounts of the same node do not support the Lightning network deposit or withdrawal. |
58357 | 200 | {0} is not allowed to create a deposit address |
58358 | 200 | fromCcy should not be the same as toCcy |
58370 | 200 | The daily usage of small assets convert exceeds the limit. |
58371 | 200 | Small assets exceed the maximum limit. |
58372 | 200 | Insufficient small assets. |
Account
Error Code from 59000 to 59999
Error Code | HTTP Status Code | Error Message |
---|---|---|
59000 | 200 | Your settings failed as you have positions or open orders. |
59002 | 200 | Sub-account settings failed as it has positions, open orders, or trading bots. |
59004 | 200 | Only IDs with the same instrument type are supported |
59110 | 200 | The instrument type corresponding to this {0} does not support the tgtCcy parameter. |
59200 | 200 | Insufficient account balance. |
59201 | 200 | Negative account balance. |
59401 | 200 | Holdings already reached the limit. |
59402 | 200 | None of the passed instId is in live state, please check them separately. |
59500 | 200 | Only the APIKey of the main account has permission. |
59501 | 200 | Only 50 APIKeys can be created per account. |
59502 | 200 | Note name cannot be duplicate with the currently created APIKey note name. |
59503 | 200 | Each APIKey can bind up to 20 IP addresses. |
59504 | 200 | The sub account does not support the withdrawal function. |
59505 | 200 | The passphrase format is incorrect. |
59506 | 200 | APIKey does not exist. |
59507 | 200 | The two accounts involved in a transfer must be two different sub accounts under the same parent account. |
59508 | 200 | The sub account of {0} is suspended. |
59510 | 200 | Sub-account does not exist |
59601 | 200 | This sub-account name already exists, try another name |
59602 | 200 | Number of API keys exceeds the limit |
59603 | 200 | Number of sub accounts exceeds the limit |
59604 | 200 | Only the main account APIkey can access this API |
59605 | 200 | This API key does not exist in your sub-account, try another API key |
59606 | 200 | Transfer funds to your main account before deleting your sub-account |
59612 | 200 | Cannot convert time format |
59613 | 200 | There is currently no escrow relationship established with the sub account |
59614 | 200 | Managed sub account do not support this operation |
59615 | 200 | The time interval between the begin date and end date cannot exceed 180 days. |
59616 | 200 | Begin date cannot be greater than end date. |
59617 | 200 | Sub-account created. Failed to set up account level. |
59618 | 200 | Failed to create sub-account. |
WebSocket
Public
Error Code from 60000 to 63999
General Class
Error Code | Error Message |
---|---|
60001 | "OK-ACCESS-KEY" can not be empty. |
60002 | "OK-ACCESS-SIGN" can not be empty. |
60003 | "OK-ACCESS-PASSPHRASE" can not be empty. |
60004 | Invalid OK-ACCESS-TIMESTAMP. |
60005 | Invalid OK-ACCESS-KEY. |
60006 | Timestamp request expired. |
60007 | Invalid sign. |
60008 | The current WebSocket endpoint does not support subscribing to {0} channels. Please check the WebSocket URL |
60009 | Login failed. |
60011 | Please log in. |
60012 | Invalid request. |
60013 | Invalid args. |
60014 | Requests too frequent. |
60015 | Connection closed as there was no data transmission in the last 30 seconds. |
60016 | Buffer is full, cannot write data. |
60017 | Invalid url path. |
60018 | The {0} {1} {2} {3} {4} does not exist. |
60019 | Invalid op {op} |
60020 | APIKey subscription amount exceeds the limit {0} |
60021 | This operation does not support multiple accounts login |
60022 | Bulk login partially succeeded |
60023 | Bulk login requests too frequent |
60024 | Wrong passphrase |
60025 | token subscription amount exceeds the limit {0} |
60026 | Batch login by APIKey and token simultaneously is not supported. |
60027 | Parameter {0} can not be empty. |
60028 | The current WebSocket endpoint does not support trading. Please check the WebSocket URL. |
60029 | Only users who're VIP4 and above can subscribe to books-l2-tbt order book channels |
60030 | Only users who're VIP4 and above can subscribe to books50-l2-tbt order book channels |
63999 | Internal system error. |