Dynamics 365 for Customer Engagement - API Limit
Microsoft Dynamics 365 limit the number of API requests made by each user, per organization instance, within a five minute sliding window. Additionally, Dynamics 365 limit the number of concurrent requests that may come in at one time. When one of these limits is exceeded, an exception will be thrown by the platform.
The limit will help ensure that users running applications cannot interfere with each other based on resource constraints. The limits will not affect normal users of the platform. Only applications that perform a large number of API requests may be affected. The limit will help provide a level of protection from random and unexpected surges in request volumes that threaten the availability and performance characteristics of the Dynamics 365 platform.
Since plugins and custom workflow activities execute on the server independent of a logged on user, API calls made from plug-in code will not count against this external API request limit.
What happens when the limit is exceeded?
When the limit is exceeded, all requests for the same user will return error responses.
Error Code - 147015902 : Number of requests exceeded the limit of 4000, measured over time window of 300 seconds.
Error Code - 2147015903 : Combined execution time of incoming requests exceeded limit of 1,200,000 milliseconds over time window of 300 seconds. Decrease number of concurrent requests or reduce the duration of requests and try again later.
Error Code - 2147015898 : Number of concurrent requests exceeded the limit of X
All requests will return these error responses until the volume of API requests falls below the limit. If you get these responses, your application should stop sending API requests until the volume of requests is below the limit.
What should you do if your application exceeds the limit?
When your application exceeds the limit, the error response from the server may specify the amount of time you should wait before sending more requests. The response object is slightly different if you are using SDK assemblies or HTTP requests.