快速入门
接入准备
如需使用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接入方式进行操作。
域名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