本文介绍火币Huobi API
REST API 简介
火币为用户提供了一套全新的API,可以帮用户快速接入火币PRO站及HADAX站的交易系统,实现程序化交易。
访问地址 | 适用站点 | 适用功能 | 适用交易对 |
---|---|---|---|
https://api.huobi.pro/market | 火币PRO | 行情 | 所有Pro站交易中的交易对 |
https://api.huobi.pro/v1 | 火币PRO | 交易 | 同上 |
https://api.hadax.com/market | HADAX hadax.com | 行情 | 所有HADAX站交易中的交易对 |
https://api.hadax.com/v1 | HADAX hadax.com | 交易 | 同上 |
通过API可以实现以下功能:
- 市场行情信息查询(K线、深度、实时成交、24小时行情)
- 账户资产信息查询
- 下单、撤单操作
- 订单信息查询 所有请求基于 HTTPS 协议。在使用中如果遇到问题,请加技术讨论 QQ 群: 火币网API交流群(7) 887876710(加群时请注明uid和编程语言),我们将尽力帮您答疑解惑。
安全认证
目前关于apikey申请和修改,请在“账户 - API管理”页面进行相关操作。其中AccessKey为API 访问密钥,SecretKey为用户对请求进行签名的密钥(仅申请时可见)。Pro站和HADAX站apikey通用。
重要提示:这两个密钥与账号安全紧密相关,无论何时都请勿向其它人透露。
合法请求结构
基于安全考虑,除行情API 外的 API 请求都必须进行签名运算。一个合法的请求由以下几部分组成:
-
方法请求地址 即访问服务器地址:api.huobi.pro或者api.hadax.com后面跟上方法名,比如api.huobi.pro/v1/order/orders。
-
API 访问密钥(AccessKeyId) 您申请的 APIKEY 中的AccessKey。
-
签名方法(SignatureMethod) 用户计算签名的基于哈希的协议,此处使用 HmacSHA256。
-
签名版本(SignatureVersion) 签名协议的版本,此处使用2。
-
时间戳(Timestamp) 您发出请求的时间 (UTC 时区) (UTC 时区) (UTC 时区) 。在查询请求中包含此值有助于防止第三方截取您的请求。如:2017-05-11T16:22:06。再次强调是 (UTC 时区) 。
-
必选和可选参数 每个方法都有一组用于定义 API 调用的必需参数和可选参数。可以在每个方法的说明中查看这些参数及其含义。 请一定注意:对于GET请求,每个方法自带的参数都需要进行签名运算; 对于POST请求,每个方法自带的参数不进行签名认证,即POST请求中需要进行签名运算的只有AccessKeyId、SignatureMethod、SignatureVersion、Timestamp四个参数,其它参数放在body中。
-
签名 签名计算得出的值,用于确保签名有效和未被篡改。
例:
https://api.huobi.pro/v1/order/orders?
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2017-05-11T15%3A19%3A30
&order-id=1234567890
&Signature=calculated value
签名运算
API 请求在通过 Internet 发送的过程中极有可能被篡改。为了确保请求未被更改,我们会要求用户在每个请求中带上签名(行情 API 除外),来校验参数或参数值在传输途中是否发生了更改。
计算签名所需的步骤:
- 规范要计算签名的请求 因为使用 HMAC 进行签名计算时,使用不同内容计算得到的结果会完全不同。所以在进行签名计算前,请先对请求进行规范化处理。下面以查询某订单详情请求为例进行说明
https://api.huobi.pro/v1/order/orders?
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2017-05-11T15:19:30
&order-id=1234567890
- 请求方法(GET 或 POST),后面添加换行符\n。
GET\n
- 添加小写的访问地址,后面添加换行符\n。
api.huobi.pro\n
- 访问方法的路径,后面添加换行符\n。
/v1/order/orders\n
- 按照ASCII码的顺序对参数名进行排序(使用 UTF-8 编码,且进行了 URI 编码,十六进制字符必须大写,如‘:’会被编码为\'%3A\',空格被编码为\'%20\')。 例如,下面是请求参数的原始顺序,进行过编码后。
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
order-id=1234567890
SignatureMethod=HmacSHA256
SignatureVersion=2
Timestamp=2017-05-11T15%3A19%3A30
这些参数会被排序为:
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx
SignatureMethod=HmacSHA256
SignatureVersion=2
Timestamp=2017-05-11T15%3A19%3A30
order-id=1234567890
按照以上顺序,将各参数使用字符’&’连接。
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-05-11T15%3A19%3A30&order-id=1234567890
组成最终的要进行签名计算的字符串如下:
GET\n
api.huobi.pro\n
/v1/order/orders\n
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-05-11T15%3A19%3A30&order-id=1234567890
计算签名,将以下两个参数传入加密哈希函数: 要进行签名计算的字符串
GET\n
api.huobi.pro\n
/v1/order/orders\n
AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2017-05-11T15%3A19%3A30&order-id=1234567890
进行签名的密钥(SecretKey)
b0xxxxxx-c6xxxxxx-94xxxxxx-dxxxx
得到签名计算结果并进行 Base64编码
4F65x5A2bLyMWVQj3Aqp+B4w+ivaA7n5Oi2SuYtCJ9o=
将上述值作为参数Signature的取值添加到 API 请求中。 将此参数添加到请求时,必须将该值进行 URI 编码。
最终,发送到服务器的 API 请求应该为:
https://api.huobi.pro/v1/order/orders?AccessKeyId=e2xxxxxx-99xxxxxx-84xxxxxx-7xxxx&order-id=1
请求说明
- 访问地址
-
注意:HADAX和Pro是两个不同的交易站,所以行情信息也不一样,请通过 Pro symbols 和 HADAX symbols 查询相应的交易对信息
-
Pro 站: 行情: https://api.huobi.pro/market 交易: https://api.huobi.pro/v1
-
HADAX 站: 行情: https://api.hadax.com/market 交易: https://api.hadax.com/v1
- POST请求头信息中必须声明 Content-Type:application/json;GET请求头信息中必须声明 Content-Type:application/x-www-form-urlencoded。(汉语用户建议设置 Accept-Language:zh-cn)
- 所有请求参数请按照 API 说明进行参数封装。
- 将封装好参数的 API 请求通过 POST 或 GET 的方式提交到服务器。
- 火币网处理请求,并返回相应的 JSON 格式结果。
- 请使用 https 请求。
- 限制频率为10秒100次(单个APIKEY维度限制,建议行情API访问也要加上签名,否则限频会更严格)。
- 查询资产详情方法调用顺序:查询当前用户的所有账户->查询指定账户的余额
- 支持所有Pro站上交易中的交易对,上新币保持与网站同步。
API Reference
请务必在header中设置user agent为 \'User-Agent\': \'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36\'
symbol 规则: 基础币种+计价币种。如BTC/USDT,symbol为btcusdt;ETH/BTC, symbol为ethbtc。以此类推
接口列表
接口数据类型 | 请求方法 | 类型 | 描述 | 需要验签 | 子账号可用 |
---|---|---|---|---|---|
市场行情 | GET /market/history/kline | GET | K线 | N | Y |
市场行情 | GET /market/detail/merged | GET | 滚动24小时交易和最优报价聚合行情(单个symbol) | N | Y |
市场行情 | GET /market/tickers | GET | 全部symbol的交易行情 | N | Y |
市场行情 | GET /market/depth | GET | 市场深度行情(单个symbol) | N | Y |
市场行情 | GET /market/trade | GET | 单个symbol最新成交记录 | N | Y |
市场行情 | GET /market/history/trade | GET | 单个symbol批量成交记录 | N | Y |
市场行情 | GET /market/detail | GET | 滚动24小时交易聚合行情(单个symbol) | N | Y |
交易品种信息 | GET /v1/common/symbols | GET | 交易品种的计价货币和报价精度 | N | Y |
交易品种信息 | GET /v1/common/currencys | GET | 交易币种列表 | N | Y |
系统信息 | GET /v1/common/timestamp | GET | 查询当前系统时间 | N | Y |
账户信息 | GET /v1/account/accounts | GET | 查询用户的所有账户状态 | Y | Y |
账户信息 | GET /v1/account/accounts/{account-id}/balance | GET | 查询指定账户余额 | Y | Y |
交易 | POST/v1/order/orders/place | POST | 下单 | Y | Y |
交易 | POST/v1/order/orders/{order-id}/submitcancel | POST | 按order-id撤销一个订单 | Y | Y |
交易 | POST /v1/order/orders/batchcancel | POST | 按order_id, 批量撤销订单(up to 50) | Y | Y |
交易 | POST /v1/order/orders/batchCancelOpenOrders | POST | 按订单条件批量撤销订单(up to 100) | Y | Y |
用户订单信息 | GET /v1/order/orders/{order-id} | GET | 根据order-id查询订单详情 | Y | Y |
用户订单信息 | GET /v1/order/orders/{order-id}/matchresults | GET | 根据order-id查询订单的成交明细 | Y | Y |
用户订单信息 | GET /v1/order/orders | GET | 查询用户当前委托、或历史委托订单 (up to 100) | Y | Y |
用户订单信息 | GET /v1/order/matchresults | GET | 查询用户当前成交、历史成交 | Y | Y |
用户订单信息 | GET /v1/order/openOrders | GET | 查询用户当前未成交订单 (up to 500) | Y | Y |
充提币 | POST /v1/dw/withdraw/api/create | POST | 申请提币 | Y | N |
充提币 | POST /v1/dw/withdraw-virtual/{withdraw-id}/cancel | POST | 撤销提币申请 | Y | N |
充提币 | GET /v1/query/deposit-withdraw | GET | 查询充提记录 | Y | N |
杠杆交易 | POST /v1/dw/transfer-in/margin | POST | 从币币交易账户划转至杠杆账户 | Y | N |
杠杆交易 | POST /v1/dw/transfer-out/margin | POST | 从杠杆账户划转至币币交易账户 | Y | N |
杠杆交易 | POST /v1/margin/orders | POST | 申请借贷 | Y | N |
杠杆交易 | POST /v1/margin/orders/{order-id}/repay | POST | 归还借贷 | Y | N |
杠杆交易 | GET /v1/margin/loan-orders | GET | 查询借贷记录 | Y | N |
杠杆交易 | GET /v1/margin/accounts/balance | GET | 查询杠杆账户余额 | Y | N |
ETF换入换出 | GET /etf/swap/config | GET | ETF换入换出的基本信息,ETF换入换出状态,以及ETF的成分结构。 | Y | N |
ETF换入换出 | POST/etf/swap/in | POST | 用户可以通过该接口换入一定数量的ETF. | Y | N |
ETF换入换出 | POST/etf/swap/out | POST | 用户可以通过该接口换出一定数量的ETF. | Y | N |
ETF换入换出 | GET/etf/list | GET | ETF换入换出操作的明细记录。最多返回 100 条记录。 | Y | N |
ETF换入换出 | GET/quotation/market/history/kline | GET | ETF净值的K线 | N | N |
母子账号 | POST /v1/subuser/transfer | POST | 母账号执行母子账户之间的划转 | Y | N |
母子账号 | GET /v1/subuser/aggregate-balance | GET | 母账号查询所有子账号各币种资产累加余额 | Y | N |
母子账号 | GET /v1/account/accounts/{sub-uid} | GET | 母账号查询某个子账号的各币种和各账户类型的余额 | Y | N |
市场行情
在调用行情接口时,请添加get参数,key为AccessKeyId ,value为网页上申请的apikey的accesskey 。
例:
https://api.huobipro.com/market/history/kline?period=1day&size=200&symbol=btcusdt&AccessKeyId=fff-xxx-ssss-kkk
GET /market/history/kline 获取K线数据
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... | |
period | true | string | K线类型 | 1min, 5min, 15min, 30min, 60min, 1day, 1mon, 1week, 1year | |
size | false | integer | 获取数量 | 150 | [1,2000] |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
status | true | string | 请求处理结果 | "ok" , "error" |
ts | true | number | 响应生成时间点,单位:毫秒 | |
tick | true | object | KLine 数据 | |
ch | true | string | 数据所属的 channel,格式: market.$symbol.kline.$period |
data 说明:
"data": [
{
"id": K线id,
"amount": 成交量,
"count": 成交笔数,
"open": 开盘价,
"close": 收盘价,当K线为最晚的一根时,是最新成交价
"low": 最低价,
"high": 最高价,
"vol": 成交额, 即 sum(每一笔成交价 * 该笔的成交量)
}
]
请求响应示例:
/* GET /market/history/kline?period=1day&size=200&symbol=btcusdt */
{
"status": "ok",
"ch": "market.btcusdt.kline.1day",
"ts": 1499223904680,
"data": [
{
"id": 1499184000,
"amount": 37593.0266,
"count": 0,
"open": 1935.2000,
"close": 1879.0000,
"low": 1856.0000,
"high": 1940.0000,
"vol": 71031537.97866500
},
// more data here
]
}
/* GET /market/history/kline?period=not-exist&size=200&symbol=ethusdt */
{
"ts": 1490758171271,
"status": "error",
"err-code": "invalid-parameter",
"err-msg": "invalid period"
}
/* GET /market/history/kline?period=1day&size=not-exist&symbol=ethusdt */
{
"ts": 1490758221221,
"status": "error",
"err-code": "bad-request",
"err-msg": "invalid size, valid range: [1,2000]"
}
/* GET /market/history/kline?period=1day&size=200&symbol=not-exist */
{
"ts": 1490758171271,
"status": "error",
"err-code": "invalid-parameter",
"err-msg": "invalid symbol"
}
GET /market/detail/merged 获取聚合行情(Ticker)
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
status | true | string | 请求处理结果 | "ok" , "error" |
ts | true | number | 响应生成时间点,单位:毫秒 | |
tick | true | object | K线数据 | |
ch | true | string | 数据所属的 channel,格式: market.$symbol.detail.merged |
tick 说明:
"tick": {
"id": K线id,
"amount": 成交量,
"count": 成交笔数,
"open": 开盘价,
"close": 收盘价,当K线为最晚的一根时,是最新成交价
"low": 最低价,
"high": 最高价,
"vol": 成交额, 即 sum(每一笔成交价 * 该笔的成交量)
"bid": [买1价,买1量],
"ask": [卖1价,卖1量]
}
请求响应示例:
/* GET /market/detail/merged?symbol=ethusdt */
{
"status":"ok",
"ch":"market.ethusdt.detail.merged",
"ts":1499225276950,
"tick":{
"id":1499225271,
"ts":1499225271000,
"close":1885.0000,
"open":1960.0000,
"high":1985.0000,
"low":1856.0000,
"amount":81486.2926,
"count":42122,
"vol":157052744.85708200,
"ask":[1885.0000,21.8804],
"bid":[1884.0000,1.6702]
}
}
/* GET /market/detail/merged?symbol=not-exist */
{
"ts": 1490758171271,
"status": "error",
"err-code": "invalid-parameter",
"err-msg": "invalid symbol”
}
GET /market/tickers
{
"status":"ok",
"ts":1510885463001,
"data":[
{
"open":0.044297, // 日K线 开盘价
"close":0.042178, // 日K线 收盘价
"low":0.040110, // 日K线 最低价
"high":0.045255, // 日K线 最高价
"amount":12880.8510, // 24小时成交量
"count":12838, // 24小时成交笔数
"vol":563.0388715740, // 24小时成交额
"symbol":"ethbtc" // 交易对
},
{
"open":0.008545,
"close":0.008656,
"low":0.008088,
"high":0.009388,
"amount":88056.1860,
"count":16077,
"vol":771.7975953754,
"symbol":"ltcbtc"
}
]
}
注:当交易对尚未产生成交时,返回的数据里面 open
close
high
low
amount
count
vol
的值都为 null
GET /market/depth 获取 Market Depth 数据
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... | |
type | true | string | Depth 类型 | step0, step1, step2, step3, step4, step5(合并深度0-5);step0时,不合并深度 |
- 用户选择“合并深度”时,一定报价精度内的市场挂单将予以合并显示。合并深度仅改变显示方式,不改变实际成交价格。
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
status | true | string | "ok" 或者 "error" | |
ts | true | number | 响应生成时间点,单位:毫秒 | |
tick | true | object | Depth 数据 | |
ch | true | string | 数据所属的 channel,格式: market.$symbol.depth.$type |
tick 说明:
"tick": {
"id": 消息id,
"ts": 消息生成时间,单位:毫秒,
"bids": 买盘,[price(成交价), amount(成交量)], 按price降序,
"asks": 卖盘,[price(成交价), amount(成交量)], 按price升序
}
请求响应示例:
/* GET /market/depth?symbol=ethusdt&type=step1 */
{
"status": "ok",
"ch": "market.btcusdt.depth.step1",
"ts": 1489472598812,
"tick": {
"id": 1489464585407,
"ts": 1489464585407,
"bids": [
[7964, 0.0678], // [price, amount]
[7963, 0.9162],
[7961, 0.1],
[7960, 12.8898],
[7958, 1.2],
[7955, 2.1009],
[7954, 0.4708],
[7953, 0.0564],
[7951, 2.8031],
[7950, 13.7785],
[7949, 0.125],
[7948, 4],
[7942, 0.4337],
[7940, 6.1612],
[7936, 0.02],
[7935, 1.3575],
[7933, 2.002],
[7932, 1.3449],
[7930, 10.2974],
[7929, 3.2226]
],
"asks": [
[7979, 0.0736],
[7980, 1.0292],
[7981, 5.5652],
[7986, 0.2416],
[7990, 1.9970],
[7995, 0.88],
[7996, 0.0212],
[8000, 9.2609],
[8002, 0.02],
[8008, 1],
[8010, 0.8735],
[8011, 2.36],
[8012, 0.02],
[8014, 0.1067],
[8015, 12.9118],
[8016, 2.5206],
[8017, 0.0166],
[8018, 1.3218],
[8019, 0.01],
[8020, 13.6584]
]
}
}
/* GET /market/depth?symbol=ethusdt&type=not-exist */
{
"ts": 1490759358099,
"status": "error",
"err-code": "invalid-parameter",
"err-msg": "invalid type"
}
GET /market/trade 获取 Trade Detail 数据
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
status | true | string | "ok" 或者 "error" | |
ts | true | number | 响应生成时间点,单位:毫秒 | |
tick | true | object | Trade 数据 | |
ch | true | string | 数据所属的 channel,格式: market.$symbol.trade.detail |
tick 说明:
"tick": {
"id": 消息id,
"ts": 最新成交时间,
"data": [
{
"id": 成交id,
"price": 成交价钱,
"amount": 成交量,
"direction": 主动成交方向,
"ts": 成交时间
}
]
}
请求响应例子:
/* GET /market/trade?symbol=ethusdt */
{
"status": "ok",
"ch": "market.btcusdt.trade.detail",
"ts": 1489473346905,
"tick": {
"id": 600848670,
"ts": 1489464451000,
"data": [
{
"id": 600848670,
"price": 7962.62,
"amount": 0.0122,
"direction": "buy",
"ts": 1489464451000
}
]
}
}
/* GET /market/trade?symbol=not-exist */
{
"ts": 1490759506429,
"status": "error",
"err-code": "invalid-parameter",
"err-msg": "invalid symbol"
}
GET /market/history/trade 批量获取最近的交易记录
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... | |
size | false | integer | 获取交易记录的数量 | 1 | [1, 2000] |
响应数据:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
status | true | string | ok, error | ||
ch | true | string | 数据所属的 channel,格式: market.$symbol.trade.detail | ||
ts | true | integer | 发送时间 | ||
data | true | object | 成交记录 |
data 说明:
"data": {
"id": 消息id,
"ts": 最新成交时间,
"data": [
{
"id": 成交id,
"price": 成交价,
"amount": 成交量,
"direction": 主动成交方向,
"ts": 成交时间
}
]
}
请求响应例子:
/* GET /market/history/trade?symbol=ethusdt */
{
"status": "ok",
"ch": "market.ethusdt.trade.detail",
"ts": 1502448925216,
"data": [
{
"id": 31459998,
"ts": 1502448920106,
"data": [
{
"id": 17592256642623,
"amount": 0.04,
"price": 1997,
"direction": "buy",
"ts": 1502448920106
}
]
}
]
}
GET /market/detail 获取 Market Detail 24小时成交量数据
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
status | true | string | "ok" 或者 "error" | |
ts | true | number | 响应生成时间点,单位:毫秒 | |
tick | true | object | Detail 数据 | |
ch | true | string | 数据所属的 channel,格式: market.$symbol.depth.$type |
tick 说明:
"tick": {
"id": 消息id,
"ts": 24小时统计时间,
"amount": 24小时成交量,
"open": 前推24小时成交价,
"close": 当前成交价,
"high": 近24小时最高价,
"low": 近24小时最低价,
"count": 近24小时累积成交数,
"vol": 近24小时累积成交额, 即 sum(每一笔成交价 * 该笔的成交量)
}
请求响应例子
/* GET /market/detail?symbol=ethusdt */
{
"status": "ok",
"ch": "market.btcusdt.detail",
"ts": 1489473538996,
"tick": {
"amount": 4316.4346,
"open": 8090.54,
"close": 7962.62,
"high": 8119.00,
"ts": 1489464451000,
"id": 1489464451,
"count": 9595,
"low": 7875.00,
"vol": 34497276.905760
}
}
/* GET /market/detail?symbol=not-exists */
{
"ts": 1490759594752,
"status": "error",
"err-code": "invalid-parameter",
"err-msg": "invalid symbol"
}
公共API
GET /v1/common/symbols 查询Pro站支持的所有交易对及精度
GET /v1/hadax/common/symbols 查询HADAX站支持的所有交易对及精度
请求参数: (无)
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
base-currency | true | string | 基础币种 | |
quote-currency | true | string | 计价币种 | |
price-precision | true | string | 价格精度位数(0为个位,市价买单 buy-market 时使用此精度, ethbtc, etcbtc, bchbtc, ltcbtc 除外,这四个交易对的精度固定为4位 ) | |
amount-precision | true | string | 数量精度位数(0为个位,指 base-currency 数量) | |
symbol-partition | true | string | 交易区 | main主区,innovation创新区,bifurcation分叉区 |
请求响应例子:
/* GET /v1/common/symbols */
{
"status": "ok",
"data": [
{
"base-currency": "btc",
"quote-currency": "usdt",
"price-precision": 2,
"amount-precision": 4,
"symbol-partition": "main",
"symbol": "btcusdt"
}
{
"base-currency": "eth",
"quote-currency": "usdt",
"price-precision": 2,
"amount-precision": 4,
"symbol-partition": "main",
"symbol": "ethusdt"
}
]
}
GET /v1/common/currencys 查询Pro站支持的所有币种
GET /v1/hadax/common/currencys 查询HADAX站支持的所有币种
请求参数:
(无)
响应数据:
currency list
请求响应例子:
/* GET /v1/common/currencys */
{
"status": "ok",
"data": [
"usdt",
"eth",
"etc"
]
}
GET /v1/common/timestamp 查询系统当前时间
请求参数:
(无)
响应数据:
系统时间戳
请求响应例子
/* GET /v1/common/timestamp */
{
"status": "ok",
"data": 1494900087029
}
用户资产API
GET /v1/account/accounts
查询当前用户的所有账户(即account-id),Pro站和HADAX account-id通用
请求参数:
无
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
id | true | long | account-id | |
state | true | string | 账户状态 | working:正常, lock:账户被锁定 |
type | true | string | 账户类型 | spot:现货账户, margin:杠杆账户,otc:OTC账户,point:点卡账户 |
请求响应例子:
/* GET /v1/account/accounts */
{
"status": "ok",
"data": [
{
"id": 100009,
"type": "spot",
"state": "working",
"user-id": 1000
}
]
}
GET /v1/account/accounts/{account-id}/balance 查询Pro站指定账户的余额
GET /v1/hadax/account/accounts/{account-id}/balance 查询HADAX站指定账户的余额
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
account-id | true | string | account-id,填在 path 中,可用 GET /v1/account/accounts 获取 |
- 如果不知道自己的账户ID,请使用
GET /v1/account/accounts
查询
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
id | true | long | 账户 ID | |
state | true | string | 账户状态 | working:正常 lock:账户被锁定 |
type | true | string | 账户类型 | spot:现货账户, margin:杠杆账户,otc:OTC账户,point:点卡账户 |
list | false | Array | 子账户数组 |
list字段说明
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
balance | true | string | 余额 | |
currency | true | string | 币种 | |
type | true | string | 类型 | trade: 交易余额,frozen: 冻结余额 |
请求响应例子:
/* GET /v1/account/accounts/\'account-id\'/balance */
{
"status": "ok",
"data": {
"id": 100009,
"type": "spot",
"state": "working",
"list": [
{
"currency": "usdt",
"type": "trade",
"balance": "500009195917.4362872650"
},
{
"currency": "usdt",
"type": "frozen",
"balance": "328048.1199920000"
},
{
"currency": "etc",
"type": "trade",
"balance": "499999894616.1302471000"
},
{
"currency": "etc",
"type": "frozen",
"balance": "9786.6783000000"
}
{
"currency": "eth",
"type": "trade",
"balance": "499999894616.1302471000"
},
{
"currency": "eth",
"type": "frozen",
"balance": "9786.6783000000"
}
],
"user-id": 1000
}
}
交易API
POST /v1/order/orders/place Pro站下单
POST /v1/hadax/order/orders/place HADAX站下单
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
account-id | true | string | 账户 ID,使用accounts方法获得。币币交易使用‘spot’账户的accountid;借贷资产交易,请使用‘margin’账户的accountid | ||
amount | true | string | 限价单表示下单数量,市价买单时表示买多少钱,市价卖单时表示卖多少币 | ||
price | false | string | 下单价格,市价单不传该参数 | ||
source | false | string | 订单来源 | api,如果使用借贷资产交易,请填写‘margin-api’ | |
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... | |
type | true | string | 订单类型 | buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, buy-ioc:IOC买单, sell-ioc:IOC卖单, buy-limit-maker, sell-limit-maker(详细说明见下) |
buy-limit-maker
当“下单价格”>=“市场最低卖出价”,订单提交后,系统将拒绝接受此订单;
当“下单价格”<“市场最低卖出价”,提交成功后,此订单将被系统接受。
sell-limit-maker
当“下单价格”<=“市场最高买入价”,订单提交后,系统将拒绝接受此订单;
当“下单价格”>“市场最高买入价”,提交成功后,此订单将被系统接受。
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | false | string | 订单ID |
请求响应例子:
/* POST /v1/order/orders/place {
"account-id": "100009",
"amount": "10.1",
"price": "100.1",
"source": "api",
"symbol": "ethusdt",
"type": "buy-limit"
} */
{
"status": "ok",
"data": "59378"
}
GET /v1/order/openOrders 获取所有当前帐号下未成交订单
请求参数:
“account-id” 和 “symbol” 需同时指定或者二者都不指定。如果二者都不指定,返回最多500条尚未成交订单,按订单号降序排列。
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
account-id | true | string | 账号ID | ||
symbol | true | string | 交易对 | 单个交易对字符串,缺省将返回所有符合条件尚未成交订单 | |
side | false | string | 主动交易方向 | “buy”或者“sell”,缺省将返回所有符合条件尚未成交订单 | |
size | false | int | 所需返回记录数 | 10 | [0,500] |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
id | true | long | 订单号 | |
symbol | true | string | 交易对 | |
price | true | string | 下单价格 | |
created-at | true | int | 下单时间(毫秒) | Unix时间戳 |
type | true | string | 订单类型 | buy-market, sell-market, buy-limit, sell-limit, buy-ioc, sell-ioc |
filled-amount | true | string | 下单时间(毫秒) | 对于非“部分成交”订单,此字段为 0 |
filled-cash-amount | true | string | 已成交部分的订单价格(=已成交单量x下单价格) | 对于非“部分成交”订单,此字段为 0 |
filled-fees | true | string | 已成交部分所收取手续费 | 对于非“部分成交”订单,此字段为 0 |
source | true | string | 订单来源 | sys, web, api, app |
state | true | string | 此订单状态 | submitted(已提交), partial-filled(部分成交), cancelling(正在取消) |
响应示例:
/* GET /v1/orders/openOrders */
{
"status": "ok",
"data": [
{
"id": 5454937,
"symbol": "ethusdt",
"account-id": 30925,
"amount": "1.000000000000000000",
"price": "0.453000000000000000",
"created-at": 1530604762277,
"type": "sell-limit",
"filled-amount": "0.0",
"filled-cash-amount": "0.0",
"filled-fees": "0.0",
"source": "web",
"state": "submitted"
}
]
}
POST /v1/order/orders/{order-id}/submitcancel 申请撤销一个订单请求
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
order-id | true | string | 订单ID,填在path中 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | true | string | 订单 ID |
请求响应例子:
/* POST /v1/order/orders/{order-id}/submitcancel */
{
"status": "ok",//注意,返回OK表示撤单请求成功。订单是否撤销成功请调用订单查询接口查询该订单状态
"data": "59378"
}
POST /v1/order/orders/batchcancel 批量撤销订单
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
order-ids | true | list | 撤销订单ID列表 | 单次不超过50个订单id |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | false | map | 撤单结果 |
请求响应例子:
/* POST /v1/order/orders/batchcancel */
{
"order-ids": [
"1", "2", "3"
]
}
-----
{
"status": "ok",
"data": {
"success": [
"1",
"3"
],
"failed": [
{
"err-msg": "记录无效",
"order-id": "2",
"err-code": "base-record-invalid"
}
]
}
}
POST /v1/order/orders/batchCancelOpenOrders 批量取消符合条件的订单
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
account-id | true | string | 账户ID | ||
symbol | false | string | 交易对 | 单个交易对字符串,缺省将返回所有符合条件尚未成交订单 | |
side | false | string | 主动交易方向 | “buy”或“sell”,缺省将返回所有符合条件尚未成交订单 | |
size | false | int | 所需返回记录数 | 100 | [0,100] |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
success-count | true | int | 成功取消的订单数 | |
failed-count | true | int | 取消失败的订单数 | |
next-id | true | long | 下一个符合取消条件的订单号 |
响应示例:
/* POST /v1/order/orders/batchCancelOpenOrders */
{
"status": "ok",
"data": {
"success-count": 2,
"failed-count": 0,
"next-id": 5454600
}
}
GET /v1/order/orders/{order-id} 查询某个订单详情
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
order-id | true | string | 订单ID,填在path中 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
account-id | true | long | 账户 ID | |
amount | true | string | 订单数量 | |
canceled-at | false | long | 订单撤销时间 | |
created-at | true | long | 订单创建时间 | |
field-amount | true | string | 已成交数量 | |
field-cash-amount | true | string | 已成交总金额 | |
field-fees | true | string | 已成交手续费(买入为币,卖出为钱) | |
finished-at | false | long | 订单变为终结态的时间,不是成交时间,包含“已撤单”状态 | |
id | true | long | 订单ID | |
price | true | string | 订单价格 | |
source | true | string | 订单来源 | api |
state | true | string | 订单状态 | submitting , submitted 已提交, partial-filled 部分成交, partial-canceled 部分成交撤销, filled 完全成交, canceled 已撤销 |
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... |
type | true | string | 订单类型 | buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, buy-ioc:IOC买单, sell-ioc:IOC卖单 |
请求响应例子:
/* GET /v1/order/orders/{order-id} */
{
"status": "ok",
"data": {
"id": 59378,
"symbol": "ethusdt",
"account-id": 100009,
"amount": "10.1000000000",
"price": "100.1000000000",
"created-at": 1494901162595,
"type": "buy-limit",
"field-amount": "10.1000000000",
"field-cash-amount": "1011.0100000000",
"field-fees": "0.0202000000",
"finished-at": 1494901400468,
"user-id": 1000,
"source": "api",
"state": "filled",
"canceled-at": 0,
"exchange": "huobi",
"batch": ""
}
}
GET /v1/order/orders/{order-id}/matchresults 查询某个订单的成交明细
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
order-id | true | string | 订单ID,填在path中 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
created-at | true | long | 成交时间 | |
filled-amount | true | string | 成交数量 | |
filled-fees | true | string | 成交手续费 | |
id | true | long | 订单成交记录ID | |
match-id | true | long | 撮合ID | |
order-id | true | long | 订单 ID | |
price | true | string | 成交价格 | |
source | true | string | 订单来源 | api |
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... |
type | true | string | 订单类型 | buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, buy-ioc:IOC买单, sell-ioc:IOC卖单 |
请求响应例子:
/* GET /v1/order/orders/{order-id}/matchresults */
{
"status": "ok",
"data": [
{
"id": 29553,
"order-id": 59378,
"match-id": 59335,
"symbol": "ethusdt",
"type": "buy-limit",
"source": "api",
"price": "100.1000000000",
"filled-amount": "9.1155000000",
"filled-fees": "0.0182310000",
"created-at": 1494901400435
}
]
}
GET /v1/order/orders 查询当前委托、历史委托
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... | |
types | false | string | 查询的订单类型组合,使用\',\'分割 | buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, buy-ioc:IOC买单, sell-ioc:IOC卖单 | |
start-date | false | string | 查询开始日期, 日期格式yyyy-mm-dd | ||
end-date | false | string | 查询结束日期, 日期格式yyyy-mm-dd | ||
states | true | string | 查询的订单状态组合,使用\',\'分割 | submitted 已提交, partial-filled 部分成交, partial-canceled 部分成交撤销, filled 完全成交, canceled 已撤销 | |
from | false | string | 查询起始 ID | ||
direct | false | string | 查询方向 | prev 向前,next 向后 | |
size | false | string | 查询记录大小 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
account-id | true | long | 账户 ID | |
amount | true | string | 订单数量 | |
canceled-at | false | long | 接到撤单申请的时间 | |
created-at | true | long | 订单创建时间 | |
field-amount | true | string | 已成交数量 | |
field-cash-amount | true | string | 已成交总金额 | |
field-fees | true | string | 已成交手续费(买入为币,卖出为钱) | |
finished-at | false | long | 最后成交时间 | |
id | true | long | 订单ID | |
price | true | string | 订单价格 | |
source | true | string | 订单来源 | api |
state | true | string | 订单状态 | submitting , submitted 已提交, partial-filled 部分成交, partial-canceled 部分成交撤销, filled 完全成交, canceled 已撤销 |
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... |
type | true | string | 订单类型 | submit-cancel:已提交撤单申请 ,buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, buy-ioc:IOC买单, sell-ioc:IOC卖单 |
请求响应例子:
/* GET /v1/order/orders */
{
"status": "ok",
"data": [
{
"id": 59378,
"symbol": "ethusdt",
"account-id": 100009,
"amount": "10.1000000000",
"price": "100.1000000000",
"created-at": 1494901162595,
"type": "buy-limit",
"field-amount": "10.1000000000",
"field-cash-amount": "1011.0100000000",
"field-fees": "0.0202000000",
"finished-at": 1494901400468,
"user-id": 1000,
"source": "api",
"state": "filled",
"canceled-at": 0,
"exchange": "huobi",
"batch": ""
}
]
}
GET /v1/order/matchresults 查询当前成交、历史成交
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... | |
types | false | string | 查询的订单类型组合,使用\',\'分割 | buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, buy-ioc:IOC买单, sell-ioc:IOC卖单 | |
start-date | false | string | 查询开始日期, 日期格式yyyy-mm-dd | -61 days | [-61day, now] |
end-date | false | string | 查询结束日期, 日期格式yyyy-mm-dd | Now | [start-date, now] |
from | false | string | 查询起始 ID | 订单成交记录ID(最大值) | |
direct | false | string | 查询方向 | 默认next, 成交记录ID由大到小排序 | prev 向前,next 向后 |
size | false | string | 查询记录大小 | 100 | <=100 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
created-at | true | long | 成交时间 | |
filled-amount | true | string | 成交数量 | |
filled-fees | true | string | 成交手续费 | |
id | true | long | 订单成交记录ID | |
match-id | true | long | 撮合ID | |
order-id | true | long | 订单 ID | |
price | true | string | 成交价格 | |
source | true | string | 订单来源 | api |
symbol | true | string | 交易对 | btcusdt, bchbtc, rcneth ... |
type | true | string | 订单类型 | buy-market:市价买, sell-market:市价卖, buy-limit:限价买, sell-limit:限价卖, buy-ioc:IOC买单, sell-ioc:IOC卖单 |
请求响应例子:
/* GET /v1/orders/matchresults */
{
"status": "ok",
"data": [
{
"id": 29555,
"order-id": 59378,
"match-id": 59335,
"symbol": "ethusdt",
"type": "buy-limit",
"source": "api",
"price": "100.1000000000",
"filled-amount": "0.9845000000",
"filled-fees": "0.0019690000",
"created-at": 1494901400487
}
]
}
借贷交易API (重要:如果使用借贷资产交易,请在下单接口/v1/order/orders/place请求参数source中填写‘margin-api’)
目前仅支持 USDT 交易区和 BTC 交易区部分交易对
POST /v1/dw/transfer-in/margin 现货账户划入至借贷账户
POST /v1/dw/transfer-out/margin 借贷账户划出至现货账户
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | ||
currency | true | string | 币种 | ||
amount | true | string | 金额 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | true | long | 划转ID |
请求响应例子:
/* POST /v1/dw/transfer-in/margin
{
"symbol": "ethusdt",
"currency": "eth",
"amount": "1.0"
} */
{
"status": "ok",
"data": 1000
}
POST /v1/margin/orders 申请借贷
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | ||
currency | true | string | 币种 | ||
amount | true | string | 金额 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | true | long | 订单号 |
请求响应例子:
/* POST /v1/margin/orders {
"amount": "10.1",
"symbol": "ethusdt",
"currency": "eth"
} */
{
"status": "ok",
"data": 59378
}
POST /v1/margin/orders/{order-id}/repay 归还借贷
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
order-id | true | long | 借贷订单 ID,写在path中 | ||
amount | true | string | 还款量 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | true | long | 订单号 |
请求响应例子:
/* POST /v1/margin/orders/59378/repay {
"amount": "10.1"
}*/
{
"status": "ok",
"data": 59378
}
GET /v1/margin/loan-orders 借贷订单
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | 交易对 | ||
start-date | false | string | 查询开始日期, 日期格式yyyy-mm-dd | ||
end-date | false | string | 查询结束日期, 日期格式yyyy-mm-dd | ||
states | false | string | 状态 | ||
from | false | string | 查询起始 ID | ||
direct | false | string | 查询方向 | prev 向前,next 向后 | |
size | false | string | 查询记录大小 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
id | true | long | 订单号 | |
user-id | true | long | 用户ID | |
account-id | true | long | 账户ID | |
symbol | true | string | 交易对 | |
currency | true | string | 币种 | |
loan-amount | true | string | 借贷本金总额 | |
loan-balance | true | string | 未还本金 | |
interest-rate | true | string | 利率 | |
interest-amount | true | string | 利息总额 | |
interest-balance | true | string | 未还利息 | |
created-at | true | long | 借贷发起时间 | |
accrued-at | true | long | 最近一次计息时间 | |
state | true | string | 订单状态 | created 未放款,accrual 已放款,cleared 已还清,invalid 异常 |
请求响应例子:
/* GET /v1/margin/loan-orders?symbol=btcusdt
*/
{
"status": "ok",
"data": [
{
"loan-balance": "0.100000000000000000",
"interest-balance": "0.000200000000000000",
"interest-rate": "0.002000000000000000",
"loan-amount": "0.100000000000000000",
"accrued-at": 1511169724531,
"interest-amount": "0.000200000000000000",
"symbol": "ethbtc",
"currency": "btc",
"id": 394,
"state": "accrual",
"account-id": 17747,
"user-id": 119913,
"created-at": 1511169724531
}
]
}
GET /v1/margin/accounts/balance 借贷账户详情
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | false | string | 交易对,作为get参数 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
symbol | true | string | 交易对 | |
state | true | string | 账户状态 | working,fl-sys,fl-mgt,fl-end |
risk-rate | true | object | 风险率 | |
fl-price | true | string | 爆仓价 | |
list | true | array | 子账户列表 |
请求响应例子:
/* GET /v1/margin/accounts/balance?symbol=btcusdt
*/
{
"status": "ok",
"data": [
{
"id": 18264,
"type": "margin",
"state": "working",
"symbol": "btcusdt",
"fl-price": "0",
"fl-type": "safe",
"risk-rate": "475.952571086994250554",
"list": [
{
"currency": "btc",
"type": "trade",
"balance": "1168.533000000000000000"
},
{
"currency": "btc",
"type": "frozen",
"balance": "0.000000000000000000"
},
{
"currency": "btc",
"type": "loan",
"balance": "-2.433000000000000000"
},
{
"currency": "btc",
"type": "interest",
"balance": "-0.000533000000000000"
},
{
"currency": "usdt",
"type": "trade",//借贷账户可用
"balance": "1313.534000000000000000"
},
{
"currency": "usdt",
"type": "frozen",//借贷账户冻结
"balance": "0.000000000000000000"
},
{
"currency": "usdt",
"type": "loan",//已借贷
"balance": "-140.234099999999999920"
},
{
"currency": "usdt",
"type": "interest",//usdt待还利息
"balance": "-0.931206660000000000"
},
{
"currency": "btc",
"type": "transfer-out-available",//可转btc
"balance": "1163.872174670000000000"
},
{ "currency": "usdt",
"type": "transfer-out-available",//可转usdt
"balance": "1313.534000000000000000"
},
{
"currency": "btc",
"type": "loan-available",//可借btc
"balance": "8161.876538350676000000"
},
{
"currency": "usdt",
"type": "loan-available",//可借usdt
"balance": "49859.765900000000000080"
}
]
}
]
}
虚拟币提现API
仅支持提现到【Pro站提币地址列表中的提币地址】
POST /v1/dw/withdraw/api/create 申请提现虚拟币
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
address | true | string | 提现地址 | 仅支持在官网上相应币种可信地址列表 中的地址 | |
amount | true | string | 提币数量 | ||
currency | true | string | 资产类型 | btc, ltc, bch, eth, etc ...(火币Pro支持的币种) | |
fee | false | string | 转账手续费 | ||
addr-tag | false | string | 虚拟币共享地址tag,适用于xrp,xem,bts,steem,eos,xmr | 格式, "123"类的整数字符串 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | false | long | 提现ID |
请求响应例子:
/* POST /v1/dw/withdraw/api/create*/
{
"address": "0xde709f2102306220921060314715629080e2fb77",
"amount": "0.05",
"currency": "eth",
"fee": "0.01"
}
{
"status": "ok",
"data": 700
}
POST /v1/dw/withdraw-virtual/{withdraw-id}/cancel 申请取消提现虚拟币
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
withdraw-id | true | long | 提现ID,填在path中 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
data | false | long | 提现 ID |
请求响应例子:
/* POST /v1/dw/withdraw-virtual/{withdraw-id}/cancel */
{
"status": "ok",
"data": 700
}
GET /v1/query/deposit-withdraw 查询虚拟币充提记录
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
currency | true | string | 币种 | ||
type | true | string | \'deposit\' or \'withdraw\' | ||
from | true | string | 查询起始 ID | ||
size | true | string | 查询记录大小 |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
id | true | long | ||
type | true | long | 类型 | \'deposit\' \'withdraw\' |
currency | true | string | 币种 | |
tx-hash | true | string | 交易哈希 | |
amount | true | long | 个数 | |
address | true | string | 地址 | |
address-tag | true | string | 地址标签 | |
fee | true | long | 手续费 | |
state | true | string | 状态 | 状态参见下表 |
created-at | true | long | 发起时间 | |
updated-at | true | long | 最后更新时间 |
虚拟币提现状态定义:
状态 | 描述 |
---|---|
submitted | 已提交 |
reexamine | 审核中 |
canceled | 已撤销 |
pass | 审批通过 |
reject | 审批拒绝 |
pre-transfer | 处理中 |
wallet-transfer | 已汇出 |
wallet-reject | 钱包拒绝 |
confirmed | 区块已确认 |
confirm-error | 区块确认错误 |
repealed | 已撤销 |
虚拟币充值状态定义:
状态 | 描述 |
---|---|
unknown | 状态未知 |
confirming | 确认中 |
confirmed | 确认中 |
safe | 已完成 |
orphan | 待确认 |
请求响应例子:
/* GET /v1/query/deposit-withdraw?currency=xrp&type=deposit&from=5&size=12 */
{
"status": "ok",
"data": [
{
"id": 1171,
"type": "deposit",
"currency": "xrp",
"tx-hash": "ed03094b84eafbe4bc16e7ef766ee959885ee5bcb265872baaa9c64e1cf86c2b",
"amount": 7.457467,
"address": "rae93V8d2mdoUQHwBDBdM4NHCMehRJAsbm",
"address-tag": "100040",
"fee": 0,
"state": "safe",
"created-at": 1510912472199,
"updated-at": 1511145876575
},
...
]
}
新增ETF接口
变更背景
ETF 的市场价格和其成分资产的价值偏差为市场参与方提供了套利的机会。因此继 HB10 ETF 的交易之后, ETF 的换入和换出也将开放。本次的变更主要是为用户提供通过接口参与 ETF 换入和换出的能力。
变更内容
Method | API | Description |
---|---|---|
GET | /etf/swap/config | 新接口。用户可以通过该接口取得关于 ETF 换入换出的 基本信息,包括一次换入最小量,一次换入最大量,一 次换出最小量,一次换出最大量,换入费率,换出费 率,最新 ETF 换入换出状态,以及 ETF 的成分结构。 |
POST | /etf/swap/in | 新接口。用户可以通过该接口换入一定数量的ETF. |
POST | /etf/swap/out | 新接口。用户可以通过该接口换出一定数量的 ETF 对应 的成分币。 |
GET | /etf/swap/list | 新接口。用户可以通过该接口取得关于 ETF 换入换出操 作的明细记录。最多返回 100 条记录。 |
GET | /quotation/market/history/kline | 现有接口。当 symbol 为 hb10 时,用户可获得 hb10 ETF 净值的 K 线,包括 open, high, low, close, amount, vol。由于是净值信息,所以 the amount 和 vol 是 会返回 0。HB10 ETF 的净值每 15 秒计算一次。 |
具体接口细节
GET /etf/swap/config
- 请求参数
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
etf_name | True | String | - | etf基金名称 | hb10 |
- 响应结果
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
purchase_min_amount | True | Int | - | 最小单次换入数量 | |
purchase_max_amount | False | Int | - | 最大单次换入数量 | |
redemption_min_amount | True | Int | - | 最小单次换出数量 | |
redemption_max_amount | False | Int | - | 最大单次换出数量 | |
purchase_fee_rate | True | double | (5,4) | 换入费率 | |
redemption_fee_rate | True | double | (5,4) | 换出费率 | |
etf_status | True | Int | - | 换入换出状态 | 状态: 正常 – 1; 由调仓引起的换入换出暂停 - 2; 其他原因引起的换入换出暂停 -3; 换入暂停 - 4; 换出暂停– 5 |
unit_price | True | Array | - | ETF成分信息,包含成分币代码和对应的数量 | 调仓会引起成分信息发生变化 |
unit_price
参数 | 是否必填 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|
currency | True | String | - | 成分币币种 |
amount | True | Double | - | 成分币数量 |
响应示例
{
"code": 200,
"data": {
"purchase_min_amount": 10000,
"purchase_max_amount": 100000,
"redemption_min_amount": 10000,
"redemption_max_amount": 10000,
"purchase_fee_rate": 0.001,
"redemption_fee_rate": 0.002,
"etf_status":1
"unit_price": [
{
"currency": "eth",
"amount": 19.9
},
{
"currency": "btc",
"amount": 9.9
}
]
},
"message": null,
"success": true
}
POST /etf/swap/in
POST /etf/swap/out
- 请求参数
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
etf_name | True | String | - | etf基金名称 | hb10 |
amount | True | Int | - | 换入数量 (POST /etf/swap/in) 或 换出数量 (POST /etf/swap/out) | 换入换出数量的范围请参照接口GET /etf/swap/config 提供的相应范围 |
*响应结果
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
code | True | Int | - | 结果返回码 | 请参照返回码解释表 |
data | True | - | |||
message | True | - | |||
success | True | Boolean | - | 请求是否成功 | Ture or false |
*响应示例
{
"code": 200,
"data": null,
"message": null,
"success": true
}
*返回码解释表
返回码 | 说明 |
---|---|
200 | 正常 |
10404 | 基金代码不正确或不存在 |
13403 | 账户余额不足 |
13404 | 基金调整中,不能换入换出 |
13405 | 因配置项问题基金不可换入换出 |
13406 | 非API调用,请求被拒绝 |
13410 | API签名错误 |
13500 | 系统错误 |
13601 | 调仓期:暂停换入换出 |
13603 | 其他原因,暂停换入和换出 |
13604 | 暂停换入 |
13605 | 暂停换出 |
13606 | 换入或换出的基金份额超过规定范围 |
GET /etf/list
*请求数据
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
etf_name | True | String | - | etf基金名称 | hb10 |
offset | True | Int | - | 开始位置 | >=0. 比如,当offset=0, 开始位置就 是最新的这一条记录。 |
limit | True | Int | - | 最大返回记录条数 | >0 and <=100 |
*响应结果
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
id | True | Long | - | 操作ID | |
gmt_created | True | Long | - | 操作时间(毫秒) | |
currency | True | String | - | 基金名称 | |
amount | True | Double | - | 基金数量 | |
type | True | Int | - | 操作类型 | 换入-1;换出-2 |
status | True | Int | - | 操作结果状态 | 成功-2 |
detail | True | Detail[] | - | 详情 |
Detail
参数 | 是否必填 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|
used_ currency_list | Ture | Currency[] | - | 换出的资产列表。如果是换入,该参数包括的是用于换入的成分币详情。如果是换出,该参数则是用于换出的基金详情。 |
rate | Ture | double | - | 费率 |
fee | Ture | double | - | 实际收取的手续费 |
point_card_amount | Ture | double | - | 用点卡折扣的手续费 |
obtain_ currency_list | Ture | Currency[] | - | 换回的资产列表。如果是换入,该参数包括的是用 于换出的基金详情。如果是换出,该参数则是用于 换入的成分币详情。 |
Currency
参数 | 是否必填 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|
currency | True | String | - | 成分币名称或基金名称 |
amount | True | Double | - | 数量 |
*响应示例
{
"code": 200,
"data": [
{
"id": 112222,
"gmt_created": 1528855872323,
"currency": "hb10",
"amount": 11.5,
"type": 1,
"status": 2,
"detail": {
"used_ currency_list": [
{
"currency": "btc",
"amount": 0.666
},
{
"currency": "eth",
"amount": 0.666
}
],
"rate": 0.002,
"fee": 100.11,
"point_card_amount":1.0,
"obtain_ currency_list": [
{
"currency": "hb10",
"amount": 1000
}
]
}
},
{
"id": 112223,
"gmt_created": 1528855872323,
"currency": "hb10",
"amount": 11.5,
"type": 2,
"status": 1,
"detail": {
"used_ currency_list": [
{
"currency": "btc",
"amount": 0.666
},
{
"currency": "eth",
"amount": 0.666
}
],
"rate": 0.002,
"fee": 100.11,
"point_card_amount":1.0,
"obtain_ currency_list": [
{
"currency": "hb10",
"amount": 1000
}
]
}
}
],
"message": null,
"success": true
}
GET /quotation/market/history/kline 获取ETF净值
请求参数:
参数名称 | 是否必须 | 类型 | 描述 | 默认值 | 取值范围 |
---|---|---|---|---|---|
symbol | true | string | ETF名称 | hb10 | |
period | true | string | K线类型 | 1min, 5min, 15min, 30min, 60min, 1day, 1mon, 1week, 1year | |
limit | false | integer | 获取数量 | [1,2000] |
响应数据:
参数名称 | 是否必须 | 数据类型 | 描述 | 取值范围 |
---|---|---|---|---|
status | true | string | 请求处理结果 | "ok" , "error" |
ts | true | number | 响应生成时间点,单位:毫秒 | |
tick | true | object | KLine 数据 | |
ch | true | string | 数据所属的 channel,格式: market.$symbol.kline.$period |
data 说明:
"data": [
{
"id": K线id,
"amount": 成交量(净值时=0),
"open": 开盘价,
"close": 收盘价,当K线为最晚的一根时,是最新成交价
"low": 最低价,
"high": 最高价,
"vol": 成交额(净值时=0)
}
]
响应示例:
{
"code": 200,
"success": "True",
"data": [
{
"id": 1499184000,
"amount": 0,
"open": 0.7694,
"close": 0.769,
"low": 0.769,
"high": 0.7694,
"vol": 0
},
...
]
}
新增母子账户接口
POST /v1/subuser/transfer 母账户执行母子账户之间的划转
- 请求参数
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
sub-uid | True | Long | - | 子账户uid | - |
currency | True | String | - | 币种 | - |
amount | True | Decimal | - | 划转金额 | - |
type | True | String | - | 划转类型 | master-transfer-in(子账户划转给母账户虚拟币)/ master-transfer-out (母账户划转给子账户虚拟币)/master-point-transfer-in (子账户划转给母账户点卡)/master-point-transfer-out(母账户划转给子账户点卡) |
- 响应结果
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
data | True | Int | - | 划转订单id | - |
status | True | - | 状态 | "OK" or "Error" |
- 响应示例
{
“data”:123456,
“status”:”ok”
}
- 响应码
error_code | 说明 | 类型 |
---|---|---|
account-transfer-balance-insufficient-error | 账户余额不足 | String |
base-operation-forbidden | 禁止操作(母子账号关系错误时报) | String |
GET /v1/subuser/aggregate-balance
母账户查询其下所有子账户的各币种汇总余额
- 请求参数
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
无请求参数 |
- 响应结果
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
status | True | - | 状态 | "OK" or "Error" | |
data | True | list | - | - |
data
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
currency | 是 | String | - | 子账户币名 | - |
balance | 是 | String | - | 子账户下该币种所有余额(可用余额和冻结余额的总和) | - |
- 响应示例
{
"status": "ok",
"data": [
{
"currency": "eos",
"balance": "1954559.809500000000000000"
},
{
"currency": "btc",
"balance": "0.000000000000000000"
},
{
"currency": "usdt",
"balance": "2925209.411300000000000000"
},
...
]
}
GET /v1/account/accounts/{sub-uid}
母账户查询子账户各币种账户余额
- 请求参数
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
sub-uid | True | Long | - | 子用户的UID | - |
- 响应结果
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
id | - | Long | - | 子账户ID | - |
type | - | String | - | 账户类型 | Spot:现货账户,point:点卡账户 |
list | - | Object | - | - | - |
list说明
参数 | 是否必填 | 数据类型 | 长度 | 说明 | 取值范围 |
---|---|---|---|---|---|
currency | - | String | - | 币种 | - |
type | - | String | - | 账户类型 | Trade:交易账户,frozen:冻结账户 |
balance | - | Decimal | - | 账户余额 | - |
- 响应示例
{ "status": "ok", "data": [ { "id": 9910049, "type": "spot", "list": [ { "currency": "btc", "type": "trade", "balance": "1.00" }, { "currency": "eth", "type": "trade", "balance": "1934.00" } ] }, { "id": 9910050, "type": "point", "list": [] } ] }