HotsCoin OpenAPI 文档

API 介绍

接入准备

交易对

交易对由基础币种和报价币种组成。以交易对 BTC/USDT 为例,BTC 为商品币种,USDT 为计价币种。

申请API Key

创建成功后请务必记住以下信息:

  • Access Key API 访问密钥

  • Secret Key 签名认证加密所使用的密钥(仅申请时可见)

接口鉴权

公共接口可用于获取基础信息和行情数据。公共接口无需认证即可调用。

私有接口可用于交易管理和账户管理。每个私有请求必须使用您的API Key进行签名验证。

接入URLs

REST API

https://api.hotscoin0.co/open-api

签名认证

API 请求在通过 internet 传输的过程中极有可能被篡改,为了确保请求未被更改,除公共接口(基础信息,行情数据)外的私有接口均必须使用您的 API Key 做加密处理,以校验参数或参数值在传输途中是否发生了更改。 每一个API Key需要有适当的权限才能访问相应的接口,每个新创建的API Key都需要分配权限。在使用接口前,请查看每个接口的权限类型,并确认你的API Key有相应的权限。

一个合法的请求所需要的内容:

  • 方法请求地址:即访问服务器地址 https://api.hotscoin0.co/open-api。

  • API 访问密钥(X_ACCESS_KEY):您申请的 API Key 中的 Access Key。

  • 必选和可选参数:每个方法都有一组用于定义 API 调用的必需参数和可选参数。可以在每个方法的说明中查看这些参数及其含义。

  • 签名:加密计算得出的值,用于确保签名有效和未被篡改,为了您 API Key 的安全,一次参数签名 5 分钟后会过期

  • 签名必要参数**:需要签名认证的接口,必须添加 reqTime 参数(传值为服务器最新时间,可通过/v1/common/systemTime 接口获取)。

加密方式

规范要计算签名的请求 因为使用 HMAC 进行签名计算时,使用不同内容计算得到的结果会完全不同。所以在进行签名计算前,请先对请求进行规范化处理。下面以查询某订单详情请求为例进行说明:

下单请求URL

https://api.hotscoin0.co/open-api/v1/trade/order?amount=0.12&direction=ASK&price=7126.4285&symbol=BTC_USDT&reqTime=1672502400000

对参数按照ASCII码顺序进行排序

amount=0.12&direction=ASK&price=7126.4285&reqTime=1672502400000&symbol=BTC_USDT

将排完序的请求参数使用secretKey 进行HMAC SHA256进行加密,得到的结果

550ac73ace8c34372e0e1dd6631e890c7bd16697af8bb4e2908e966b50aba4e0

构建 http 请求使用

  1. 使用 X_ACCESS_KEY 存储access key信息,并在 header 中进行参数传递

  2. 使用 X_SIGNATURE 存储生成的签名信息,并在 header 中进行参数传递

请求方式

目前只有两种方法:GET和POST

  • GET请求:所有的参数都在路径参数里

  • POST请求,所有参数以form-data格式发送在请求主体(body)里

返回格式

所有的接口都是JSON格式。在JSON最上层有三个字段:message, codedata。前两个字段表示请求状态和信息,实际的业务数据在data字段里。

{
  "message": "success",
  "code": "0",
  "data": ""
}

常见错误码

1xxx(访问失败类)

2xxx(业务失败类)

现货接口

基础信息接口

服务器时间

HTTP 请求

  • GET /v1/common/systemTime

鉴权:否

限流:100次/1秒

请求参数

此接口不接受任何参数。

返回字段

{
  "message": "success",
  "code": "0",
  "data": 1672502400000
}

所有交易对信息

HTTP 请求

  • GET /v1/common/symbols

鉴权:否

限流:5次/1秒

请求参数

此接口不接受任何参数。

返回字段

{
  "message": "success",
  "code": "0",
  "data": [
    {
      "symbol": "BTC/USDT", // 交易对
      "baseCoinScale": 4, // 计价币数量精度
      "coinScale": 4, // 商品币数量精度
      "priceScale": 2, // 价格精度
      "baseSymbol": "USDT", // 计价币种
      "coinSymbol":"BTC", // 商品币种
      "minTurnover": 10, // 最小挂单成交额
      "minVolume": 0.001, // 最小下单量
      "maxVolume": 50, // 最大下单量
      "enable":  1 // 是否启用
    },
    {
      "symbol": "ETH/USDT",
      "baseCoinScale": 4,
      "coinScale": 4,
      "baseSymbol": "USDT",
      "coinSymbol":"ETH",
      "minTurnover": 10,
      "minVolume": 0.01,
      "maxVolume": 500,
      "enable": 1
    }
  ]
}

