跳到主要内容

介绍

概述

MEXC 现货 API 为开发者提供现货交易相关的 REST API 和 WebSocket 推送服务,支持市场行情查询、账户资产查询、订单创建与撤销、订单查询、成交记录查询及实时行情订阅等功能。

开发者可以通过现货 API 构建交易工具、行情系统、资产管理系统及自动化交易应用。调用账户、交易等私有接口时,需要使用 API Key 进行鉴权,并按照现货 API 的签名规则生成签名。

API Key 设置

  • 很多接口需要API Key才可以访问. 请参考这个页面来设置API Key.
  • 设置API Key的同时,为了安全,建议设置IP访问白名单(未添加白名单有效期为90天).
  • 设置可交易币对:您可在API管理页面“我的API Key —— 设置可交易币对”中设置该API Key允许的交易对.
  • 续签:API Key到期前5天,您可在API管理页面“我的API Key —— 操作—— 续签”,将您的API Key有效期顺延90天.
  • 永远不要把你的API key/secret告诉给任何人.

API Key 权限设置

在创建API Key时勾选所需要的权限

API 代码库

我们为开发者提供了Python,DotNET,Java,Javascript,Go五种语言的SDK,提供用户直接通过SDK调用API的方法。

https://github.com/mexcdevelop/mexc-api-demo

使用中遇到问题请通过提交问题反馈

Postman Collections

现在你可以通过Postman collection来快速体验、使用API接口。 如果想了解更多如何使用Postman,请访问: Mexc API Postman

接入URL

请选用以下的baseurl进行API请求:

  • https://api.mexc.com

HTTP 返回代码

  • HTTP 4XX 错误码用于指示错误的请求内容、行为、格式。问题在于请求者。
  • HTTP 401 表示身份认证、权限错误。
  • HTTP 403 错误码表示违反WAF限制(Web应用程序防火墙)。
  • HTTP 429 错误码表示警告访问频次超限,即将被封IP。
  • HTTP 5XX 错误码用于指示MEXC服务端的问题。

请求格式

相应API接受GET,POST或DELETE类型的请求

  • GET 方法的接口, 参数必须在 query string中发送。
  • POST, PUT, 和 DELETE 方法的接口,参数可以在内容形式为application/x-www-form-urlencoded的 query string 中发送,也可以在 request body 中以application/json的形式发送。如果你喜欢,也可以混合这两种方式发送参数。
  • 对参数的顺序不做要求。但如果同一个参数名在query string和request body中都有,query string中的会被优先采用。

返回格式

所有接口的返回数据均为JSON形式

Header操作的组成

请求Header中签名相关参数

组成部分说明
X-MEXC-APIKEYAPI key中的access key
Content-Typeapplication/json

签名

  • 调用SIGNED接口时,除了接口本身所需的参数外,还需要在query string 或 request body中传递 signature, 即签名参数(在批量操作的API中,若参数值中有逗号等特殊符号,这些符号在签名时需要做URL encode,注意encode只支持大写)。
  • 签名使用HMAC SHA256算法. API-KEY所对应的API-Secret作为 HMAC SHA256 的密钥,其他所有参数作为HMAC SHA256的操作对象,得到的输出即为签名。
  • 签名 目前只支持小写
  • "totalParams"定义为与"request body"串联的"query string"。

时间安全

伪代码示例

 if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow)
{
// process request
}
else
{
// reject request
}
  • 签名接口均需要传递timestamp参数,其值应当是请求发送时刻的unix时间戳(毫秒)。
  • 服务器收到请求时会判断请求中的时间戳,如果是5000毫秒之前发出的,则请求会被认为无效。这个时间空窗值可以通过发送可选参数recvWindow来定义。

关于交易时效性互联网状况并不完全稳定可靠,因此你的程序本地到MEXC服务器的时延会有抖动。这是我们设置recvWindow的目的所在,如果你从事高频交易,对交易时效性有较高的要求,可以灵活设置recvWindow以达到你的要求。

POST /api/v3/order 举例

Example 1

HMAC SHA256 signature:

$ echo -n "symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=11&recvWindow=5000&timestamp=1644489390087" | openssl dgst -sha256 -hmac "45d0b3c26f2644f19bfb98b07741b2f5"
(stdin)= 323c96ab85a745712e95e63cad28903dd8292e4a905e99c4ee3932023843a117
curl command:

(HMAC SHA256)
$ curl -H "X-MEXC-APIKEY: mx0aBYs33eIilxBWC5" -X POST 'https://api.mexc.com/api/v3/order' -d 'symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=11&recvWindow=5000&timestamp=1644489390087&signature=323c96ab85a745712e95e63cad28903dd8292e4a905e99c4ee3932023843a117'

Example 2

HMAC SHA256 signature:

$ echo -n "symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=11&recvWindow=5000&timestamp=1644489390087" | openssl dgst -sha256 -hmac "45d0b3c26f2644f19bfb98b07741b2f5"
(stdin)= fd3e4e8543c5188531eb7279d68ae7d26a573d0fc5ab0d18eb692451654d837a
curl command:

(HMAC SHA256)
$ curl -H "X-MEXC-APIKEY: mx0aBYs33eIilxBWC5" -X POST 'https://api.mexc.com/api/v3/order' -d 'symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=11&recvWindow=5000&timestamp=1644489390087&signature=fd3e4e8543c5188531eb7279d68ae7d26a573d0fc5ab0d18eb692451654d837a'

Example 3

HMAC SHA256 signature:

$ echo -n "symbol=BTCUSDT&side=BUY&type=LIMITquantity=1&price=11&recvWindow=5000&timestamp=1644489390087" | openssl dgst -sha256 -hmac "45d0b3c26f2644f19bfb98b07741b2f5"
(stdin)= d1a676610ceb39174c8039b3f548357994b2a34139a8addd33baadba65684592
curl command:

(HMAC SHA256)
$ curl -H "X-MEXC-APIKEY: mx0aBYs33eIilxBWC5" -X POST 'https://api.mexc.com/api/v3/order?symbol=BTCUSDT&side=BUY&type=LIMIT' -d 'quantity=1&price=11&recvWindow=5000&timestamp=1644489390087&signature=d1a676610ceb39174c8039b3f548357994b2a34139a8addd33baadba65684592'

以下是在linux bash环境下使用 echo openssl 和curl工具实现的一个调用接口下单的示例 apikey、secret仅供示范

KeyValue
apiKeymx0aBYs33eIilxBWC5
secretKey45d0b3c26f2644f19bfb98b07741b2f5
参数取值
symbolBTCUSDT
sideBUY
typeLIMIT
quantity1
price11
recvWindow5000
timestamp1644489390087

示例 1: 所有参数通过 request body 发送

  • requestBody: symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=11&recvWindow=5000&timestamp=1644489390087

所有参数通过 query string 发送

  • queryString: symbol=BTCUSDT&side=BUY&type=LIMIT&quantity=1&price=11&recvWindow=5000&timestamp=1644489390087

示例 3: 混合使用 query string 和 request body

  • queryString: symbol=BTCUSDT&side=BUY&type=LIMIT

  • requestBody: quantity=1&price=11&recvWindow=5000&timestamp=1644489390087

请注意,签名与示例3不同。 "LIMIT"和"quantity = 1"之间没有&。

限频规则

对REST API的访问有频率限制,当超出限制时,返回状态429:请求过于频繁。

需要携带access key进行访问的接口,以账号作为限速的基本单位;不需要携带access key进行访问的接口,以IP作为限速的基本单位。

限频说明

  • 每个接口会标明是按照IP或者按照UID统计, 以及相应请求一次的权重值。不同接口拥有不同的权重,越消耗资源的接口权重就会越大。
  • 按IP和按UID(account)两种模式分别统计, 两者互相独立。按IP权重限频的接口,所有接口共用300权重/10秒;按UID权重限频的接口,所有接口共用500权重/10秒。

超频报错

  • 收到429时,您有责任停止发送请求,不得滥用API。
  • 收到429后仍然继续违反访问限制,会被封禁IP。
  • 频繁违反限制,封禁时间会逐渐延长,从最短2分钟到最长3天
  • Retry-After的头会与带有418或429的响应发送,并且会给出以秒为单位的等待时长(如果是429)以防止禁令,或者如果是418,直到禁令结束。

WEBSOCKET 连接限制

  • Websocket服务器访问频率限制为:100次/s。
  • 如果用户发送的消息超过限制,连接会被断开连接。反复被断开连接的IP有可能被服务器屏蔽。
  • 单个连接最多可以订阅 30 个Streams。

常见问题

Q1:一个用户可以申请多少个API Key?

每个账户最多可以创建30个API Key,未绑定ip地址的API Key有效期只有90天,到期自动失效。每个API Key最多绑定10个ip地址。

Q2:一个母账户可以申请多少个子账户?

每个母账户最多可以创建30个子账户,子账户会自动继承母账户费率,通过api创建的子账户无法在web端登陆。

Q3:为什么经常出现断线、超时的情况?

如果不能够稳定的访问,建议使用日本或者新加坡AWS云服务器进行访问。

Q4:超出限制频率报错后,该怎么做?

超出接口访问频率限制后,无法继续访问接口,10分钟后会恢复正常,要保持低于限制的频率访问接口。

Q5:一个账户最多可以下多少单?

每个账户最大可以同时拥有500个未完全成交的有效订单。

Q6:为什么WebSocket总是断开连接?

1.如果没有有效订阅的话,会在30s断开链接。 2.如果订阅成功后,60s内没有流量,会自动断开。 3.需在接收到服务端发送的Ping信息后回复Pong,保证连接的稳定。

Q7:WebSocket想要订阅多个频道为什么无效?

目前WebSocket单个链接最多可以订阅30个频道,超过30后则订阅无效,若想要订阅更多的频道,推荐建立多个链接。

联系我们

  • MEXC API电报群 MEXC API Support Group
    • 咨询文档中没有提及的API问题
    • 咨询API或者websocket性能方面的问题
    • 咨询做市相关的问题
  • MEXC 客服 官网、app中在线客服
    • 咨询关于钱包、短信、2FA等问题