CMA Technical Limits & Rate Limits
For limits applicable to the GraphQL Content Delivery API, please instead see CDA Technical Limits & Rate Limits
Our shared-service infrastructure is built to maintain steady performance for every customer, thanks to carefully set technical limits. If any API call or CMS action goes over these boundaries, it'll trigger an error message. Should your project require higher limits, get in touch with us to discuss further.
CMA Technical Limits: Per-project and projectwide
Here are the technical limits currently in place for the CMA:
Per-record limits (read more):
Maximum Record size: 300 KB, including content in nested blocks (assets and linked records do not count toward the limit).
Number of blocks per record: 500
Maximum depth for nested blocks: 5 levels
Number of concurrent editors per record: 1 (with presence indicator and record locking, read more)
Project-wide limits:
CMA Rate Limits
The Content Management API is limited to 60 requests every 3 seconds.
CMA Rate Limit Examples
You make 80 requests at once and hit the limit immediately. The last 20 requests are rejected with a
429. You should retry again afterx-ratelimit-reset: 3seconds.You sustain 30 requests/second. You will hit the limit in 2 seconds. The last 30 requests are rejected with a
429. You should retry again afterx-ratelimit-reset: 1second.You sustain 20 requests/second and stay under the limit. Well done!
Our Javascript client already manages rate limit errors for you with a retry mechanism! If it encounters a 429 status code, the promise won't be rejected. The client will repeat the requests until the API stops returning 429 status codes, and only then will the promise will be resolved with success.
Even when you are operating within your rate limits, there is a possibility of encountering a 429 status code in situations of high system load if your project is hosted on the DatoCMS shared infrastructure or medium-density infrastructure.
Nevertheless, it's essential to acknowledge that this occurrence is rare, and our official clients are equipped with an automatic retry mechanism to seamlessly handle such situations.
HTTP Headers for CMA Rate Limit
Every CMA response will include these HTTP headers to help you stay within the rate limit:
x-ratelimit-limit: The number of requests you can make every 3 seconds (usually 60)x-ratelimit-remaining: The number of remaining requests you can still make before the next refill
Exceeding the CMA rate limit will cause the HTTP status code to become 429 Too Many Requests, and an additional header will be added:
x-ratelimit-reset: Number of seconds until the next refill (only appears when rate-limited)
Reaching your plan monthly API calls limit
Every DatoCMS plan offers a number of API requests per month. What happens you exceed the included quota?
If your project is under a free plan, API responses will be temporarily disabled until the beginning of the following calendar month, unless you switch to a paid plan.
If your project is under a paid plan, you will pay an additional cost for the additional usage you made of the API.
For more details, check our Plans, billing and pricing page.