简介
欢迎使用 NovaDAX API
NovaDAX 提供了一套强大安全的 API,旨在为用户提供更加快捷的安全的使用体验。
API 提供了查询行情、交易,查询交易记录、查询账户详情等服务。
NovaDAX 为用户提供简单易用的接口调用形式,并且 SDK 还在持续完善中。
准备说明
创建一个账户
如果您还没有账户,请点击此处注册成为 NovaDAX 账户,享受 NovaDAX 提供的优质服务。
生成 API 密钥
对于与 API 通信,必需创建 AccessKey 与 SecretKey 并按照接入说明中的描述接入。 您可以在登录后,点击右上方用户图标下的“API管理”来生成API密钥。
接入说明
公共接口
公共接口不需要认证。
- 基础信息
- 行情
私有接口
私有接口需要认证。
- 订单
- 账户
- 钱包
接入 URL
https://api.novadax.com
限制频率
- 每个接口都被分配了相应的权重(Weight),权重值与资源消耗成正比。
- 接口都会在响应中返回一个 X-Nova-Weight-Used 响应头,以便您了解当前已消耗的权重。
- 每分钟可用的总权重为 6000,当可用权重耗尽时,您将会收到 HTTP 429 错误。
- 对于公共接口,权重统计是基于 IP 地址进行的,而对于私有接口,则是基于 AccountId 进行统计。
签名说明
API 请求在通过 Internet 传输的过程中极有可能被篡改,为了确保请求未被更改,除(基础信息,行情数据)外的私有接口均必须使用您的 API Key 做签名认证,以校验参数或参数值在传输途中是否发生了更改。
一个合法的请求由以下几部分组成:
方法请求地址:即访问服务器地址
api.novadax.com
,比如https://api.novadax.com/v1/common/symbols
API 访问密钥(AccessKeyId):您申请的 API Key 中的
Access Key
。签名方法(SignatureMethod):用户计算签名的基于哈希的协议,此处使用
hmac_sha256
时间戳(Timestamp):当前时间的毫秒时间戳,比如
1564988445199
。必选和可选参数:每个方法都有一组用于定义 API 调用的必需参数和可选参数。可以在每个方法的说明中查看这些参数及其含义。
签名:签名计算得出的值,用于确保签名有效和未被篡改。
签名规则
GET 加密举例
1. 查询字符串为
queryStr = "name=姓名&cpf=123456&birthday=2017-08-01"
2. 将查询字符串 URL Encode 之后 按照 ASCII 码的顺序对参数名进行排序
sort(urlencode(queryStr)) // birthday=2017-08-01&cpf=123456&name=%E5%A7%93%E5%90%8D
3. 按{Request Method}\n{Request URL}\n{Sorted Query Parameters}\n{TimeStamp}
的格式组成最终需要签名的字符串
signStr = "GET\n/v1/orders/get\nbirthday=2017-08-01&cpf=123456&name=%E5%A7%93%E5%90%8D\n1564988445199"
4. 用上一步里生成的 "字符串" 和你的密钥 (Secret Key) 生成一个数字签名
sign = hmac_sha256(signStr, SecretKey)
5. 将Accesskey
与Sign
与TimesStamp
信息一同添加到指定的header中
request.header.add("X-Nova-Access-Key", AccessKey)
request.header.add("X-Nova-Signature", Sign)
request.header.add("X-Nova-Timestamp", TimeStamp)
6. JAVA 代码如下图
POST 加密举例
1.请求体中Request Body
的内容为
body = {"name":"姓名", "cpf":"123456", "birthday":"2017-08-01"} // MD5 后的值为 896b0797c6bdf52abf5cb18e2d776efe
2.将Request Body
中的的内容 MD5 之后按 {Request Method}\n{Request URL}\n{MD5 Request Body}\n{TimeStamp}
的规则进行拼接
signStr = "POST\n/v1/order/create\n896b0797c6bdf52abf5cb18e2d776efe\n1564988445199"
3. 用上一步里生成的 “字符串” 和你的密钥 (Secret Key) 生成一个数字签名
sign = hmac_sha256(signStr, SecretKey)
4. 将Accesskey
与Sign
与TimesStamp
信息一同添加到指定的 Header 中
request.header.add("X-Nova-Access-Key", AccessKey)
request.header.add("X-Nova-Signature", Sign)
request.header.add("X-Nova-Timestamp", TimeStamp)
5. JAVA 代码如下图
子账号
如果您需要使用子账号执行订单相关操作,请在请求中添加 X-Nova-Account-Id 请求头,并将其值设置为相应的子账号 ID。
request.header.add("X-Nova-Account-Id", "CA1234567890")
响应格式
所有的接口返回都是 JSON 格式。在 JSON 最上层有几个表示请求状态和属性的字段:code
、data
和 message
实际的接口返回内容在 data
字段里。
成功请求的返回
{
"code": "A10000",
"data": {...},
"message": "Success"
}
异常请求的返回
{
"code": "A99999",
"data": {...},
"message": "fail."
}
返回内容将会是以下格式:
参数名称 | 数据类型 | 描述 |
---|---|---|
code | string | 状态 |
message | string | 描述 |
data | object | 数据主体 |
响应字典
错误码 | HTTP 状态码 | 消息 | 解释 |
---|---|---|---|
A99999 | 500 | Failed | 系统服务异常 |
A10000 | 200 | Success | 请求成功 |
A10001 | 400 | Params error |
参数错误 |
A10002 | 404 | Api not found |
无相关API |
A10003 | 403 | Authentication failed |
鉴权失败 |
A10004 | 429 | Too many requests |
请求频率过快 |
A10005 | 403 | Kyc required |
请先完成KYC |
A10006 | 403 | Customer canceled |
用户已注销 |
A10007 | 400 | Account not exist |
子账户不存在 |
A10011 | 400 | Symbol not exist |
交易对不存在 |
A10012 | 400 | Symbol not trading |
交易对当前不交易 |
A10013 | 503 | Symbol maintain |
交易对维护 |
A30001 | 400 | Order not found |
订单未找到 |
A30002 | 400 | Order amount is too small |
订单数量太小 |
A30003 | 400 | Order amount is invalid |
订单数量无效 |
A30004 | 400 | Order value is too small |
订单金额大小 |
A30005 | 400 | Order value is invalid |
订单金额无效 |
A30006 | 400 | Order price is invalid |
订单价格无效 |
A30007 | 400 | Insufficient balance |
余额不足 |
A30008 | 400 | Order was closed |
订单已结束 |
A30009 | 400 | Order canceled |
订单已取消 |
A30010 | 400 | Order cancelling |
订单正在取消中 |
A30011 | 400 | Order price too high |
订单价格过高 |
A30012 | 400 | Order price too low |
订单价格过低 |
常见问题
签名失败
- 检查 API Key 是否有效,是否复制正确,是否有绑定 IP 白名单
- 检查时间戳是否是 UTC 时间
- 检查参数是否按字母排序
- 检查编码是否为
UTF-8
- 检查 GET 是否以表单方式提交
- 检查 POST 的数据格式是否是 JSON 格式
- 检查签名结果是否有进行 URI 编码
- 检查 POST 请求是否在 Header 中声明
Content-Type: application/json
更新记录
2023-11-15
- 优化限频逻辑,使每个子账户拥有独立的请求频率限制。
- 支持通过请求头
X-Nova-Account-Id
传递子账号操作订单等信息 - 修改
POST /v1/orders/create
:增加字段clientOrderId
- 修改
POST /v1/orders/cancel
:增加字段clientOrderId
- 修改
GET /v1/orders/get
:增加字段clientOrderId
- 修改
GET /v1/orders/list
:增加字段clientOrderId
- 新增
POST /v1/orders/batch-create
:批量下单 - 新增
POST /v1/orders/batch-cancel
:批量撤单 - 新增
POST /v1/orders/cancel-by-symbol
:可基于交易对撤销所有订单
2023-09-12
- 限频逻辑调整,不再基于单个API进行频率限制,而是采用整体权重限制的方式。
2021-01-30
- 修改
GET /crypto/chain/{code}
:增加返回字段chainAlias
。 - 修改
POST /v1/wallet/withdraw/coin
:新增请求参数chainAlias
。
2020-12-17
- 影响 API 创建的订单查询功能:撤销后 2 小时无法查询,相关接口如下:
GET /v1/orders/get
GET /v1/orders/list
2020-11-11
- 新增 WebSocket 相关接口。
2020-10-12
- 新增
GET /v1/wallet/query/deposit-withdraw
:查询用户存取币记录。 - 新增
GET /v1/orders/fills
:查询历史成交明细。
2020-05-20
- 修改
GET /v1/orders/list
:将symbol
参数改为非必传。
2020-03-05
- 新增
GET /v1/common/symbol
:获取单个交易币对配置。
2019-12-05
- 修改
POST /v1/orders/create
:增加字段accountId
。 - 修改
GET /v1/orders/list
:增加字段accountId
。 - 新增
GET /v1/account/subs
:获取子账户列表。 - 新增
GET /v1/account/subs/balance
:查询子账户余额。 - 新增
GET /v1/account/subs/transfer/record
:查询子账户转账记录。 - 新增
POST /v1/account/subs/transfer
:发起子账户互转。
2019-09-18
- 新增
POST /v1/account/withdraw/coin
:提币。
基础信息
获取单个交易币对配置
返回所有单个的交易币对及相关信息
响应:
{
"code": "A10000",
"data": {
"symbol": "BTC_BRL",
"baseCurrency": "BTC",
"quoteCurrency": "BRL",
"amountPrecision": 4,
"pricePrecision": 2,
"valuePrecision": 4,
"minOrderAmount": "0.001",
"minOrderValue": "5",
},
"message": "Success"
}
请求地址
GET /v1/common/symbol
权重:1
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
symbol | string | 交易对 |
baseCurrency | string | 基础货币 |
quoteCurrency | string | 报价货币 |
pricePrecision | number | 交易价格精度 |
amountPrecision | number | 交易数量精度 |
valuePrecision | number | 交易金额精度 |
minOrderAmount | string | 最小交易数量 |
minOrderValue | string | 最小交易金额 |
获取所有交易币对配置
返回所有支持的交易币对及相关信息
响应:
{
"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"
}
请求地址
GET /v1/common/symbols
权重:1
请求参数
此请求不需要入参
响应
字段名称 | 类型 | 描述 |
---|---|---|
symbol | string | 交易对 |
baseCurrency | string | 基础货币 |
quoteCurrency | string | 报价货币 |
pricePrecision | number | 交易价格精度 |
amountPrecision | number | 交易数量精度 |
valuePrecision | number | 交易金额精度 |
minOrderAmount | string | 最小交易数量 |
minOrderValue | string | 最小交易金额 |
获取系统时间
返回服务器时间戳
响应:
{
"code": "A10000",
"data": 1565080348983,
"message": "Success"
}
请求地址
GET /v1/common/timestamp
权重:1
请求参数
此请求不需要入参
响应
时间戳
行情
获取全部聚合行情
返回所有币种的行情和24小时的聚合数据
响应:
{
"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"
}
请求地址
GET /v1/market/tickers
权重:5
请求参数
此请求不需要参数
响应
参数名 | 类型 | 描述 |
---|---|---|
symbol | string | 币对名称 |
lastPrice | string | 最新成交价 |
bid | string | 买一价 |
ask | string | 卖一价 |
open24h | string | 24小时开盘价 |
high24h | string | 24小时最高价 |
low24h | string | 24小时最低价 |
baseVolume24h | string | 24小时成交量,按交易货币统计 |
quoteVolume24h | string | 24小时成交量,按计价货币统计 |
timestamp | number | 系统时间戳 |
获取单个币对聚合行情
返回单个币种行情和24小时的聚合数据
响应:
{
"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"
}
请求地址
GET /v1/market/ticker
权重:1
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
响应
参数名 | 类型 | 描述 |
---|---|---|
symbol | string | 币对名称 |
lastPrice | string | 最新成交价 |
bid | string | 买一价 |
ask | string | 卖一价 |
open24h | string | 24小时开盘价 |
high24h | string | 24小时最高价 |
low24h | string | 24小时最低价 |
baseVolume24h | string | 24小时成交量,按交易货币统计 |
quoteVolume24h | string | 24小时成交量,按计价货币统计 |
timestamp | number | 系统时间戳 |
获取深度数据
返回未聚合的原始深度数据
响应:
{
"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"
}
请求地址
GET /v1/market/depth
权重:1
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
limit | 否 | number | 返回条数,最多50条 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
asks | array | 卖集合 |
asks[][0] | string | 卖的价格 |
asks[][1] | string | 卖的数量 |
bids | array | 买集合 |
bids[][0] | string | 买的价格 |
bids[][1] | string | 买的数量 |
timestamp | number | 时间戳 |
获取成交数据
返回此币对的历史成交数据
响应:
{
"code": "A10000",
"data": [
{
"price": "43657.57",
"amount": "1",
"side": "SELL",
"timestamp": 1565007823401
},
{
"price": "43687.16",
"amount": "0.071",
"side": "BUY",
"timestamp": 1565007198261
}
],
"message": "Success"
}
请求地址
GET /v1/market/trades
权重:5
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
limit | 否 | number | 返回条数,默认100条 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
price | string | 成交价格 |
amount | string | 成交数量 |
side | string | 成交方向,可能值:BUY、SELL |
timestamp | number | 成交时间戳 |
蜡烛图数据
响应:
{
"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"
}
请求地址
GET /v1/market/kline/history
权重:5
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
unit | 是 | string | ONE_MIN,FIVE_MIN, FIFTEEN_MIN,HALF_HOU,ONE_HOU,ONE_DAY,ONE_WEE,ONE_MON; |
from | 是 | number | 开始时间 所有时间单元只保存最近3000条数据 |
to | 是 | number | 结束时间 所有时间单元只保存最近3000条数据 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
unit | string | 成交时间单位 |
amount | string | 成交数量 |
count | string | 成交笔数 |
openPrice | string | 开始价格 |
closePrice | string | 结束价格 |
highPrice | string | 最高价格 |
lowPrice | string | 最低价格 |
symbol | string | 交易对 |
score | string | 时间戳 |
vol | string | 交易量 |
订单
订单简介
订单类型(order.type)
- LIMIT:限价交易
- MARKET:市价交易
- STOP_LIMIT:止盈止损交易,当满足触发条件后,才会以限价交易进入撮合队列
- STOP_MARKET:止盈止损交易,当满足触发条件后,才会以市价交易进入撮合队列
订单止盈止损交易运算符 (order.operator)
- GTE:大于或等于(>=)
- LTE:小于或等于(<=)
订单方向(order.side)
- BUY:买入
- SELL:卖出
订单状态(order.status)
- SUBMITTED:已下单,未完结,尚未进入撮合队列
- PROCESSING:已下单,未完结,已进入撮合队列
- PARTIAL_FILLED:已部分成交,未完结,还在撮合队列中
- PARTIAL_CANCELED:部分成交后被用户撤销,已完结,不在撮合队列中
- PARTIAL_REJECTED:部分成交后被系统拒绝,已完结,不在撮合队列中
- FILLED:已全部成交,已完结,不在撮合队列中
- CANCELED:未成交后被用户撤销,已完结,不在撮合队列中
- REJECTED:未成交后被系统拒绝,已完结,不在撮合队列中
- CANCELING:撤销中,过渡状态,未完结,在撮合队列中
成交角色(order.role)
- MAKER:创造流动性
- TAKER:拿走流动性
下单
创建一笔新的订单
响应:
{
"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"
}
请求地址
POST /v1/orders/create
权重:5
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
clientOrderId | 否 | string | 客户自定义的唯一订单 ID,最长不超过 30 个字符 |
symbol | 是 | string | 交易对,例如 BTC_BRL |
type | 是 | string | 订单类型,固定值 LIMIT |
side | 是 | string | 订单方向,固定值 BUY |
price | 否 | string | 购买价格 |
amount | 否 | string | 订单数量,即基础货币的数量,如限价购买 BTC_BRL 交易对中 BTC 的数量 |
value | 否 | string | 交易金额,即报价币的数量,如市价购买 BTC_BRL 交易对中 BRL 的数量 |
operator | 否 | string | 止盈止损交易运算符(详见订单简介) |
stopPrice | 否 | string | 止盈止损触发价格 |
基于订单 type、side 不同,强制要求某些参数:
type + side | 强制要求的参数 |
---|---|
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 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
id | string | 订单ID |
clientOrderId | string | 客户自定义的唯一订单 ID |
symbol | string | 交易对 |
type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
averagePrice | string | 平均订单价格 |
amount | string | 订单数量,即基础货币的数量 |
filledAmount | string | 成交数量,即订单中已成交的基础货币数量 |
value | string | 订单金额,即报价货币的数量 |
filledValue | string | 成交金额,即订单中已成交的报价货币的数量 |
filledFee | string | 已成交的手续费 |
status | string | 订单状态(详见订单简介) |
timestamp | number | 订单创建时间戳 |
批量下单
批量创建新的订单,最多支持同时提交20个订单
响应:
{
"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"
}
请求地址
POST /v1/orders/batch-create
权重:50
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
>clientOrderId | 否 | string | 客户自定义的唯一订单 ID,最长不超过 30 个字符 |
>symbol | 是 | string | 交易对,例如 BTC_BRL |
>type | 是 | string | 订单类型,固定值 LIMIT |
>side | 是 | string | 订单方向,固定值 BUY |
>price | 否 | string | 购买价格 |
>amount | 否 | string | 订单数量,即基础货币的数量,如限价购买 BTC_BRL 交易对中 BTC 的数量 |
>value | 否 | string | 交易金额,即报价币的数量,如市价购买 BTC_BRL 交易对中 BRL 的数量 |
>operator | 否 | string | 止盈止损交易运算符(详见订单简介) |
>stopPrice | 否 | string | 止盈止损触发价格 |
基于订单 type、side 不同,强制要求某些参数:
type + side | 强制要求的参数 |
---|---|
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 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
data | array | 订单列表 |
>id | string | 订单ID |
>clientOrderId | string | 客户自定义的唯一订单 ID |
>symbol | string | 交易对 |
>type | string | 订单类型 |
>side | string | 订单方向 |
>price | string | 订单价格 |
>averagePrice | string | 平均订单价格 |
>amount | string | 订单数量,即基础货币的数量 |
>filledAmount | string | 成交数量,即订单中已成交的基础货币数量 |
>value | string | 订单金额,即报价货币的数量 |
>filledValue | string | 成交金额,即订单中已成交的报价货币的数量 |
>filledFee | string | 已成交的手续费 |
>status | string | 订单状态(详见订单简介) |
>timestamp | number | 订单创建时间戳 |
根据 ID 撤销订单
提交订单撤销请求
响应:
{
"code": "A10000",
"data": {
"result": true
},
"message": "Success"
}
请求地址
POST /v1/orders/cancel
权重:1
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
id | 否 | string | 订单ID |
clientOrderId | 否 | string | 客户自定义的唯一订单 ID |
响应
字段名称 | 类型 | 描述 |
---|---|---|
result | boolean | 撤销请求提交结果 |
根据 ID 批量撤销订单
批量提交订单撤销请求,最多支持同时提交20个订单
响应:
{
"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"
}
请求地址
POST /v1/orders/batch-cancel
权重:10
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
>id | 否 | string | 订单ID |
>clientOrderId | 否 | string | 客户自定义的唯一订单 ID |
响应
字段名称 | 类型 | 描述 |
---|---|---|
data | array | 被撤销的订单列表 |
>id | string | 订单ID |
>clientOrderId | string | 客户自定义的唯一订单 ID |
>result | boolean | 撤销请求提交结果 |
根据交易对撤销订单
根据交易对提交订单撤销请求
响应:
{
"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"
}
请求地址
POST /v1/orders/cancel-by-symbol
权重:10
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对,例如 BTC_BRL |
响应
字段名称 | 类型 | 描述 |
---|---|---|
data | array | 被撤销的订单列表 |
>id | string | 订单ID |
>clientOrderId | string | 客户自定义的唯一订单 ID |
>result | boolean | 撤销请求提交结果 |
查询订单详情
查询订单最新状态和详情。通过API创建的订单,撤销超过2小时后无法查询。
响应:
{
"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"
}
请求地址
GET /v1/orders/get
权重:1
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
id | 否 | string | 订单ID |
clientOrderId | 否 | string | 客户自定义的唯一订单 ID |
响应
字段名称 | 类型 | 描述 |
---|---|---|
id | string | 订单ID |
clientOrderId | string | 客户自定义的唯一订单 ID |
symbol | string | 交易对 |
type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
averagePrice | string | 平均订单价格 |
amount | string | 订单数量,即基础货币的数量 |
filledAmount | string | 成交数量,即订单中已成交的基础货币数量 |
value | string | 订单金额,即报价货币的数量 |
filledValue | string | 成交金额,即订单中已成交的报价货币的数量 |
filledFee | string | 已成交的手续费 |
status | string | 订单状态(详见订单简介) |
timestamp | number | 订单创建时间戳 |
查询历史订单
基于指定条件查询历史订单。通过API创建的订单,撤销超过2小时后无法查询。
响应:
{
"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"
}
请求地址
GET /v1/orders/list
权重:10
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 否 | string | 交易对,例如BTC_BRL |
status | 否 | string | 订单状态(详见订单简介),多个状态可用逗号分割。也可以用 FINISHED 查询未完结订单,或用 UNFINISHED 查询已完结订单 |
fromId | 否 | string | 从指定订单开始 |
toId | 否 | string | 从指定订单结束 |
fromTimestamp | 否 | number | 从指定时间开始,以订单创建时间查询,使用毫秒时间戳 |
toTimestamp | 否 | number | 从指定时间结束,以订单创建时间查询,使用毫秒时间戳 |
limit | 否 | string | 返回条数,默认100条,最多100条 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
id | string | 订单ID |
clientOrderId | string | 客户自定义的唯一订单 ID |
symbol | string | 交易对 |
type | string | 订单类型 |
side | string | 订单方向 |
price | string | 订单价格 |
averagePrice | string | 平均订单价格 |
amount | string | 订单数量,即基础货币的数量 |
filledAmount | string | 成交数量,即订单中已成交的基础货币数量 |
value | string | 订单金额,即报价货币的数量 |
filledValue | string | 成交金额,即订单中已成交的报价货币的数量 |
filledFee | string | 已成交的手续费 |
status | string | 订单状态(详见订单简介) |
timestamp | number | 订单创建时间戳 |
查询成交明细
查询指定订单或历史成交明细
响应:
{
"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.0000242",
"feeCurrency": "BTC",
"role": "MAKER",
"timestamp": 1565171057882
}
],
"message": "Success"
}
请求地址
GET /v1/orders/fills
权重:10
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
orderId | 否 | string | 订单ID |
symbol | 否 | string | 交易对,例如BTC_BRL |
fromId | 否 | string | 从指定成交 ID 开始 |
toId | 否 | string | 从指定成交 ID 结束 |
fromTimestamp | 否 | number | 从指定时间开始,以成交时间查询,使用毫秒时间戳 |
toTimestamp | 否 | number | 从指定时间结束,以成交时间查询,使用毫秒时间戳 |
limit | 否 | string | 返回条数,默认100条,最多100条 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
id | string | 成交ID |
orderId | string | 订单ID |
symbol | string | 交易对 |
side | string | 交易方向(详见订单简介) |
price | string | 成交价格 |
amount | string | 成交数量 |
fee | string | 手续费 |
feeCurrency | string | 手续费币种 |
feeAmount | string | 手续费数量 |
role | string | 成交角色(详见订单简介) |
timestamp | number | 成交时间,毫秒时间戳 |
账户
账户余额
响应:
{
"code": "A10000",
"data": [
{
"available": "1.23",
"balance": "0.23",
"currency": "BTC",
"hold": "1"
}
],
"message": "Success"
}
请求地址
GET /v1/account/getBalance
权重:1
请求返回
数据 | 数据类型 | 描述 |
---|---|---|
currency | string | 币种 |
balance | string | 总余额 |
hold | string | 冻结金额 |
available | string | 可用余额 |
子账户列表
响应:
{
"code": "A10000",
"data": [{
"subId": "CA648856083527372800",
"state": "Normal",
"subAccount": "003",
"subIdentify": "003"
}],
"message": "Success"
}
请求地址
GET /v1/account/subs
权重:1
请求参数
No parameters are needed for this endpoint.
请求返回
Field | Data Type | Description |
---|---|---|
subId | string | Sub account ID |
state | string | Sub account state, Normal/Frozen |
subAccount | string | Sub account name |
subIdentify | string | Sub account note |
查询子账户余额
响应:
{
"code":"A10000",
"data":[
{
"balance":"7.22",
"currency":"BTC"
}
],
"message":"Success"
}
请求地址
GET /v1/account/subs/balance
权重:1
请求参数
参数 | 是否需要 | 数据类型 | 描述 |
---|---|---|---|
subId | ture | string | 子账户ID |
请求返回
参数 | 数据类型 | 描述 |
---|---|---|
balance | string | 账户余额 |
currency | string | 账户币种 |
子账户转账记录
响应:
{
"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"
}
请求地址
GET /v1/account/subs/transfer/record
权重:10
请求参数
参数 | 是否需要 | 类型 | 描述 |
---|---|---|---|
subId | ture | string | 子账户 ID |
请求返回
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) |
子账户转账
响应:
{
"code":"A10000",
"message":"Success",
"data":40
}
请求地址
POST /v1/account/subs/transfer
权重:5
请求参数
参数 | 需要 | 类型 | 描述 |
---|---|---|---|
subId | true | string | 子账户ID |
currency | true | string | 转账币 |
transferAmount | true | string | 转账金额 |
transferType | true | string | Type,master-transfer-in or master-transfer-out |
请求返回
Data field returns the transfer record ID.
钱包
获取钱包存取记录
响应:
{
"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"
}
请求地址
GET /v1/wallet/query/deposit-withdraw
权重:10
请求参数
参数 | 类型 | 需要 | 描述 | 默认值 |
---|---|---|---|---|
currency | string | false | 币种. BTC | NA |
type | string | false | 记录类型 | coin_in and coin_out |
direct | string | false | 排序规则,asc or desc |
asc |
size | int | false | 返回记录 | 100 |
start | string | false | 记录ID | NA |
返回内容
参数 | 类型 | 描述 |
---|---|---|
id | string | 记录ID |
type | string | 记录类型 |
currency | string | 币种 |
txHash | string | hash |
address | string | 地址 |
addressTag | string | 地址tag |
chain | string | 区块链名字,internal 走内部转账 |
amount | decimal | 金额 |
state | string | 状态 |
createdAt | long | 下单时间 |
updatedAt | long | 更新时间 |
记录状态
State | 描述 |
---|---|
Pending | 待打款 |
x/M confirming |
确认中, M 是需要的确认数 |
SUCCESS | 成功 |
FAIL | 失败 |
提币
响应:
{
"code":"A10000",
"data": "DR123",
"message":"Success"
}
请求地址
POST /v1/wallet/withdraw/coin
权重:600
请求参数
参数 | Mandatory | 类型 | 描述 |
---|---|---|---|
code | ture | string | 币种 BTC |
amount | true | string | 提币金额 |
wallet | true | string | 提币地址 |
chainAlias | true | string | 提币地址所在的区块链简写,默认选择第一个上线币 |
tag | false | string | 地址Tag,需要的币种 XLM, XRP, EOS等 |
返回内容
The data 参数 will return the withdrawal id.
支持的区块链查询
请求地址
GET /crypto/chain/{code}
权重:5
请求参数
parm r name | param type | param note |
---|---|---|
code | String | crypto accout code,默认值 is "ALL" |
Response parameters
param name | param type | param note |
---|---|---|
accountCode | String | 账户使用code |
accountType | String | 账户类型:DIGITAL,LEGAL |
accountPrecision | Integer | 账户控制的精度 |
accountOrder | Integer | 账户显示顺序 |
accountState | Integer | 账户状态,1:in-use,0: off-use |
tokens | List | 账户支持的token |
Token列表
参数 | 类型 | 描述 |
---|---|---|
codeAccount | String | 账户使用的code |
chainAlias | String | 区块链简写 |
chainName | String | 区块链全名 |
mainAddr | String | 主地址 |
useMemo | Integer | 是否使用tag/memo |
useDynamicSendFee | String | 是否动态手续费,1:using,0:not using |
minConf | Integer | 最小确认数 |
useFirst | Integer | 是否是第一个支持的链 |
state | Integer | 是否在用,1:in-use,0:off-use |
chainURL | String | 区块链地址 |
chainAddressURL | String | 区块链地址查询 |
chainHashURL | String | 区块链交易查询 |
officialURL | String | 官方网址 |
WebSocket Public
接入
NovaDAX WebSocket API 底层使用 Socket.io 实现,有关 Socket.IO 的更多详细信息,可参考 Socket.IO 官方网站。
地址
wss://api.novadax.com
// Socket.io 建立连接示例
const io = require("socket.io-client");
const socket = io("wss://api.novadax.com", {
transports: ['websocket']
});
// Socket.io 订阅示例
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 取消订阅示例
socket.emit("UNSUBSCRIBE", ["MARKET.BTC_USDT.DEPTH.LEVEL0"])
限制
- 只支持 Socket.io 的
websocket
transports - 同一 IP 最多建立 10 个 WebSocket 连接
订阅主题
当订阅相关主题,你将能收到相关主题下的所有推送,订阅格式
socket.emit("SUBSCRIBE", ["XXX"])
取消订阅
订阅主题后,如不想再收到对应主题的推送,可以取消订阅。取消订阅格式如下
socket.emit("UNSUBSCRIBE", ["XXX"])
订阅全部币对聚合行情
订阅后,将会每秒推送一次所有币对的 Ticker 数据
数据
[
{
"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
}
]
订阅主题
MARKET.TICKERS
响应
参数名 | 类型 | 描述 |
---|---|---|
symbol | string | 币对名称 |
lastPrice | string | 最新成交价 |
bid | string | 买一价 |
ask | string | 卖一价 |
open24h | string | 24小时开盘价 |
high24h | string | 24小时最高价 |
low24h | string | 24小时最低价 |
baseVolume24h | string | 24小时成交量,按交易货币统计 |
quoteVolume24h | string | 24小时成交量,按计价货币统计 |
timestamp | number | 系统时间戳 |
订阅单个币对聚合行情
订阅后,将会每秒推送一次指定币对的 Ticker 数据
数据
{
"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
}
订阅主题
MARKET.{{symbol}}.TICKER
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
响应
参数名 | 类型 | 描述 |
---|---|---|
symbol | string | 币对名称 |
lastPrice | string | 最新成交价 |
bid | string | 买一价 |
ask | string | 卖一价 |
open24h | string | 24小时开盘价 |
high24h | string | 24小时最高价 |
low24h | string | 24小时最低价 |
baseVolume24h | string | 24小时成交量,按交易货币统计 |
quoteVolume24h | string | 24小时成交量,按计价货币统计 |
timestamp | number | 系统时间戳 |
订阅深度数据
订阅后,将会每秒推送一次指定币对的 Depth 数据
数据
{
"asks": [
["43687.16", "0.5194"],
["43687.2", "1.3129"]
],
"bids": [
["43657.57", "0.6135"],
["43657.46", "0.0559"]
],
"timestamp": 1565057338020
}
订阅主题
MARKET.{{symbol}}.DEPTH.LEVEL0
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
asks | array | 卖集合 |
asks[][0] | string | 卖的价格 |
asks[][1] | string | 卖的数量 |
bids | array | 买集合 |
bids[][0] | string | 买的价格 |
bids[][1] | string | 买的数量 |
timestamp | number | 时间戳 |
订阅成交数据
订阅后,当有成交后,将会推送成交信息
数据
[
{
"price": "43657.57",
"amount": "1",
"side": "SELL",
"timestamp": 1565007823401
},
{
"price": "43687.16",
"amount": "0.071",
"side": "BUY",
"timestamp": 1565007198261
}
]
订阅主题
MARKET.{{symbol}}.TRADE
请求参数
字段名称 | 是否必填 | 类型 | 描述 |
---|---|---|---|
symbol | 是 | string | 交易对 |
响应
字段名称 | 类型 | 描述 |
---|---|---|
price | string | 成交价格 |
amount | string | 成交数量 |
side | string | 成交方向,可能值:BUY、SELL |
timestamp | number | 成交时间戳 |