The CMR API enforces a rate limit of 5 requests per second per partner API key, applied globally across all endpoints and all users.
Rate Limit Response#
When you exceed the limit, the API returns:{
"status": 429,
"message": "Too many requests",
"data": null
}
The Retry-After header tells you the minimum number of seconds to wait before retrying.Webhook deliveries from CMR to your server do not count toward your rate limit. Only outbound requests from your server to the CMR API are counted.
Handling 429s#
Always read Retry-After and add a small amount of jitter to avoid thundering-herd retries from multiple concurrent workers.
Staying Under the Limit#
Batch requests where possible#
Some endpoints accept multiple items in a single call. Use them instead of looping single-item endpoints.| Instead of | Use |
|---|
POST /domains/available-single × N | POST /domains/available with domains: [...] |
Use a request queue for bulk operations#
Schedule bulk jobs off-peak#
Large batch operations — mass user imports, bulk renewals — should run during off-peak hours to avoid competing with real-time user-facing requests.
Next Steps#
Errors
Full status code reference and retry strategy for all error types.
Pagination
Avoid bulk pagination loops hitting the 5 req/sec limit.
Webhooks Overview
API structure, async operations, and environment details.