Skip to content

常见问题

请求接口的timestamp参数和到达服务器时间最大差值是多少?

服务器收到请求时会判断请求中的时间戳,如果是5000毫秒之前发出的,则请求会被认为无效。这个时间窗口值可以通过发送可选参数recvWindow来自定义。

请求头"X-CH-TS"不能为空 如何解决?

首先建议用户打印一下X-CH-TS,出现异常时检查X-CH-TS是否为空,另外建议用户代码优化,每次请求前先判断X-CH-TS是否为空。

为什么签名认证总返回无效的签名?

按下列顺序逐项排查,90% 以上的签名问题来自第 1、2 条

  1. requestPath 错带了网关前缀。完整 URL 是 https://openapi.bitbaby.com/futures/open/fapi/v1/openOrders,但签名只能用 /fapi/v1/openOrders,不要把 /futures/open/spot/open 写进 PreHash。现货的 /sapi/... 同理。
  2. POST 时 body 被序列化两次。一种典型错误:先 json.dumps(obj) 出字符串去签名,然后 HTTP 请求又传 json=obj,requests 会再 json.dumps 一次,导致字段顺序、空格变化,签名校验失败。请坚持「序列化一次 → 用同一字符串签名 → 用同一字符串当 body 发送」
  3. GET 与 POST 的 PreHash 拼装方式不同
    • GETtimestamp + GET + requestPath + (?queryString)?不带 body
    • POSTtimestamp + POST + requestPath + (?queryString)? + body,body 为请求体原始字符串。
    • ? 由公式拼接,queryString 自身不要含开头的 ?
  4. X-CH-TS 与 PreHash 中的 timestamp 必须完全相同(都是 13 位毫秒字符串)。
  5. API-Key / API-Secret 大小写敏感,且不要包含两端空格
  6. Content-Type 必须为 application/json,否则可能直接返回 -1017 ILLEGAL_CONTENT_TYPE
  7. 服务器与客户端时间偏差超过 ±5s 也会被网关拒绝。可以先调用 /sapi/v1/time/fapi/v1/time 查看 serverTime,然后调整本地时钟或在请求中传 recvWindow(POST 写在 body 中,GET 写在 query 中)。

排查时建议在客户端 打印 出三样东西,与抓包对比:

  • 实际发送的 HTTP method、URL、Headers、Body
  • 你计算签名时所用的 PreHash 字符串
  • 你计算出的 X-CH-SIGN

PreHash 示例(与 基本信息 完全一致):

text
GET 示例:   1588591856950GET/sapi/v1/openOrders?symbol=BTCUSDT&limit=10
POST 示例:  1588591856950POST/sapi/v1/order/test{"symbol":"BTCUSDT","price":"9300","volume":"1","side":"BUY","type":"LIMIT"}

请求头示例:

bash
Content-Type: application/json
X-CH-APIKEY: 44c541a1-****-****-****-10fe390df2
X-CH-TS:     1574327555669
X-CH-SIGN:   c50d0a74bb9427a9a03933d0eded03af9bf50115dc5b706882a4fcf07a26b761

调用接口提示ILLEGAL_CONTENT_TYPE (-1017),是什么原因?

我们建议在所有的请求头附加Content-Type, 并设置成application/json

API每秒调用频率有限制吗?

有限制,具体可以看下文档中每个接口的访问频率限制。

API的访问频率是根据什么限制的?

个人数据是根据API-key限制的,公共数据是根据ip限制,需要注意的是,若用户请求公共数据时传入有效的个人信息就根据API-key限制。

HTTP状态码429是怎样造成的?

请求接口超过访问频率限制,建议降低访问频率。

API调用接口报超过访问频率会被封IP吗?封多久?

通常情况下不会的,降低访问频率就可以。

为什么WebSocker出现了断开连接?

  • 未添加心跳,WebSocket连接需客户端需要回pong,保证连接的稳定。
  • 网络原因造成客户端发送的pong消息,但服务端并未接收到,或其他网络原因也会导致自动断开连接。
  • 建议用户做好WebSocket断开重连机制,在确保心跳(ping/pong)连接意外断开时,程序能够自动重新进行连接。

用户请求接口报错Time Out?

网络无法连接服务器,建议您检查下网络是否通畅。

如何拿到平台所有的币对

币币的 /sapi/v1/symbols 接口可以拿到

批量下单/撤单有条数限制吗?

是的, 批量接口会限制10条订单

newClientOrderId是什么, 有什么作用?

  • newClientOrderId是您自定义的订单号,可以用来标识您的一笔订单,当下单完成后,可以使newClientOrderId调用 “订单信息“接口,查看订单状态;
  • 用户需要自己保证此ID不重复,我方不会进行排重提示,如有重复,撤单和查询订单时只能撤销或者查询最新的一条数据

如何获取最新成交价格?

可以通过获取ticker信息, last就是最新成交价

ticker接口中的24小时成交量会出现负增长吗?

会的。因为24小时成交量,为24小时滚动数据(平移窗口大小24小时),有可能会出现后一个窗口内的累计成交量、累计成交额小于前一窗口的情况。