NAV Navbar
shell python
Request API Key
English Português 中文

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 by sending a request from your register e-mail to support@novadax.com.

API Access

NovaDAX API endpoints are divided into public endpoints and private endpoints.

Public endpoints

Public endpoints don't require authentication for: * Market data * Basic information

PRIVATE endpoints

Private endpoint can only be accessed with authentication for: * Orders * Account

Access URLs

https://api.novadax.com

Endpoint Rate Limits

Public endpoints: up to 60 requests per second for each IP;

Private endpoints: up to 20 requests per second for each API AccessKey.

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:

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=%E5%A7%93%E5%90%8D

3. Generate the "Query String" as format {Request Method}\n{Request URL}\n{Sorted Query Parameters}\n{TimeStamp}

signStr = GET\n/v1/order/get\nbirthday=2017-08-01&cpf=123456&name=%E5%A7%93%E5%90%8D\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)

Steps to sign a POST request

1. The request body is

body = {"name":"joao","cpf":"123456","birthday":"2017-08-01"}

2. Generate the MD5 hashed "Request body" as format "%s\n%s\n%s\n%s"

signStr = POST\n/v1/order/create\nmd5_32(body)\n1564988445199

3. Use "Request String" generated in step 2 and your "SecretKey" to create a signature

sign = hmac_sha256(signStr,body)

4. Add Accesskey, Signature and TimeStamp to the header of quest

request.header.add("Content-Type","application/json; charset=utf-8")

request.header.add("X-Nova-Access-Key",AccessKey)

request.header.add("X-Nova-Signature",Sign)

request.header.add("X-Nova-Timestamp",TimeStamp)

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
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 Amount is too small Order amount is too small
A30003 400 Amount is invalid Order amount is invalid
A30004 400 Value is too small Order value is too small
A30005 400 Value is invalid Order value is invalid
A30006 400 Price is invalid Order price is invalid
A30007 400 Insufficient balance The balance is insufficient
A30008 400 Order finished The order has been executed
A30009 400 Order canceled The order has been cancelled
A30010 400 Order cancelling The order is being cancelled

FAQ

Failure in authentication

SDK and Video Tutorial

If needed, you can access our SDK in github.

Changelog

Date Endpoint Change Type Change Detail
2019-08-01 /v1/symbols Add New launch Version 1.0
2019-09-18 /v1/account/withdraw/coin Add New launch Version 1.0

Basic Information

Get All Supported Trading Symbol

This endpoint returns all NovaDAX's supported trading symbols

Request URL

GET /v1/common/symbols

Request Parameters

No parameter is needed for this endpoint.

curl "https://api.novadax.com/v1/common/symbols"

Response Content

{
    "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"
}

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 string Price precision
amountPrecision string Amount precision
valuePrecision string 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.

Request URL

GET /v1/common/timestamp

Request Parameters

No parameter is needed for this endpoint.

curl "https://api.novadax.com/v1/common/timestamp"

Response Content

{
    "code": "A10000",
    "data": 1565080348983,
    "message": "Success"
}

Response Details

Field Data Type Description
timestamp long 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.

Request URL

GET /v1/market/tickers

Request Parameters

No parameters are needed for this endpoint.

curl "https://api.novadax.com/v1/market/tickers"

Response Content

{
    "code": "A10000",
    "data": [
        {
            "ask": "",
            "baseVolume24h": "10.9",
            "bid": "12000",
            "high24h": "16000",
            "lastPrice": "13000",
            "low24h": "12000",
            "quoteVolume24h": "0",
            "symbol": "BTC_BRL",
            "timestamp": 1565071855378
        }
    ],
    "message": "Success"
}

Response Details

Field Data Type Description
symbol string Trading symbol
last 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.

Request URL

GET /v1/market/ticker

Request Parameter

symbol

curl "https://api.novadax.com/v1/market/ticker?symbol=BTC_BRL

Response Content

