To protect the stability of the API and keep it available to all users, Ingram Micro enforces multiple kinds of rate-limiting. Requests that hit any of our rate limits will receive a “429 Too Many Requests” response, which contains the "X-RateLimit" header indicating how many seconds the client should wait before retrying the request. Limits are allocated per API app.
Code | Description |
---|---|
X-RateLimit-Limit: 500 | Total rate limit available per app per transaction. |
X-RateLimit-Remaining: 499 | Remaining rate limit / number of request an app can send for a particular transaction. |
X-RateLimit-Reset: 1392815263 | Time by when X-RateLimit-Remaining counter will reset. Where the number here is EPoch/ Unix time. |
Standard Rate Limits
- Current rate-limits for all GET calls: 60 calls per minute per endpoint.
- Depending on the endpoint you are trying to reach, the rate limit sets a specific number of allowed requests per refresh period. Once this threshold has been reached, Ingram Micro returns a status code 429 response.
- Each Web API request returns the following header information regarding rate limits and the number of requests left.
Rate Limit Examples
This example illustrates a typical rate limit configuration:
GET https://api.ingrammicro.com/resellers/v3/resource HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 499
X-RateLimit-Reset: 1392815263
{
"foo": "bar"
}
This example illustrates the occurrence of a rate limit being exceeded. In instances where the rate limit has been exceeded, you are longer able to make a request against that endpoint for the duration of the refresh period.
GET https://api.ingrammicro.com/resellers/v3/resource/ HTTP/1.1
HTTP/1.1 429 TOO MANY REQUESTS
Content-Type: application/json
X-RateLimit-Limit: 150
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1392815263
{
"errors": [
{
"field": null,
"message": "too many requests"
},
]
}