Introduction
Welcome to the NovaDAX API
NovaDAX provides a series of API documents aiming to deliver a faster, more secure and professional trading experience to customers. You can use our API to access all market data, trading, order history and account management endpoints.
NovaDAX API endpoints can be accessed by customers in an easy and practical way and we are optimizing our SDK continuously.
Before You Start
Create An Account on NovaDAX
If you haven't signed up on NovaDAX, please click here to create an account to start your exclusive trading experience on NovaDAX.
Create An API key
Before being able to sign any requests, you should first acquire an API AccessKey and the corresponding SecretKey. After login on NovaDAX, you can find the user icon at the top menu bar and click on "API Key and Sub Account" to create you API Key.
API Access
NovaDAX API endpoints are divided into public endpoints and private endpoints.
Public endpoints
Public endpoints don't require authentication for: * Basic information * Market data
PRIVATE endpoints
Private endpoint can only be accessed with authentication for: * Orders * Account * Wallet
Access URLs
https://api.novadax.com
Endpoint Rate Limits
- Each API is assigned a corresponding weight, and the weight value is directly proportional to the resource consumption.
- Every API will return an X-Nova-Weight-Used response header in the response so that you can understand the current consumed weight.
- The total available weight per minute is 6000. When the available weight is exhausted, you will receive an HTTP 429 error.
- For public APIs, weight statistics are based on IP addresses, while for private APIs, they are based on UIDs.
Signature
To protect API communication from unauthorized changes, all private endpoints calls are required to be signed with your API AccessKey.
A valid request should follow the rules below:
Request domain should be
api.novadax.com
. For example,https://api.novadax.com/v1/common/symbols
.AccessKeyId: your API
AccessKey
Signature Method: apply
HMAC-SHA256
hash functionTimestamp: the current system time in milliseconds, for example, 1564988445199.
Mandatory and and optional parameters: there are several mandatory and optional parameters for accessing each endpoint. You can check the meaning of these parameters in the description of each API.
Signature: encrypted message to prevent from transport and unauthorized changes.
Signature Method
Steps to sign a GET request
1. Query string is
queryStr = "name=joao&cpf=123456&birthday=2017-08-01"
2. Encode the query string and sort parameter name following ASCII order.
sort(urlencode(queryStr)) // birthday=2017-08-01&cpf=123456&name=joao
3. Generate the "Query String" as format {Request Method}\n{Request URL}\n{Sorted Query Parameters}\n{TimeStamp}
signStr = GET\n/v1/orders/get\nbirthday=2017-08-01&cpf=123456&name=joao\n1564988445199
4. Use the string generated in step 3 and your "SecretKey" to create a signature
sign = hmac_sha256(signStr,SecretKey)
5. Add Accesskey
, Signature
and TimeStamp
to the header of quest
request.header.add("X-Nova-Access-Key",AccessKey)
request.header.add("X-Nova-Signature",Sign)
request.header.add("X-Nova-Timestamp",TimeStamp)
6. Example of authentication GET in Java
Steps to sign a POST request
1. The request body is
body = {"name":"joao","cpf":"123456","birthday":"2017-08-01"} // MD5 value is 7d8f374d786079cfade9d1c2a358137c
2. Generate the MD5 hashed "Request body" as format "{Request Method}\n{Request URL}\n{MD5 Request Body}\n{TimeStamp}"
signStr = POST\n/v1/order/create\n7d8f374d786079cfade9d1c2a358137c\n1564988445199
3. Use "Request String" generated in step 2 and your "SecretKey" to create a signature
sign = hmac_sha256(signStr,SecretKey)
4. Add Accesskey
, Signature
and TimeStamp
to the header of quest
request.header.add("X-Nova-Access-Key",AccessKey)
request.header.add("X-Nova-Signature",Sign)
request.header.add("X-Nova-Timestamp",TimeStamp)
5. Example of authentication POST in Java
Sub Account
If you need to perform order-related operations using a sub-account, please add the 'X-Nova-Account-Id' request header to your request and set its value to the corresponding sub-account ID.
request.header.add("X-Nova-Account-Id", "CA1234567890")
Response Format
All response will be returned in JSON format. The top level JSON is a wrapper object which provides three meta data in "code", "data" and "message". The actual per API response is in "data" field.
Response to successful request
{
"code": "A10000",
"data": {...},
"message": "Success"
}
Response to failed request
{
"code": "A99999",
"data": {...},
"message": "fail."
}
Response Format:
Field | Data Type | Description |
---|---|---|
code | string | The status returned by API endpoint |
message | string | The simplified response |
data | object | The data content if available |
Response Code Details
Code | HTTP Status Code | Message | Description |
---|---|---|---|
A99999 | 500 | Failed | Internal error |
A10000 | 200 | Success | Successful request |
A10001 | 400 | Params error |
Parameter is invalid |
A10002 | 404 | Api not found |
API used is irrelevant |
A10003 | 403 | Authentication failed |
Authentication is failed |
A10004 | 429 | Too many requests |
Too many requests are made |
A10005 | 403 | Kyc required |
Need to complete KYC firstly |
A10006 | 403 | Customer canceled |
Account is canceled |
A10007 | 400 | Account not exist |
Sub account does not exist |
A10011 | 400 | Symbol not exist |
Trading symbol does not exist |
A10012 | 400 | Symbol not trading |
Trading symbol is temporarily not available |
A10013 | 503 | Symbol maintain |
Trading symbol is in maintain |
A30001 | 400 | Order not found |
Queried order is not found |
A30002 | 400 | Order amount is too small |
Order amount is too small |
A30003 | 400 | Order amount is invalid |
Order amount is invalid |
A30004 | 400 | Order value is too small |
Order value is too small |
A30005 | 400 | Order value is invalid |
Order value is invalid |
A30006 | 400 | Order price is invalid |
Order price is invalid |
A30007 | 400 | Insufficient balance |
The balance is insufficient |
A30008 | 400 | Order was closed |
The order has been executed |
A30009 | 400 | Order canceled |
The order has been cancelled |
A30010 | 400 | Order cancelling |
The order is being cancelled |
A30011 | 400 | Order price too high |
The order price is too high |
A30012 | 400 | Order price too low |
The order price is too low |
FAQ
Failure in authentication
- Make sure the API AccessKey is valid and correctly input and the used IP has been whitelisted.
- Make sure the timestamp is adjusted to UTC time zone.
- Make sure the encoded parameters are sorted following ASCII order.
Make sure the encoding format is
utf-8
.Make sure the GET request is submitted as HTTP form.
Make sure the POST request is made in JSON format.
Make sure the signature is encoded.
Make sure you have set
Content-Type:application/json
in header of POST request.
Changelog
2023-11-15
- Optimized rate limiting logic to grant each sub-account an independent request frequency limit.
- Added support for passing sub-account operations, such as order management, through the
X-Nova-Account-Id
header in requests. - Modified
POST /v1/orders/create
: Added theclientOrderId
field. - Modified
POST /v1/orders/cancel
: Added theclientOrderId
field. - Modified
GET /v1/orders/get
: Added theclientOrderId
field. - Modified
GET /v1/orders/list
: Added theclientOrderId
field. - Added
POST /v1/orders/batch-create
: Enables batch order placement. - Added
POST /v1/orders/batch-cancel
: Allows bulk order cancellation. - Added
POST /v1/orders/cancel-by-symbol
: Permits the cancellation of all orders based on a trading pair.
2023-09-12
- In the frequency restriction logic adjustment, we no longer rely on individual API-based rate limiting; instead, we implement an overall weight-based limitation.
2021-01-30
- Modified
GET /crypto/chain/{code}
: Added thechainAlias
return field. - Modified
POST /v1/wallet/withdraw/coin
: Added the request parameterchainAlias
.
2020-12-17
- Affects API order query functionality created: Cannot query within 2 hours after cancellation, relevant interfaces as follows:
GET /v1/orders/get
GET /v1/orders/list
2020-11-11
- Added WebSocket-related interfaces.
2020-10-12
- Added
GET /v1/wallet/query/deposit-withdraw
: Query user deposit and withdrawal records. - Added
GET /v1/orders/fills
: Query historical trade details.
2020-05-20
- Modified
GET /v1/orders/list
: Changed thesymbol
parameter to optional.
2020-03-05
- Added
GET /v1/common/symbol
: Get configuration for a single trading pair.
2019-12-05
- Modified
POST /v1/orders/create
: Added theaccountId
field. - Modified
GET /v1/orders/list
: Added the sub-accountaccountId
field. - Added
GET /v1/account/subs
: Get a list of sub-accounts. - Added
GET /v1/account/subs/balance
: Check sub-account balances. - Added
GET /v1/account/subs/transfer/record
: Query sub-account transfer records. - Added
POST /v1/account/subs/transfer
: Initiate sub-account transfers.
2019-09-18
- Added
POST /v1/account/withdraw/coin
: Withdraw funds.
Basic Information
Get One Supported Trading Symbol
This endpoint returns one NovaDAX's supported trading symbol
Response Body
{
"code": "A10000",
"data": {
"symbol": "BTC_BRL",
"baseCurrency": "BTC",
"quoteCurrency": "BRL",
"amountPrecision": 4,
"pricePrecision": 2,
"valuePrecision": 4,
"minOrderAmount": "0.001",
"minOrderValue": "5"
},
"message": "Success"
}
Request URL
GET /v1/common/symbol
Weight: 1
Request Parameter
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
Response Details
Field | Data Type | Description |
---|---|---|
symbol | string | Trading symbol |
baseCurrency | string | Base currency in a trading symbol |
quoteCurrency | string | Quote currency in a trading symbol |
pricePrecision | number | Price precision |
amountPrecision | number | Amount precision |
valuePrecision | number | Value precision |
minOrderAmount | string | Minimum order amount |
minOrderValue | string | Minimum order value |
Get All Supported Trading Symbol
This endpoint returns all NovaDAX's supported trading symbols
Response Body
{
"code": "A10000",
"data": [
{
"symbol": "BTC_BRL",
"baseCurrency": "BTC",
"quoteCurrency": "BRL",
"amountPrecision": 4,
"pricePrecision": 2,
"valuePrecision": 4,
"minOrderAmount": "0.001",
"minOrderValue": "5",
},
{
"symbol": "ETH_BRL",
"baseCurrency": "ETH",
"quoteCurrency": "BRL",
"amountPrecision": 4,
"pricePrecision": 2,
"valuePrecision": 4,
"minOrderAmount": "0.01",
"minOrderValue": "5"
}
],
"message": "Success"
}
Request URL
GET /v1/common/symbols
Weight: 1
Request Parameters
No parameter is needed for this endpoint.
Response Details
Field | Data Type | Description |
---|---|---|
symbol | string | Trading symbol |
baseCurrency | string | Base currency in a trading symbol |
quoteCurrency | string | Quote currency in a trading symbol |
pricePrecision | number | Price precision |
amountPrecision | number | Amount precision |
valuePrecision | number | Value precision |
minOrderAmount | string | Minimum order amount |
minOrderValue | string | Minimum order value |
Get Current System Time
This endpoint returns the current system time in milliseconds adjusted to UTC time zone.
Response Body
{
"code": "A10000",
"data": 1565080348983,
"message": "Success"
}
Request URL
GET /v1/common/timestamp
Weight: 1
Request Parameters
No parameter is needed for this endpoint.
Response Details
System time milliseconds adjusted to UTC time zone.
Market Data
Get Latest Tickers for All Trading Pairs
This endpoint returns the latest ticker for all supported trading pairs with important 24h aggregated market data.
Response Body
{
"code": "A10000",
"data": [
{
"ask": "34708.15",
"baseVolume24h": "34.08241488",
"bid": "34621.74",
"high24h": "35079.77",
"lastPrice": "34669.81",
"low24h": "34330.64",
"open24h": "34492.08",
"quoteVolume24h": "1182480.09502814",
"symbol": "BTC_BRL",
"timestamp": 1571112216346
}
],
"message": "Success"
}
Request URL
GET /v1/market/tickers
Weight: 5
Request Parameters
No parameters are needed for this endpoint.
Response Details
Field | Data Type | Description |
---|---|---|
symbol | string | Trading symbol |
lastPrice | string | The price of last trade |
bid | string | The current best bid price |
ask | string | The current best ask price |
open24h | string | The opening price of last 24 hours |
high24h | string | The highest price of last 24 hours |
low24h | string | The lowest price of last 24 hours |
baseVolume24h | string | The trading volume in base currency of last 24 hours |
quoteVolume24h | string | The trading volume of quote currency of last 24 hours |
timestamp | number | The current system time in UTC time zone |
Get Latest Ticker for Specific Pair
The endpoint retrieves the latest ticker of a specific trading pair.
Response Body
{
"code": "A10000",
"data": {
"ask": "34708.15",
"baseVolume24h": "34.08241488",
"bid": "34621.74",
"high24h": "35079.77",
"lastPrice": "34669.81",
"low24h": "34330.64",
"open24h": "34492.08",
"quoteVolume24h": "1182480.09502814",
"symbol": "BTC_BRL",
"timestamp": 1571112216346
},
"message": "Success"
}
Request URL
GET /v1/market/ticker
Weight: 1
Request Parameter
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
Response Details
Field | Data Type | Description |
---|---|---|
symbol | string | Trading symbol |
lastPrice | string | The price of last trade |
bid | string | The current best bid price |
ask | string | The current best ask price |
open24h | string | The opening price of last 24 hours |
high24h | string | The highest price of last 24 hours |
low24h | string | The lowest price of last 24 hours |
baseVolume24h | string | The trading volume in base currency of last 24 hours |
quoteVolume24h | string | The trading volume of quote currency of last 24 hours |
timestamp | number | The current system time in UTC time zone |
Get Market Depth
This endpoint retrieves the current order book of a specific pair.
Response Body
{
"code": "A10000",
"data": {
"asks": [
["43687.16", "0.5194"],
["43687.2", "1.3129"]
],
"bids": [
["43657.57", "0.6135"],
["43657.46", "0.0559"]
],
"timestamp": 1565057338020
},
"message": "Success"
}
Request URL
GET /v1/market/depth
Weight: 1
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
limit | false | number | The number of asks and bids to return , max 50 |
Response Details
Field | Data Type | Description |
---|---|---|
asks | array | All current asks |
asks[][0] | string | Sell price |
asks[][1] | string | Sell amount |
bids | array | All current bids |
bids[][0] | string | Buy price |
bids[][1] | string | Buy amount |
timestamp | number | The current system time in UTC time zone |
Get Recent Trades
This endpoint returns most recent trades data.
Response Body
{
"code": "A10000",
"data": [
{
"price": "43657.57",
"amount": "1",
"side": "SELL",
"timestamp": 1565007823401
},
{
"price": "43687.16",
"amount": "0.071",
"side": "BUY",
"timestamp": 1565007198261
}
],
"message": "Success"
}
Request URL
GET /v1/market/trades
Weight: 5
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
limit | false | number | The number of trades to return , default 100 |
Response Details
Field | Data Type | Description |
---|---|---|
price | string | The trading price |
amount | string | The trading volume |
side | string | The trading direction (SELL or BUY) |
timestamp | number | The time when the trade occurred |
Get Kline Data
Response Body
{
"code": "A10000",
"data": [
{
"amount": 8.25709100,
"closePrice": 62553.20,
"count": 29,
"highPrice": 62592.87,
"lowPrice": 62553.20,
"openPrice": 62554.23,
"score": 1602501480,
"symbol": "BTC_BRL",
"vol": 516784.2504067500
}
],
"message": "Success"
}
Request URL
GET /v1/market/kline/history
Weight: 5
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
unit | true | string | ONE_MIN,FIVE_MIN, FIFTEEN_MIN,HALF_HOU,ONE_HOU,ONE_DAY,ONE_WEE,ONE_MON; |
from | true | number | The start time All time units only save the latest 3000 data |
to | true | number | The end time All time units only save the latest 3000 data |
Response Details
Field | Data Type | Description |
---|---|---|
unit | string | Time unit |
amount | string | The trading amount |
count | string | The trading count |
openPrice | string | The open Price |
closePrice | string | The close Price |
highPrice | string | The high Price |
lowPrice | string | The low Price |
symbol | string | The trading symbol |
score | string | The time |
vol | string | The trading volume |
Orders
Order Introduction
Order type(order.type)
- LIMIT: Limit order
- MARKET: Market order
- STOP_LIMIT: The order will be put into matching queue at limit price only when the market price reaches the trigger price.
- STOP_MARKET: The order will be put into matching queue at market price only when the market price reaches the trigger price.
Operator of stop order (order.operator)
- GTE: More than or equal to
- LTE: Less than or equal to
Order direction(order.side)
- BUY: Buy
- SELL: Sell
Order status(order.status)
- SUBMITTED: The order has been submitted but not processed, not in the matching queue yet. The order is unfinished.
- PROCESSING: The order has been submitted and is in the matching queue, waiting for deal. The order is unfinished.
- PARTIAL_FILLED: The order is already in the matching queue and partially traded, and is waiting for further matching and trade. The order is unfinished
- PARTIAL_CANCELED: The order has been partially traded and canceled by the user and is no longer in the matching queue. This order is finished.
- PARTIAL_REJECTED: The order has been rejected by the system after being partially traded. Now it is finished and no longer in the matching queue.
- FILLED: This order has been completely traded, finished and no longer in the matching queue.
- CANCELED: This order has been canceled by the user before being traded. It is finished now and no longer in the matching queue.
- REJECTED: This order has been rejected by the user before being traded. It is finished now and no longer in the matching queue.
- CANCELING: This order is being canceled, but it is unfinished at the moment and still in the matching queue.
Order’s role(order.role)
- MAKER: Brings liquidity
- TAKER: Takes liquidity
Place A New Order
This endpoint places a new order and submits it to the exchange to be matched.
Response Body
{
"code": "A10000",
"data": {
"id": "633679992971251712",
"clientOrderId": "client_order_id_123456",
"symbol": "BTC_BRL",
"type": "MARKET",
"side": "SELL",
"price": null,
"averagePrice": "0",
"amount": "0.123",
"filledAmount": "0",
"value": null,
"filledValue": "0",
"filledFee": "0",
"stopPrice": null,
"operator": null,
"status": "REJECTED",
"timestamp": 1565165945588
},
"message": "Success"
}
Request URL
POST /v1/orders/create
Weight: 5
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
clientOrderId | false | string | Customer-customized unique order ID, not exceeding 30 characters in length. |
symbol | true | string | The trading symbol to trade, like BTC_BRL |
type | true | string | The type of order, single option: LIMIT |
side | true | string | The direction of order, single option: BUY |
price | true | string | Buy price |
amount | true | string | The amount of base currency, like BTC amount for buy of BTC_BRL |
value | true | string | The amount of quote currency, like BRL amount for buy of BTC_BRL |
operator | true | string | Operator of stop order, can be found in order introduction |
stopPrice | true | string | Stop price |
Based on the order type and side, certain parameters are required to be enforced:
type + side | Required Parameters |
---|---|
LIMIT BUY | price ,amount |
LIMIT SELL | price ,amount |
MARKET BUY | value |
MARKET SELL | amount |
STOP_LIMIT BUY | price ,amount ,operator ,stopPrice |
STOP_LIMIT SELL | price ,amount ,operator ,stopPrice |
STOP_MARKET BUY | value ,operator ,stopPrice |
STOP_MARKET SELL | amount ,operator ,stopPrice |
Response Details
Field | Data Type | Description |
---|---|---|
id | string | Order ID |
clientOrderId | string | Customer-customized unique order ID |
symbol | string | The trading symbol |
type | string | The type of order |
side | string | The direction of order |
price | string | The price of order |
averagePrice | string | The average price of order |
amount | string | The amount of base currency |
filledAmount | string | The executed amount of base currency |
value | string | The amount of quote currency |
filledValue | string | The executed amount of quote currency |
filledFee | string | Transaction fee paid |
status | string | The status of order, can be found in order introduction |
timestamp | number | The time when the order was created |
Bulk Place Orders
Batch create new orders, supporting the simultaneous submission of up to 20 orders at a time.
Response Body
{
"code": "A10000",
"data": [{
"id": "633679992971251712",
"clientOrderId": "client_order_id_123456",
"symbol": "BTC_BRL",
"type": "MARKET",
"side": "SELL",
"price": null,
"averagePrice": "0",
"amount": "0.123",
"filledAmount": "0",
"value": null,
"filledValue": "0",
"filledFee": "0",
"stopPrice": null,
"operator": null,
"status": "REJECTED",
"timestamp": 1565165945588
}, {
"clientOrderId": "client_order_id_123456",
"code": "A10001",
"message": "Params error"
}],
"message": "Success"
}
Request URL
POST /v1/orders/batch-create
Weight: 50
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
clientOrderId | false | string | Customer-customized unique order ID, not exceeding 30 characters in length. |
symbol | true | string | The trading symbol to trade, like BTC_BRL |
type | true | string | The type of order, single option: LIMIT |
side | true | string | The direction of order, single option: BUY |
price | true | string | Buy price |
amount | true | string | The amount of base currency, like BTC amount for buy of BTC_BRL |
value | true | string | The amount of quote currency, like BRL amount for buy of BTC_BRL |
operator | true | string | Operator of stop order, can be found in order introduction |
stopPrice | true | string | Stop price |
Based on the order type and side, certain parameters are required to be enforced:
type + side | Required Parameters |
---|---|
LIMIT BUY | price 、amount |
LIMIT SELL | price 、amount |
MARKET BUY | value |
MARKET SELL | amount |
STOP_LIMIT BUY | price 、amount 、operator 、stopPrice |
STOP_LIMIT SELL | price 、amount 、operator 、stopPrice |
STOP_MARKET BUY | value 、operator 、stopPrice |
STOP_MARKET SELL | amount 、operator 、stopPrice |
Response Details
Field | Data Type | Description |
---|---|---|
data | array | Order List |
>id | string | Order ID |
>clientOrderId | string | Customer-customized unique order ID |
>symbol | string | The trading symbol |
>type | string | The type of order |
>side | string | The direction of order |
>price | string | The price of order |
>averagePrice | string | The average price of order |
>amount | string | The amount of base currency |
>filledAmount | string | The executed amount of base currency |
>value | string | The amount of quote currency |
>filledValue | string | The executed amount of quote currency |
>filledFee | string | Transaction fee paid |
>status | string | The status of order, can be found in order introduction |
>timestamp | number | The time when the order was created |
Cancel Order ID
This endpoint submits a request to cancel an order.
Response Body
{
"code": "A10000",
"data": {
"result": true
},
"message": "Success"
}
Request URL
POST /v1/orders/cancel
Weight: 1
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
id | false | string | Order ID |
clientOrderId | false | string | Customer-customized unique order ID |
Response Details
Field | Data Type | Description |
---|---|---|
result | string | The result of the cancel request |
Bulk Cancel Orders by ID
Batch submission of order cancellation requests, supporting up to 20 orders to be submitted simultaneously.
Response Body
{
"code": "A10000",
"data": [
{
"id": "608695623247466496",
"result": true,
"code": "A10000",
"message": "Success"
},
{
"clientOrderId": "client_order_id_123457",
"result": true,
"code": "A10000",
"message": "Success"
},
{
"clientOrderId": "client_order_id_123458",
"result": false,
"code": "A30001",
"message": "Order not found",
}
],
"message": "Success"
}
Request URL
POST /v1/orders/batch-cancel
Weight: 10
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
>id | false | string | 订单ID |
>clientOrderId | false | string | Customer-customized unique order ID |
Response Details
Field | Data Type | Description |
---|---|---|
data | array | Canceled Order List |
>id | string | Order ID |
>clientOrderId | string | Customer-customized unique order ID |
>result | boolean | The result of the cancel request |
Cancel order by symbol
Cancel order based on trading symbol.
Response Body
{
"code": "A10000",
"data": [
{
"id": "608695623247466496",
"clientOrderId": "client_order_id_123456",
"result": true,
"code": "A10000",
"message": "Success"
},
{
"id": "608695623247466497",
"clientOrderId": "client_order_id_123457",
"result": true,
"code": "A10000",
"message": "Success"
}
],
"message": "Success"
}
Request URL
POST /v1/orders/cancel-by-symbol
Weight: 10
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | The trading symbol to trade, like BTC_BRL |
Response Details
Field | Data Type | Description |
---|---|---|
data | array | Canceled Order List |
>id | string | Order ID |
>clientOrderId | string | Customer-customized unique order ID |
>result | boolean | The result of the cancel request |
Get Order Details
This endpoint returns the latest status and details of an order. Orders created through API cannot be found after being cancelled for two hours.
Response Body
{
"code": "A10000",
"data": {
"id": "608695623247466496",
"clientOrderId": "client_order_id_123456",
"symbol": "BTC_BRL",
"type": "MARKET",
"side": "SELL",
"price": null,
"averagePrice": "0",
"amount": "0.123",
"filledAmount": "0",
"value": null,
"filledValue": "0",
"filledFee": "0",
"stopPrice": null,
"operator": null,
"status": "REJECTED",
"timestamp": 1565165945588
},
"message": "Success"
}
Request URL
GET /v1/orders/get
Weight: 1
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
id | false | string | Order ID |
clientOrderId | false | string | Customer-customized unique order ID |
Response Details
Field | Data Type | Description |
---|---|---|
id | string | Order ID |
clientOrderId | string | Customer-customized unique order ID |
symbol | string | The trading symbol |
type | string | The type of order |
side | string | The direction of order |
price | string | The price of order |
averagePrice | string | The average price of order |
amount | string | The amount of base currency |
filledAmount | string | The executed amount of base currency |
value | string | The amount of quote currency |
filledValue | string | The executed amount of quote currency |
filledFee | string | Transaction fee paid |
status | string | The status of order, can be found in order introduction |
timestamp | number | The time when the order was created |
Get Order History
This endpoint returns the order history based on a certain search filter. Orders created through API cannot be found after being cancelled for two hours.
Response Body
{
"code": "A10000",
"data": [
{
"id": "608695678650028032",
"clientOrderId": "client_order_id_123456",
"symbol": "BTC_BRL",
"type": "MARKET",
"side": "SELL",
"price": null,
"averagePrice": "0",
"amount": "0.123",
"filledAmount": "0",
"value": null,
"filledValue": "0",
"filledFee": "0",
"stopPrice": null,
"operator": null,
"status": "REJECTED",
"timestamp": 1565165958796
},
{
"id": "608695623247466496",
"clientOrderId": "client_order_id_123457",
"symbol": "BTC_BRL",
"type": "MARKET",
"side": "SELL",
"price": null,
"averagePrice": "0",
"amount": "0.123",
"filledAmount": "0",
"value": null,
"filledValue": "0",
"filledFee": "0",
"stopPrice": null,
"operator": null,
"status": "REJECTED",
"timestamp": 1565165945588
}
],
"message": "Success"
}
Request URL
GET /v1/orders/list
Weight: 10
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | false | string | The trading symbol, like BTC_BRL |
status | false | string | The status of orders(can be found in order introduction, use comma to separate different status). You can also use 'FINISHED' to find finished orders and use 'UNFINISHED' to find unfinished orders. |
fromId | false | string | Search order id to begin with |
toId | false | string | Search order id to end up with |
fromTimestamp | false | string | Search order creation time to begin with, in milliseconds |
toTimestamp | false | string | Search order creation time to end up with, in milliseconds |
limit | false | string | The number of orders to return, default 100, max 100 |
Response Details
Field | Data Type | Description |
---|---|---|
id | string | Order ID |
clientOrderId | string | Customer-customized unique order ID |
symbol | string | The trading symbol |
type | string | The type of order |
side | string | The direction of order |
price | string | The price of order |
averagePrice | string | The average price of order |
amount | string | The amount of base currency |
filledAmount | string | The executed amount of base currency |
value | string | The amount of quote currency |
filledValue | string | The executed amount of quote currency |
filledFee | string | Transaction fee paid |
status | string | The status of order, can be found in order introduction |
timestamp | number | The time when the order was created |
Get Order Match Details
This endpoint returns the match result of an order.
Response Body
{
"code": "A10000",
"data": [
{
"id": "608717046691139584",
"orderId": "608716957545402368",
"symbol": "BTC_BRL",
"side": "BUY",
"amount": "0.0988",
"price": "45514.76",
"fee": "0.0000988 BTC",
"feeAmount": "0.0000988",
"feeCurrency": "BTC",
"role": "MAKER",
"timestamp": 1565171053345
},
{
"id": "608717065729085441",
"orderId": "608716957545402368",
"symbol": "BTC_BRL",
"side": "BUY",
"amount": "0.0242",
"price": "45514.76",
"fee": "0.0000242 BTC",
"feeAmount": "0.0000988",
"feeCurrency": "BTC",
"role": "MAKER",
"timestamp": 1565171057882
}
],
"message": "Success"
}
Request URL
GET /v1/orders/fills
Weight: 10
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
orderId | true | string | Order ID |
symbol | false | string | The trading symbol, like BTC_BRL |
fromId | false | string | Search fill id to begin with |
toId | false | string | Search fill id to end up with |
fromTimestamp | false | string | Search order fill time to begin with, in milliseconds |
toTimestamp | false | string | Search order fill time to end up with, in milliseconds |
limit | false | string | The number of fills to return, default 100, max 100 |
Response Details
Field | Data Type | Description |
---|---|---|
id | string | Order match ID |
orderId | string | Order ID |
symbol | string | The trading symbol |
side | string | The direction of order, options: BUY or SELL |
price | string | The matched price |
amount | string | The matched amount |
fee | string | Transaction fee paid |
feeCurrency | string | Transaction fee paid currency |
feeAmount | string | Transaction fee paid amount |
role | string | The role of transaction,option: TAKER or MAKER |
timestamp | false | string |
Account
Get Account Balance
This endpoint returns the account balance.
Response Body
{
"code": "A10000",
"data": [
{
"available": "1.23",
"balance": "0.23",
"currency": "BTC",
"hold": "1"
}
],
"message": "Success"
}
Request URL
GET /v1/account/getBalance
Weight: 1
Request Parameters
No parameter is needed for this endpoint
Response Details
Field | Data Type | Description |
---|---|---|
currency | string | The currency of this balance |
balance | string | The balance of this currency |
hold | string | The balance in order |
available | string | The available balance |
Get Sub Account Balance
This endpoint returns the balance of sub account.
Response Body
{
"code":"A10000",
"data":[
{
"balance":"7.22",
"currency":"BTC"
}
],
"message":"Success"
}
Request URL
GET /v1/account/subs/balance
Weight: 1
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
subId | ture | string | Sub account ID |
Response Details
Field | Data Type | Description |
---|---|---|
balance | string | Balance of sub account |
currency | string | Currency of this balance |
Get Sub Account Transfer Record
This endpoint returns the transfer record of sub account
Response Body
{
"code": "A10000",
"data": [{
"subId": "CA648855702269333504",
"amount": "103.22",
"currency": "BRL",
"state": "success",
"type": "master-transfer-out"
}, {
"subId": "CA648855702269333504",
"amount": "3.5",
"currency": "BRL",
"state": "success",
"type": "master-transfer-in"
}],
"message": "Success"
}
Request URL
GET /v1/account/subs/transfer/record
Weight: 10
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
subId | ture | string | Sub account ID |
Response Details
Field | Data Type | Description |
---|---|---|
subId | string | Sub account ID |
amount | string | Transfer amount |
currency | string | Transfer currency |
state | string | Transfer state: success/fail |
type | string | Type: master-transfer-in (transfer into master account) or master-transfer-out (transfer from master account) |
Get Sub Account Transfer
The endpoint submits a transfer request of sub account
Response Body
{
"code":"A10000",
"message":"Success",
"data":40
}
Request URL
POST /v1/account/subs/transfer
Weight: 5
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
subId | true | string | Sub account ID |
currency | true | string | Transfer currency |
transferAmount | true | string | Transfer amount |
transferType | true | string | Type,master-transfer-in or master-transfer-out |
Response Details
Data field returns the transfer record ID.
Wallet
Wallet Records of Deposits and Withdraws
The endpoint returns the records of deposits and withdraws.
Response Body
{
"code": "A10000",
"data": [{
"id": "DR562339304588709888",
"type": "COIN_IN",
"currency": "XLM",
"chain": "XLM",
"address": "GCUTK7KHPJC3ZQJ3OMWWFHAK2OXIBRD4LNZQRCCOVE7A2XOPP2K5PU5Q",
"addressTag": "1000009",
"amount": 1.0,
"state": "SUCCESS",
"txHash": "39210645748822f8d4ce673c7559aa6622e6e9cdd7073bc0fcae14b1edfda5f4",
"createdAt": 1554113737000,
"updatedAt": 1601371273000
}...],
"message": "Success"
}
Request URL
GET /v1/wallet/query/deposit-withdraw
Weight: 10
Request Parameters
Field | Data Type | Required | Description | Default Value |
---|---|---|---|---|
currency | string | false | The currency code. e.g. BTC | NA |
type | string | false | default record type to search | coin_in and coin_out |
direct | string | false | the order of records,e.g. asc or desc |
asc |
size | int | false | the number of iterms to return | 100 |
start | string | false | the id of record, | NA |
Response Details
Field | Data Type | Description |
---|---|---|
id | string | the id of record |
type | string | the type of record |
currency | string | the currency code of record |
txHash | string | the txid of chain |
address | string | the dst address of txHash |
addressTag | string | the tag of txHash |
chain | string | Block chain name,internal means transfer through novadax inside rather than chain |
amount | decimal | the amount of txHash |
state | string | the state of record |
createdAt | long | The timestamp in milliseconds for the transfer creation |
updatedAt | long | The timestamp in milliseconds for the transfer's latest update |
List of possible record state
State | Description |
---|---|
Pending | the record is wait broadcast to chain |
x/M confirming |
the comfirming state of tx,the M is total confirmings needed |
SUCCESS | the record is success full |
FAIL | the record failed |
Send Cryptocurrencies
Response Body
{
"code":"A10000",
"data": "DR123",
"message":"Success"
}
Request URL
POST /v1/wallet/withdraw/coin
Weight: 600
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
code | ture | string | Crypto symbol, like BTC |
amount | true | string | Amount to send |
wallet | true | string | Wallet address to receive |
chainAlias | true | string | Wallet address to receive with chainAlias,default nova first chain |
tag | false | string | Tag, required when sending XLM, XRP, EOS |
Response Details
The data field will return the withdrawal id.
Chain Network Search
Request URL
GET /crypto/chain/{code}
Weight: 5
Request parameters
parm r name | param type | param note |
---|---|---|
code | String | crypto accout code,default value is "ALL" |
Response parameters
param name | param type | param note |
---|---|---|
accountCode | String | code account |
accountType | String | code account type:DIGITAL,LEGAL |
accountPrecision | Integer | code account precision |
accountOrder | Integer | code account order |
accountState | Integer | code account state,1:in-use,0: off-use |
tokens | List | crypro network List |
List of tokens
parame name | param type | param note |
---|---|---|
codeAccount | String | Code account |
chainAlias | String | crypto chain alias, use for send crypto |
chainName | String | crypto chain name, just for reading |
mainAddr | String | main address for memo crypto,default value is null |
useMemo | Integer | use memo or not,1:using,0:not using |
useDynamicSendFee | String | using dynamic sent fee,1:using,0:not using |
minConf | Integer | min confirmations of chain |
useFirst | Integer | default chain choosed in novadax when chainAlias is null in api |
state | Integer | chain is useful,1:in-use,0:off-use |
chainURL | String | chain url |
chainAddressURL | String | chain address url |
chainHashURL | String | chain hash url |
officialURL | String | chain official url |
WebSocket
Access
NovaDAX WebSocket API is based on Socket.io. You can find more information about Socket.io on their official website.
Address
wss://api.novadax.com
// Socket.IO example of establishing connection
const io = require("socket.io-client");
const socket = io("wss://api.novadax.com", {
transports: ['websocket']
});
// Socket.IO example of subscription
socket.emit("SUBSCRIBE", ["MARKET.BTC_USDT.TICKER", "MARKET.BTC_USDT.TRADE"])
socket.on("MARKET.BTC_USDT.TICKER", (ticker) => {
console.log(ticker)
})
socket.on("MARKET.BTC_USDT.TRADE", (trade) => {
console.log(trade)
})
// Socket.IO example of cancelling subscription
socket.emit("UNSUBSCRIBE", ["MARKET.BTC_USDT.DEPTH.LEVEL0"])
Limit
- Only supports
websocket
transports of Socket.io - One IP can only establish 10 WebSocket connections
Subscribe topics
When you subscribe a topic, you can receive all the notifications about it. Subscription format:
socket.emit("SUBSCRIBE", ["XXX"])
Cancel subscription
After subscribing a topic, you can cancel the subscription if you don’t want to receive notifications about the topic anymore. Format of canceling the subscription:
socket.emit("UNSUBSCRIBE", ["XXX"])
Subscribe Ticker Data of All Trading Pairs
After subscription, the system will send ticker data of all trading pairs once a second.
Data
[
{
"ask": "34708.15",
"baseVolume24h": "34.08241488",
"bid": "34621.74",
"high24h": "35079.77",
"lastPrice": "34669.81",
"low24h": "34330.64",
"open24h": "34492.08",
"quoteVolume24h": "1182480.09502814",
"symbol": "BTC_BRL",
"timestamp": 1571112216346
}
]
Subscription Topic
MARKET.TICKERS
Request Parameters
No parameters are needed for this endpoint.
Response Details
Field | Data Type | Description |
---|---|---|
symbol | string | Trading symbol |
lastPrice | string | The price of last trade |
bid | string | The current best bid price |
ask | string | The current best ask price |
open24h | string | The opening price of last 24 hours |
high24h | string | The highest price of last 24 hours |
low24h | string | The lowest price of last 24 hours |
baseVolume24h | string | The trading volume in base currency of last 24 hours |
quoteVolume24h | string | The trading volume of quote currency of last 24 hours |
timestamp | number | The current system time in UTC time zone |
Subscribe Ticker Data of a Single Trading Pair
After subscription, the system will send ticker data of the chosen trading pair once a second.
Data
{
"ask": "34708.15",
"baseVolume24h": "34.08241488",
"bid": "34621.74",
"high24h": "35079.77",
"lastPrice": "34669.81",
"low24h": "34330.64",
"open24h": "34492.08",
"quoteVolume24h": "1182480.09502814",
"symbol": "BTC_BRL",
"timestamp": 1571112216346
}
Subscription Topic
MARKET.{{symbol}}.TICKER
Request Parameter
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
Response Details
Field | Data Type | Description |
---|---|---|
symbol | string | Trading symbol |
lastPrice | string | The price of last trade |
bid | string | The current best bid price |
ask | string | The current best ask price |
open24h | string | The opening price of last 24 hours |
high24h | string | The highest price of last 24 hours |
low24h | string | The lowest price of last 24 hours |
baseVolume24h | string | The trading volume in base currency of last 24 hours |
quoteVolume24h | string | The trading volume of quote currency of last 24 hours |
timestamp | number | The current system time in UTC time zone |
Subscribe Depth Data
After subscription, the system will send the depth data of the chosen trading pairs once a second.
Data
{
"asks": [
["43687.16", "0.5194"],
["43687.2", "1.3129"]
],
"bids": [
["43657.57", "0.6135"],
["43657.46", "0.0559"]
],
"timestamp": 1565057338020
}
Subscription Topic
MARKET.{{symbol}}.DEPTH.LEVEL0
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
Response Details
Field | Data Type | Description |
---|---|---|
asks | array | All current asks |
asks[][0] | string | Sell price |
asks[][1] | string | Sell amount |
bids | array | All current bids |
bids[][0] | string | Buy price |
bids[][1] | string | Buy amount |
timestamp | number | The current system time in UTC time zone |
Subscribe Order Execution Data
After subscription, the system will send notification about the latest executed orders.
Data
[
{
"price": "43657.57",
"amount": "1",
"side": "SELL",
"timestamp": 1565007823401
},
{
"price": "43687.16",
"amount": "0.071",
"side": "BUY",
"timestamp": 1565007198261
}
]
Subscription Topic
MARKET.{{symbol}}.TRADE
Request Parameters
Field | Mandatory | Data Type | Description |
---|---|---|---|
symbol | true | string | Trading symbol |
Response Details
Field | Data Type | Description |
---|---|---|
price | string | The trading price |
amount | string | The trading volume |
side | string | The trading direction (SELL or BUY) |
timestamp | number | The time when the trade occurred |