{
    "code": "A10000",
    "data": [
        {
            "ask": "",
            "baseVolume24h": "10.9",
            "bid": "12000",
            "high24h": "16000.",
            "lastPrice": "13000.",
            "low24h": "12000.",
            "quoteVolume24h": "0.0008",
            "symbol": "BTC_BRL",
            "timestamp": 1565071855378
        }
    ],
    "message": "Success"
}

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.

Request URL

GET /v1/market/depth

Request Parameters

Field Mandatory Data Type Description
symbol true string Trading symbol
limit false number default 200; max 200
curl "https://api.novadax.com/v1/market/depth?symbol=BTC_BRL&size=10"

Response Content

{
    "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"
}

Response Details

Field Data Type Description
asks array The current all asks in format [price, quote volume]
asks [][0] string Sell price
asks [][1] string Sell amount
bids array The current all bids in format [price, quote volume]
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.

Request URL

GET /v1/market/trades

Request Parameters

Field Mandatory Data Type Description
symbol true string Trading symbol
limit false number default 200; max 200
curl "https://api.novadax.com/v1/market/trades?symbol=BTC_BRL"

Response Content

{
    "code": "A10000",
    "data": [
        {
            "amount": "1",
            "price": "43657.57",
            "side": "SELL",
            "timestamp": 1565007823401
        },
        {
            "amount": "0.071",
            "price": "43687.16",
            "side": "BUY",
            "timestamp": 1565007198261
        }
    ],
    "message": "Success"
}

Response Details

Field Data Type Description
price string The trading price in quote currency
amount string The trading volume in base currency
side string The trading direction (SELL or BUY)
timestamp number The time when the trade occurred

Orders

Place A New Order

curl -X POST \
  'https://api.novadax.com/v1/orders/create' \
  -H 'Content-Type: application/json' \
  -H 'X-Nova-Access-Key: your access key' \
  -H 'X-Nova-Signature: signature' \
  -H 'X-Nova-Timestamp: timestamp now' \
  -d '{
    "symbol": "BTC_BRL",
    "type": "MARKET",
    "side": "SELL",
    "amount": "0.123"
  }'
from novadax import RequestClient as NovaClient

nova_client = NovaClient('your access key', 'your secret key')

result = nova_client.create_order('BTC_BRL', 'LIMIT', 'SELL', amount = '0.123')

print(result)

Response Content

{
    "code": "A10000",
    "data": {
        "id": "608695623247466496",
        "symbol": "BTC_BRL",
        "type": "MARKET",
        "side": "SELL",
        "price": null,
        "averagePrice": null,
        "amount": "0.123",
        "filledAmount": "0",
        "value": null,
        "filledValue": "0",
        "filledFee": "0",
        "status": "PROCESSING",
        "timestamp": 1565165945588
    },
    "message": "Success"
}

This endpoint places a new order and submits it to the exchange to be matched.

Request URL

POST /v1/orders/create

Request Parameters

Field Mandatory Data Type Description
symbol true string The trading symbol to trade, like BTC_BRL
type true string The type of order, options: LIMIT, MARKET, MAKER_ONLY
side true string The direction of order, options: BUY or SELL
amount false string The amount of order, only needed for LIMIT BUY, LIMIT SELL, MARKET BUY, MAKER_ONLY BUY and MAKER_ONLY SELL
price false string The price of order, only needed for LIMIT BUY, LIMITE SELL, MAKER_ONLY BUY and MAKER_ONLY SELL
value false string The value of order, only needed for MARKET SELL

Response Details

Field Data Type Description
id string Order ID
symbol string The trading symbol
type string The type of order, options: LIMIT, MARKET, MAKER_ONLY
side string The direction of order, options: BUY or SELL
price string The price of order
averagePrice string The average price of order
amount string The amount of order
filledAmount string The executed amount of order
value string The value of order
filledValue string The executed value of order
filledFeefilledFee string Transaction fee paid
status string The status of order, options: SUBMITTED, PROCESSING, PARTIAL_FILLED, CANCELING, FILLED, CANCELED and REJECTED
timestamp number The time when the order was created

Cancel An Order

