# CMA Technical Limits & Rate Limits

> [!NOTE] Content Management API (REST) Only
> These limits only apply to the Content Management API, our read/write REST API.
> 
> For other API limits, please see:
> 
> -   [CDA Technical Limits & Rate Limits](https://www.datocms.com/docs/content-delivery-api/technical-limits.md)
>     
> -   [Real-time Updates API Limits & Pricing](https://www.datocms.com/docs/real-time-updates-api/limits-and-pricing.md)

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](https://www.datocms.com/support.md) 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**](https://www.datocms.com/docs/content-modelling/record-block-limits-and-byte-size-limits.md)**):**
    
    -   **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](https://www.datocms.com/docs/general-concepts/collaboration-features.md))
        
-   **Project-wide limits:**
    
    -   **Assets upload**: Max size of 1 GB per asset
        
    -   **Plugin global user-defined settings**: Max size of 10KB per plugin ([read more](https://www.datocms.com/docs/plugin-sdk/field-extensions.md#adding-user-defined-settings-into-the-mix))
        
    -   **Plugin field extension user-defined settings**: Max size of 10KB per field ([read more](https://www.datocms.com/docs/plugin-sdk/field-extensions.md#adding-user-defined-settings-into-the-mix))
        

## CMA Rate Limits

The Content Management API is limited to **60 requests every 3 seconds**.

### **CMA Rate Limit Examples**

1.  You make **80 requests** at once and hit the limit immediately. The last 20 requests are rejected with a `429`. You should retry again after `x-ratelimit-reset: 3` seconds.
    
2.  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 after `x-ratelimit-reset: 1` second.
    
3.  You sustain **20 requests/second** and stay under the limit. Well done!
    

> [!POSITIVE] Official clients and rate limits
> Our [Javascript client](https://www.datocms.com/docs/content-management-api/using-the-nodejs-clients.md) 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.

> [!WARNING] 429 Status Responses in DatoCMS Shared Infrastructure
> 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](https://www.datocms.com/docs/plans-pricing-and-billing.md).

## Related content in "Content Management API"

- [Content Management API Overview](https://www.datocms.com/docs/content-management-api.md)
- [Using the JavaScript CMA client](https://www.datocms.com/docs/content-management-api/using-the-nodejs-clients.md)
- [API versioning](https://www.datocms.com/docs/content-management-api/api-versioning.md)
- [Authentication](https://www.datocms.com/docs/content-management-api/authentication.md)
- [Environments](https://www.datocms.com/docs/content-management-api/setting-the-environment.md)
- [Error codes & handling failures (CMA)](https://www.datocms.com/docs/content-management-api/errors.md)
- [Pagination](https://www.datocms.com/docs/content-management-api/pagination.md)
- [Asynchronous jobs](https://www.datocms.com/docs/content-management-api/async-jobs.md)
- [CMA Technical Limits & Rate Limits](https://www.datocms.com/docs/content-management-api/technical-limits.md)
- [Record](https://www.datocms.com/docs/content-management-api/resources/item.md)
- [Scheduled publication](https://www.datocms.com/docs/content-management-api/resources/scheduled-publication.md)
- [Scheduled unpublishing](https://www.datocms.com/docs/content-management-api/resources/scheduled-unpublishing.md)
- [Upload](https://www.datocms.com/docs/content-management-api/resources/upload.md)
- [Site](https://www.datocms.com/docs/content-management-api/resources/site.md)
- [Model/Block model](https://www.datocms.com/docs/content-management-api/resources/item-type.md)
- [Field](https://www.datocms.com/docs/content-management-api/resources/field.md)
- [Fieldset](https://www.datocms.com/docs/content-management-api/resources/fieldset.md)
- [Record version](https://www.datocms.com/docs/content-management-api/resources/item-version.md)
- [Upload permission](https://www.datocms.com/docs/content-management-api/resources/upload-request.md)
- [Upload track](https://www.datocms.com/docs/content-management-api/resources/upload-track.md)
- [Manual tags](https://www.datocms.com/docs/content-management-api/resources/upload-tag.md)
- [Smart tags](https://www.datocms.com/docs/content-management-api/resources/upload-smart-tag.md)
- [Upload Collection](https://www.datocms.com/docs/content-management-api/resources/upload-collection.md)
- [Search Index](https://www.datocms.com/docs/content-management-api/resources/search-index.md)
- [Search result](https://www.datocms.com/docs/content-management-api/resources/search-result.md)
- [Search indexing activity](https://www.datocms.com/docs/content-management-api/resources/search-index-event.md)
- [Environment](https://www.datocms.com/docs/content-management-api/resources/environment.md)
- [Maintenance mode](https://www.datocms.com/docs/content-management-api/resources/maintenance-mode.md)
- [Menu Item](https://www.datocms.com/docs/content-management-api/resources/menu-item.md)
- [Schema Menu Item](https://www.datocms.com/docs/content-management-api/resources/schema-menu-item.md)
- [Uploads filter](https://www.datocms.com/docs/content-management-api/resources/upload-filter.md)
- [Model filter](https://www.datocms.com/docs/content-management-api/resources/item-type-filter.md)
- [Plugin](https://www.datocms.com/docs/content-management-api/resources/plugin.md)
- [Workflow](https://www.datocms.com/docs/content-management-api/resources/workflow.md)
- [Asynchronous job](https://www.datocms.com/docs/content-management-api/resources/job.md)
- [Job result](https://www.datocms.com/docs/content-management-api/resources/job-result.md)
- [Account](https://www.datocms.com/docs/content-management-api/resources/account.md)
- [Organization](https://www.datocms.com/docs/content-management-api/resources/organization.md)
- [Invitation](https://www.datocms.com/docs/content-management-api/resources/site-invitation.md)
- [Collaborator](https://www.datocms.com/docs/content-management-api/resources/user.md)
- [Role](https://www.datocms.com/docs/content-management-api/resources/role.md)
- [API token](https://www.datocms.com/docs/content-management-api/resources/access-token.md)
- [Webhook](https://www.datocms.com/docs/content-management-api/resources/webhook.md)
- [Webhook call](https://www.datocms.com/docs/content-management-api/resources/webhook-call.md)
- [Build trigger](https://www.datocms.com/docs/content-management-api/resources/build-trigger.md)
- [Deploy activity](https://www.datocms.com/docs/content-management-api/resources/build-event.md)
- [Subscription limit](https://www.datocms.com/docs/content-management-api/resources/subscription-limit.md)
- [Subscription feature](https://www.datocms.com/docs/content-management-api/resources/subscription-feature.md)
- [SSO Settings](https://www.datocms.com/docs/content-management-api/resources/sso-settings.md)
- [SSO User](https://www.datocms.com/docs/content-management-api/resources/sso-user.md)
- [SSO Group](https://www.datocms.com/docs/content-management-api/resources/sso-group.md)
- [White-label settings](https://www.datocms.com/docs/content-management-api/resources/white-label-settings.md)
- [Audit log event](https://www.datocms.com/docs/content-management-api/resources/audit-log-event.md)