XBTXBJZECETHETCXMRXRPREPLTCFCTRecentAllXBTUSD764.98+0.33%XBTZ16783.64+0.65%ETH7D0.00969-4.81%XMR7D0.010619-0.05%XBJZ1691665+0.47%XBJ7D91666+0.63%XBJ24H91520-0.13%ZECZ160.076760-3.45%REP7D0.004318-1.03%ETC7D0.000995-3.02%FCT7D0.002752+1.07%XRP7D0.00000849-0.70%LTC7D0.00504+0.00%XBT/USD Spot763.25+0.01%XBT/JPY Spot91697.46+0.52%ETH/XBT Spot0.00979-5.50%ZEC/XBT Spot0.0752700-2.59%24H XBT Volatility1.38-29.23%Funding:  @ 0.0785%Time:

Using the BitMEX REST API

If you are logged in, you may access the API Key Management interface.

For a list of endpoints and return types, view the REST documentation in the API Explorer.

Specification and Clients

The BitMEX API conforms to the Swagger spec for REST endpoints. Any Swagger-compatible client can connect to the BitMEX API and execute commands.

An updated list of available clients is listed here.

Examples of basic communication to our API are in our api-connectors repository.


To access private endpoints, a permanent API key is required.

Details about authentication via API Key are available via a separate document.


For convenience, GET https://www.bitmex.com/api/v1/schema will return a list of endpoint return types and their structure. Try it out.


Note that all Bitcoin quantities are returned in Satoshis: 1 XBt (Satoshi) = 0.00000001 XBT (Bitcoin).


Many table endpoints take a filter parameter. This is expected to be JSON. For example, the filter query {"side":"Buy"} can be url-encoded and sent to the trade endpoint (click to run).

Most values can only be filtered by simple equality. Timestamps, which are all UTC, can be queried in many ways:

Timestamp filters

The following fields can be passed in the "filter" param as JSON key/value pairs:

Key Description Example Example Description
"startTime" Start timestamp. "2014-12-26 11:00" On or after 11:00am on 26 December 2014.
"endTime" End timestamp. "2014-12-26 13:00" On or before 1:00pm on 26 December 2014.
"timestamp" Exact timestamp. "2014-12-26 12:00" Exactly noon on 26 December 2014.
"timestamp.date" Exact day. "2014-12-26" The entire day of 26 December 2014.
"timestamp.month" Exact month. "2014-12" The entire month of December 2014.
"timestamp.year" Exact year. 2014 The entire year of 2014.
"timestamp.mm" Month of year. 12 December of each year.
"timestamp.dd" Day of month. 26 26th of each month.
"timestamp.ww" Day of week. 6 Friday of each week. 0 = Sat, 1 = Sun
"timestamp.time" Exact time. "12:00:00.000" Exactly noon of each day.
"timestamp.second" Exact second. "12:00:00" The entire second from noon of each day.
"timestamp.minute" Exact minute. "12:00" The entire minute from noon of each day.
"timestamp.hh" Hour of day. 12 12th hour of each day. (i.e. noon)
"timestamp.uu" Minute of hour. 30 30th minute of each hour.
"timestamp.ss" Second of minute. 15 15th second of each minute.

For example, the .BVOL7D index is calculated and published on the trade feed every 5 minutes. To filter to just noon on Fridays, send the payload:

{"symbol": ".BVOL7D", "filter": {"timestamp.time":"12:00", "timestamp.ww":6}}

(Click to run)

Rate Limits

Requests to our REST API are rate limited to 300 requests per 5 minutes. If you need real-time updates, please use the WebSocket rather than polling. If you are running up against our limits and believe that you have a legitimate need, please email us at support@bitmex.com to discuss upgrading your access limits.

Please be very careful about the number of errors your tools throw. If a large number of 400 or 500 responses are delivered in a short period of time, your IP may be banned for an hour.

HTTP Keep-Alive

BitMEX does not support placing or canceling orders via WebSocket, only via HTTP.

Our servers support HTTP Keep-Alive and cache SSL sessions. If you keep a connection alive, you will get websocket-like latency, obviating the need to use the websocket for transactional communication.

Our Keep-Alive timeout is 30 seconds.