curl -X POST \
  'https://api.novadax.com/v1/orders/cancel' \
  -H 'Content-Type: application/json' \
  -H 'X-Nova-Access-Key: your access key' \
  -H 'X-Nova-Signature: signature' \
  -H 'X-Nova-Timestamp: timestamp now' \
  -d '{
    "id": "608705793440616448"
  }'
from novadax import RequestClient as NovaClient

nova_client = NovaClient('your access key', 'your secret key')

result = nova_client.cancle_order("608705793440616448")

print(result)

Response Content

{
    "code": "A10000",
    "data": {
        "result": true
    },
    "message": "Success"
}

This endpoint submits a request to cancel an order.

Request URL

POST /v1/orders/cancel

Request Parameters

Field Mandatory Data Type Description
id true string Order ID

Response Details

Field Data Type Description
result string The result of the cancel request

Get Order Details

curl -X GET \
  'https://api.novadax.com/v1/orders/get?id=608695623247466496' \
  -H 'X-Nova-Access-Key: your access key' \
  -H 'X-Nova-Signature: signature' \
  -H 'X-Nova-Timestamp: timestamp now'
from novadax import RequestClient as NovaClient

nova_client = NovaClient('your access key', 'your secret key')

result = nova_client.get_order('608695623247466496')

print(result)

Response Content

{
    "code": "A10000",
    "data": {
        "id": "608695623247466496",
        "symbol": "BTC_BRL",
        "type": "MARKET",
        "side": "SELL",
        "price": null,
        "averagePrice": "0",
        "amount": "0.123",
        "filledAmount": "0",
        "value": null,
        "filledValue": "0",
        "filledFee": "0",
        "status": "REJECTED",
        "timestamp": 1565165945588
    },
    "message": "Success"
}

This endpoint returns the latest status and details of an order.

Request URL

GET /v1/orders/get

Request Parameters

Field Mandatory Data Type Description
id True string Order ID

Response Details

Field Data Type Description
id string Order ID
symbol string The trading symbol
type string The type of order, options: LIMIT, MARKET, MAKER_ONLY
side string The direction of order, options: BUY or SELL
price string The price of order
averagePrice string The average price of order
amount string The amount of order
filledAmount string The executed amount of order
value string The value of order
filledValue string The executed value of order
filledFeefilledFee string Transaction fee paid
status string The status of order, options: SUBMITTED, PROCESSING, PARTIAL_FILLED, CANCELING, FILLED, CANCELED and REJECTED
timestamp number The time when the order was created

Get Order History

curl -X GET \
  'https://api.novadax.com/v1/orders/list?symbol=BTC_BRL&status=FINISHED&from=608705793440616448&to=608694995137859584&limit=100' \
  -H 'X-Nova-Access-Key: your access key' \
  -H 'X-Nova-Signature: signature' \
  -H 'X-Nova-Timestamp: timestamp now'
from novadax import RequestClient as NovaClient

nova_client = NovaClient('your access key', 'your secret key')

result = nova_client.list_orders('BTC_BRL', 'FINISHED', '608705793440616448', '608694995137859584', '100')

print(result)

Response Content

{
    "code": "A10000",
    "data": [
        {
            "id": "608695678650028032",
            "symbol": "BTC_BRL",
            "type": "MARKET",
            "side": "SELL",
            "price": null,
            "averagePrice": "0",
            "amount": "0.123",
            "filledAmount": "0",
            "value": null,
            "filledValue": "0",
            "filledFee": "0",
            "status": "REJECTED",
            "timestamp": 1565165958796
        },
        {
            "id": "608695623247466496",
            "symbol": "BTC_BRL",
            "type": "MARKET",
            "side": "SELL",
            "price": null,
            "averagePrice": "0",
            "amount": "0.123",
            "filledAmount": "0",
            "value": null,
            "filledValue": "0",
            "filledFee": "0",
            "status": "REJECTED",
            "timestamp": 1565165945588
        }
    ],
    "message": "Success"
}

This endpoint returns the order history based on a certain search filter.

