REST行情与交易接口 (2024-10-17)
API 基本信息
- 本篇列出接口的 base URL 有:
- 上述列表的最后4个接口 (
api1
-api4
) 会提供更好的性能,但其稳定性略为逊色。因此,请务必使用最适合的URL。 - 所有接口的响应都是 JSON 格式。
- 响应中如有数组,数组元素以时间升序排列,越早的数据越提前。
- 所有时间、时间戳均为UNIX时间,单位为毫秒。
- 对于仅发送公开市场数据的 API,您可以使用接口的 base URL https://data-api.binance.vision 。请参考 Market Data Only_CN 页面。
HTTP 返回代码
- HTTP
4XX
错误码用于指示错误的请求内容、行为、格式。问题在于请求者。 - HTTP
403
错误码表示违反WAF限制(Web应用程序防火墙)。 - HTTP
409
错误码表示重新下单(cancelReplace)的请求部分成功。(比如取消订单失败,但是下单成功了) - HTTP
429
错误码表示警告访问频次超限,即将被封IP。 - HTTP
418
表示收到429后继续访问,于是被封了。 - HTTP
5XX
错误码用于指示Binance服务侧的问题。
接口错误代码
- 每个接口都有可能抛出异常,异常响应格式如下:
{
"code": -1121,
"msg": "Invalid symbol."
}
- 具体的错误码及其解释在错误代码汇总
接口的基本信息
GET
方法的接口, 参数必须在query string
中发送。POST
,PUT
, 和DELETE
方法的接口,参数可以在内容形式为application/x-www-form-urlencoded
的query string
中发送,也可以在request body
中发送。 如果你喜欢,也可以混合这两种方式发送参数。- 对参数的顺序不做要求。
- 但如果同一个参数名在
query string
和request body
中都有,query string
中的会被优先采用。
访问限制
访问限制基本信息
- 以下是
intervalLetter
作为头部值:- SECOND => S
- MINUTE => M
- HOUR => H
- DAY => D
- 在
/api/v3/exchangeInfo
接口中rateLimits
数组里包含有REST接口(不限于本篇的REST接口)的访问限制。包括 带权重的访问频次限制、下单速率限制。参考 枚举定义 中有关有限制类型的进一步说明。 - 当您超出请求速率限制时,请求会失败并返回 HTTP 状态代码 429。
IP 访问限制
- 每个请求将包含一个
X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter)
的头,其中包含当前IP所有请求的已使用权重。 - 每一个接口均有一个相应的权重(weight),有的接口根据参数不同可能拥有不同的权重。越消耗资源的接口权重就会越大。
- 收到429时,您有责任停止发送请求,不得滥用API。
- 收到429后仍然继续违反访问限制,会被封禁IP,并收到418错误码
- 频繁违反限制,封禁时间会逐渐延长,从最短2分钟到最长3天.
Retry-After
的头会与带有418或429的响应发送,并且会给出以秒为单位的等待时长(如果是429)以防止禁令,或者如果是418,直到禁令结束。- 访问限制是基于IP的,而不是API Key
未成交订单计数
- 每个成功的订单响应都将包含一个
X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter)
报文头,用于标识您在该时间间隔 内下了多少订单。
如果您想要对此进行监控,请参阅GET api/v3/rateLimit/order
。 - 被拒绝/不成功的订单不保证在响应中有
X-MBX-ORDER-COUNT-**
报文头。 - 如果超过此值,您将收到一个 429 错误,而且不带
Retry-After
报文头。 - 请注意,如果您的订单一直顺利完成交易,您可以通过 API 持续下订单。更多信息,请参见现货未成交订单计数规则。
- 未成交订单数量是按照每个账户来统计的。
数据来源
- 因为API系统是异步的, 所以返回的数据有延时很正常, 也在预期之中。
- 在每个接口中,都列出了其数据的来源,可以用于理解数据的时效性。
系统一共有3个数据来源,按照更新速度的先后排序。排在前面的数据最新,在后面就有可能存在延迟。
- 撮合引擎 - 表示数据来源于撮合引擎
- 缓存 - 表示数据来源于内部或者外部的缓存
- 数据库 - 表示数据直接来源于数据库
有些接口有不止一个数据源, 比如 缓存 => 数据库
, 这表示接口会先从第一个数据源检查,如果没有数据,则检查下一个数据源。
接口鉴权类型
- 每个接口都有自己的鉴权类型,鉴权类型决定了访问时应当进行何种鉴权。
- 鉴权类型会在本文档中各个接口名称旁声明,如果没有特殊声明即默认为
NONE
。 - 如果需要 API-keys,应当在HTTP头中以
X-MBX-APIKEY
字段传递。 - API-keys 与 secret-keys