行情接口

最新成交价

此接口提供交易对当前最新成交价

HTTP 请求

  • GET /v1/market/ticker/price

鉴权:否

限流:10次/1秒

请求参数

返回字段

{
  "message": "success",
  "code": "0",
  "data": {
      "tickerPrice": 40000
    }
}

深度数据

此接口返回指定交易对的当前深度数据。

HTTP 请求

  • GET /v1/market/depth

鉴权:否

限流:10次/1秒

请求参数

返回字段

{
  "message": "success",
  "code": "0",
  "data": {
      "symbol" : "BTC/USDT",
      "timestamp" : "2023-11-22 10:00:00",
      "bids" : [ [ "36074.99", "0.27225537" ], [ "36074.81", "0.00967628" ] ],
      "asks" : [ [ "36075.06", "0.55858424" ], [ "36075.24", "0.22475193" ] ]
  }
}

账户接口

账户余额

此接口返回指定交易对的当前深度数据。

HTTP 请求

  • POST /v1/account/balance

鉴权:是

限流:5次/1秒

请求参数

返回字段

{
  "message": "success",
  "code": "0",
  "data": [
    {
      "coin": "USDT",
      "balance": 1000,
      "frozenBalance": 1000,
      "isLock": "IS_FALSE"
    },{
      "coin": BTC,
      "balance": 1,
      "frozenBalance": 0.01,
      "isLock": "IS_TRUE"
    }
  ]
}

交易接口

未完成挂单

HTTP 请求

  • POST /v1/trade/openOrder

鉴权:是

限流:10次/1秒

请求参数

返回字段

{
  "message": "success",
  "code": "0",
  "data": [
    {
      "orderId": "E1677194831589408768",
      "clOrdId": "1677AAA",
      "price": 35000,
      "avgPrice": 0,
      "amount": 0.1,
      "tradedAmount": 0,
      "turnover": 0,
      "symbol": "BTC/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "BTC",
      "direction": 0,
      "status": 0,
      "type": 1,
      "completedTime": 1672502400000,
      "canceledTime": 1672502400000,
      "time": 1672502400000
    },{
      "orderId": "E1677269378757951488",
      "clOrdId": "1677AAA",
      "price": 2000,
      "avgPrice": 0,
      "amount": 1,
      "tradedAmount": 0,
      "turnover": 0,
      "symbol": "ETH/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "ETH",
      "direction": 1,
      "status": 0,
      "type": 1,
      "completedTime": 1672502400000,
      "canceledTime": 1672502400000,
      "time": 1672502400000
    }
  ]
}

历史挂单(范围 3 个月)

HTTP 请求

  • POST /v1/trade/history

鉴权:是

限流:10次/1秒

请求参数

返回字段

{
  "message": "success",
  "code": "0",
  "data": [
    {
      "orderId": "E1677226372826791936",
      "clOrdId": "1677AAA",
      "price": 35000,
      "avgPrice": 35000,
      "amount": 0.1,
      "tradedAmount": 0.1,
      "turnover": 3500,
      "symbol": "BTC/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "BTC",
      "direction": 0,
      "status": 1,
      "type": 1,
      "completedTime": 1672502400000,
      "canceledTime": 1672502400000,
      "time": 1672502400000
    },{
      "orderId": "E1677261905426776064",
      "clOrdId": "1677AAA",
      "price": 2000,
      "avgPrice": 2000,
      "amount": 1,
      "tradedAmount": 1,
      "turnover": 2000,
      "symbol": "ETH/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "ETH",
      "direction": 1,
      "status": 1,
      "type": 1,
      "completedTime": 1672502400000,
      "canceledTime": 1672502400000,
      "time": 1672502400000
    }
  ]
}

下单

HTTP 请求

  • POST /v1/trade/order

鉴权:是

限流:20次/1秒

请求参数

返回字段

{
  "message": "success",
  "code": "0",
  "data": "E1677226372826791936"
}

撤销

HTTP 请求

  • POST /v1/trade/cancel

鉴权:是

限流:20次/1秒

请求参数

返回字段

{
  "message": "success",
  "code": "0",
  "data": ""
}

Last updated