Request URL

GET /v1/orders/list

Request Parameters

Field Mandatory Data Type Description
symbol true string The trading symbol, like BTC_BRL
status false string The status of orders, options: SUBMITTED, PROCESSING, PARTIAL_FILLED, CANCELING, FILLED, CANCELED and REJECTED (use comma to separate different status)
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

Response Details

Field Data Type Description
id string Order ID
symbol string The trading symbol
type string The type of order, options: LIMIT, MARKET, MAKER_ONLY
side string The direction of order, options: BUY or SELL
price string The price of order
averagePrice string The average price of order
amount string The amount of order
filledAmount string The executed amount of order
value string The value of order
filledValue string The executed value of order
filledFeefilledFee string Transaction fee paid
status string The status of order, options: SUBMITTED, PROCESSING, PARTIAL_FILLED, CANCELING, FILLED, CANCELED and REJECTED
timestamp number The time when the order was created

Get Order Match Details

curl -X GET \
  'https://api.novadax.com/v1/orders/fill?id=608716957545402368' \
  -H 'X-Nova-Access-Key: your access key' \
  -H 'X-Nova-Signature: signature' \
  -H 'X-Nova-Timestamp: timestamp now'
from novadax import RequestClient as NovaClient

nova_client = NovaClient('your access key', 'your secret key')

result = nova_client.list_order_fills('608716957545402368')

print(result)

Response Content

{
    "code": "A10000",
    "data": [
        {
            "id": "608717046691139584",
            "orderId": "608716957545402368",
            "symbol": "BTC_BRL",
            "side": "BUY",
            "amount": "0.0988",
            "price": "45514.76",
            "fee": "0.0000988 BTC",
            "role": "MAKER",
            "timestamp": 1565171053345
        },
        {
            "id": "608717065729085441",
            "orderId": "608716957545402368",
            "symbol": "BTC_BRL",
            "side": "BUY",
            "amount": "0.0242",
            "price": "45514.76",
            "fee": "0.0000242 BTC",
            "role": "MAKER",
            "timestamp": 1565171057882
        }
    ],
    "message": "Success"
}

This endpoint returns the match result of an order.

Request URL

GET /v1/orders/list

Request Parameters

Field Mandatory Data Type Description
id true string Order ID

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
role string The role of transaction,option: TAKER or MAKER

Account

Get Account Balance

This endpoint returns the account balance.

Request URL

GET /v1/account/getBalance

Request Parameters

No parameter is needed for this endpoint

curl "https://api.novadax.com/v1/account/getBalance"

from novadax import RequestClient as NovaClient

nova_client = NovaClient('your access key', 'your secret key')

result = nova_client.get_account_balance(')

print(result)

Response Content

{
  code:"A10000",
  message:"Success",
  data:
     {
        currency:"BTC",
        balance:"2",
        hold: "1",
        avaliable:"1";
        accountId:"DA001"
     }
}

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
avaliable string The available balance
accountId string Account ID

Send Cryptocurrencies

This endpoint submits a request to withdraw cryptos and is temporarily available only to customers in whitelist. You can make an application with our customer service. The limits and fees of withdrawal are the same as those applied in web version.

Request URL

GET /v1/account/withdraw/coin

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
tag false string Tag, required when sending XLM, XRP, EOS

Response Details

The data field will return the withdrawal id.


curl -X POST \
  'https://api.novadax.com/v1/account/withdraw/coin' \
  -H 'Content-Type: application/json' \
  -H 'X-Nova-Access-Key: your access key' \
  -H 'X-Nova-Signature: signature' \
  -H 'X-Nova-Timestamp: timestamp now' \
  -d '{
    "code": "BTC",
    "amount": "1",
    "wallet": "your to_address"
  }'
from novadax import RequestClient as NovaClient

nova_client = NovaClient('your access key', 'your secret key')

result = nova_client.withdraw_coin("BTC","1",'...')

print(result)

Response Content

{
  "code":"A10000",
  "message":"Success",
  "data":
     {
        "DR123"
     }
}