The REST API has rate limits that affect the number of calls that can be made within a short amount of time. The rate limits are designed to protect the API against attacks (such as DDos attacks), and to prevent manipulation of our order books (such as by rapidly placing and cancelling large orders).
The REST API rate limits are divided into three sections depending upon the type of call that is being made:
The public endpoints are rate limited by IP address and currency pair for calls to Trades and OHLC, and by IP address only for calls to all other endpoints.
Calling the public endpoints at a frequency of 1 per second (or less) would remain within the rate limits, but exceeding this frequency could cause the calls to be rate limited. If the rate limits are reached, additional calls would be restricted for a few seconds (or possibly longer if calls continue to be made while the rate limits are active).
The private endpoints are rate limited by API key and are based upon a counter that starts at 0, increases with each call, and decreases over time. Each API key's counter is separate, and if the counter exceeds the maximum value, subsequent calls using that API key would be rate limited. If the rate limits are reached, additional calls will be restricted for a few seconds (or possibly longer if calls continue to be made while the rate limits are active).
|Action||Change to Call Count|
|Ledgers, TradesHistory, ClosedOrders||+2|
|All other API calls (Balance, TradeBalance, etc.)||+1|
|Verification Level||Maximum Call Count per Key||Call Count Reduction|
|Starter||15||-1 every 3 seconds|
|Intermediate||20||-1 every 2 seconds|
|Pro||20||-1 every 1 seconds|
The trading endpoints (AddOrder/CancelOrder) are rate limited by account and currency pair, and are based upon the amount of time that orders spend posted to the order book. Rapidly placing/cancelling orders incurs a penalty that could cause subsequent calls to be rate limited. The cancellation penalty curve is high until 15 seconds, then decreases slowly over time, until becoming negligible once the order has been posted to the order book for 5 minutes.