快速入门
接入准备
如需使用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公开参数
side(交易方向)
sell
卖
buy
买
orderType(订单类型)
limit
限价
market
市价
force(订单类型)
normal
不用特殊控制类型订单
postOnly
postOnly类型订单
fok
全部成交或立即取消(FOK)
ioc
立即成交并取消剩余(IOC)
status(订单状态)
new
未成交
partial_fill
部分成交
full_fill
全部成交
cancelled
已撤销
groupType(账单流水大类型)
deposit
充值
withdraw
提现
transaction
交易
transfer
划转
other
其他
bizType(账单流水业务类型)
deposit
充值
withdraw
提现
buy
买
sell
卖
transfer-in
转入
transfer-out
转出
status(充提订单状态)
cancel
取消
reject
拒绝
success
成功
wallet-fail
钱包失败
wallet-processing
钱包处理中
first-audit
初审
recheck
复审
first-reject
初审拒绝
recheck-reject
复审拒绝
type(用户提币地址查询)
chain-on
链上
inner-transfer
内部地址
accountType(账户类型)
不区分大小写
EXCHANGE
现货账户
OTC_SGD
OTC账户
CONTRACT
合约账户
USD_MIX
混合合约账户
USDT_MIX
USDT专业合约账户
K线间隔(granularity)
1min(1分钟)
5min(5分钟)
15min(15分钟)
30min(30分钟)
1h(1小时)
4h(4小时)
12h(12小时)
1day(1天)
1week(1周)
签名
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
举例说明
获取深度信息,以 btcusdt 为例:
Timestamp = 1591089508404
Method = "GET"
requestPath = "/api/spot/v1/market/depth"
queryString= "?symbol=btcusdt_spbl&limit=20"
生成待签名的字符串:
'1591089508404GET/api/spot/v1/market/depth?symbol=btcusdt_spbl&limit=20'
下单,以 btcusdt 为例:
Timestamp = 1561022985382
Method = "POST"
requestPath = "/api/spot/v1/order/order"
body = {"symbol":"btcusdt_spbl","quantity":"8","side":"buy","price":"1","orderType":"limit","clientOrderId":"ww#123456"}
生成待签名的字符串:
'1561022985382POST/api/spot/v3/order/order{"symbol":"btcusdt_spbl","size":"8","side":"buy","price":"1","orderType":"limit","clientOrderId":"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状态码。
公共接口:如行情接口,统一限频为2秒最多20个请求。
授权接口:通过apikey限制授权接口的调用,参考每个接口的限频规则限频。
请求格式
目前只有两种格式的请求方法:GET和POST
GET: 参数通过queryString在路径中传输到服务器。
POST: 参数按照json格式发送body传输到服务器。
Last updated