快速入门

接入准备

如需使用API ,请先登录网页端,完成API key的申请和权限配置,再据此文档详情进行开发和交易。

您可以点击 这里 创建 API Key。

每个用户可创建10组Api Key,每个Api Key可对应设置读取、交易两种权限。

权限说明如下:

  • 读取权限:读取权限用于对数据的查询,例如:行情数据。

  • 交易权限:交易权限用于下单、撤单等接口。

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

  • APIKey API交易的身份标识,随机算法生成。

  • Secretkey 私钥,由系统随机生成,用于签名的生成。

  • Passphrase 口令,由用户自己设定,需要注意的是,Passphrase忘记之后是无法找回的,需要重新创建APIKey。

创建 APIKey 时可以绑定 IP 地址,未绑定 IP 地址的 APIKey出于安全考虑,强烈建议您绑定 IP 地址。

风险提示 :这三个密钥与账号安全密切相关,请牢记Passphrase,无论何时都请勿向他人透露。 这三个密钥任意一个泄露可能会造成您的资产损失,若发现APIKey泄露请尽快删除该APIKey。

接口类型

本章节主要为接口类型分以下两个方面:

  • 公共接口

  • 私有接口

公共接口

公共接口可用于获取配置信息和行情数据。公共请求无需认证即可调用。

私有接口

私有接口可用于订单管理和账户管理。每个私有请求必须使用规范的验证形式进行签名。

私有接口需要使用您的APIKey进行验证。

访问限制

本章节主要为访问限制:

  • Rest API 当访问超过频率限制时,将返回429状态:请求太频繁。

Rest API

如果传入有效的APIKey 用APIKey限速;如果没有则拿公网IP限速。

限速规则:各个接口上有单独的说明,如果没有一般接口限速为 10次/秒。

特殊说明:批量下单时,若下4个币对,每个币对10个订单时,计为一次请求。

API域名

您可以自行使用Rest API接入方式进行操作。

域名
REST API
建议使用

域名1

国际

API验证

发起请求

所有REST请求的header都必须包含以下key:

  • ACCESS-KEY:API KEY作为一个字符串。

  • ACCESS-SIGN:使用base64编码签名(请参阅签名消息)。

  • ACCESS-TIMESTAMP:您请求的时间戳。

  • ACCESS-PASSPHRASE:您在创建API KEY时设置的口令。

  • Content-Type:统一设置为application/json。

  • locale: 支持多语言, 如:中文(zh-CN),英语(en-US)

签名

ACCESS-SIGN的请求头是对 timestamp + method.toUpperCase() + requestPath + "?" + queryString + body 字符串(+表示字符串连接)使用 HMAC SHA256 方法加密,通过BASE64 编码输出而得到的。

签名各字段说明

  • timestamp:与 ACCESS-TIMESTAMP 请求头相同。

  • method:请求方法(POST/GET),字母全部大写。

  • requestPath:请求接口路径。

  • queryString:请求URL中(?后的请求参数)的查询字符串。

  • body:请求主体对应的字符串,如果请求没有主体(通常为GET请求)则body可省略。

queryString为空时,签名格式

timestamp + method.toUpperCase() + requestPath + body

queryString不为空时,签名格式

timestamp + method.toUpperCase() + requestPath + "?" + queryString + body

举例说明

获取合约深度信息,以 cmt_btcusdt 为例:

  • Timestamp = 1591089508404

  • Method = "GET"

  • requestPath = "/api/swap/v3/market/depth"

  • queryString= "?symbol=cmt_btcusdt&limit=20"

生成待签名的字符串:

'1591089508404GET/api/swap/v1/market/depth?symbol=cmt_btcusdt&limit=20'

合约下单,以 cmt_btcusdt 为例:

  • Timestamp = 1561022985382

  • Method = "POST"

  • requestPath = "/api/swap/v3/order/placeOrder"

  • body = {"symbol":"cmt_btcusdt","size":"8","type":"1","match_price":"1","order_type":"1","client_oid":"ww#123456"}

生成待签名的字符串:

'1561022985382POST/api/swap/v3/order/placeOrder{"symbol":"cmt_btcusdt","size":"8","type":"1","match_price":"1","order_type":"1","client_oid":"ww#123456"}'

生成最终签名的步骤

第1步,将待签名字符串使用私钥secretkey进行hmac sha256加密

Signature = hmac_sha256(secretkey, Message)

第2步,对于Signature进行base64编码

Signature = base64.encode(Signature)

请求交互

所有请求基于Https协议,请求头信息中Content-Type 需要统一设置为: 'application/json'。

请求交互说明

  • 请求参数:根据接口请求参数规定进行参数封装。

  • 提交请求参数:将封装好的请求参数通过GET/POST方式提交至服务器。

  • 服务器响应:服务器首先对用户请求数据进行参数安全校验,通过校验后根据业务逻辑将响应数据以JSON格式返回给用户。

  • 数据处理:对服务器响应数据进行处理。

成功

HTTP状态码200表示成功响应,并可能包含内容。如果响应含有内容,则将显示在相应的返回内容里面。

常见错误码

  • 400 Bad Request – Invalid request format 请求格式无效

  • 401 Unauthorized – Invalid API Key 无效的API Key

  • 403 Forbidden – You do not have access to the requested resource 请求无权限

  • 404 Not Found 没有找到请求

  • 429 Too Many Requests 请求太频繁被系统限流

  • 500 Internal Server Error – We had a problem with our server 服务器内部错误

  • 如果失败body带有错误描述信息

标准规范

时间戳

请求签名中的ACCESS-TIMESTAMP的单位是毫秒。请求的时间戳必须在API服务时间的30秒内,否则请求将被视为过期并被拒绝。 如果本地服务器时间和API服务器时间之间存在较大的偏差,那么我们建议您使用通过查询API服务器时间来更新http header。

限频规则

如果请求过于频繁系统将自动限制请求,并在http header中返回429 too many requests状态码。

  • 公共接口:如行情接口,统一限频为1秒最多20个请求。

  • 授权接口:通过apikey限制授权接口的调用,参考每个接口的限频规则限频。

请求格式

目前只有两种格式的请求方法:GET和POST

  • GET: 参数通过queryString在路径中传输到服务器。

  • POST: 参数按照json格式发送body传输到服务器。

Last updated