Contentstack is a headless, API-first content management system (CMS) that provides everything you need to power your web or mobile properties. To learn more about Contentstack, visit our website or refer to our documentation site to understand what we do.
This document is a detailed reference to Contentstack’s Automate Management API.
The Automate Management API is used to manage your projects and automations present in an organization. This includes creation, updation, deletion, and fetching requests.
To use the Automate Management API, you need to authenticate yourself with an Authtoken. Read more about it in Authentication.
Note: The initial release of the Automate Management API currently does not include support for Management token for authentication. However, this feature is scheduled to be introduced in upcoming releases.
Contentstack provides token-based authentication that allows you to create, update, delete, and fetch the content of your Contentstack account. You can use the user Authtoken, to make Automate Management API requests.
Authtokens are user-specific tokens generated when a user logs into Contentstack. Read more about the different types of tokens.
To retrieve the authtoken, log into your Contentstack account by using the “Log into your account” request under “User Session.” This request will return the authtoken in the response body.
You can generate multiple authtokens by executing the “Log into your account” request multiple times. These tokens do not have an expiration limit. However, currently, there is a maximum limit of 20 valid tokens that a user can use per account at a time to execute the CMA requests.
Note: If you already have valid 20 tokens, creating a new authtoken will automatically expire the oldest authtoken without warning.
For SSO-enabled organizations, the “Log in to your account” request will not return the user authtoken for users who access the organization through Identity Provider login credentials. Consequently, any requests that require a user authtoken will not work. The owner and users of the organization who have permission to access the organization without SSO can use the Content Management APIs. Learn more about REST API Usage.
Rate limit is the maximum number of requests you can make using Contentstack’s API in a given time period.
By default, the Automate Management API enforces the following rate limits:
Your application will receive the HTTP 429 response code if the requests for a given time period exceed the defined rate limits.
The aforementioned limits are configurable depending on your plan. For more information, contact our Support team.
If there is something wrong with the API request, Automate returns an error.
Automate uses conventional, standard HTTP status codes for errors, and returns a JSON body containing details about the error. In general, codes in the 2xx range signify success. The codes in the 4xx range indicate error, mainly due to information provided (for example, a required parameter or field was omitted). Lastly, codes in the 5xx range mean that there is something wrong with Automate's servers; it is very rare though.
Let’s look at the error code and their meanings.
| HTTP status code | Description |
|---|---|
| 400 Bad Request | The request was incorrect or corrupted. |
| 401 Access Denied | The login credentials are invalid. |
| 403 Forbidden Error | The page or resource that is being accessed is forbidden. |
| 404 Not Found | The requested page or resource could not be found. |
| 412 Pre Condition Failed | The entered API key is invalid. |
| 422* Unprocessable Entity (also includes Validation Error and Unknown Field) | The request is syntactically correct but contains semantic errors. |
| 429 Rate Limit Exceeded | The number of requests exceeds the allowed limit for the given time period. |
| 500 Internal Server Error | The server is malfunctioning and is not specific on what the problem is. |
| 502 Bad Gateway Error | A server received an invalid response from another server. |
| 504 Gateway Timeout Error | A server did not receive a timely response from another server that it was accessing while attempting to load the web page or fill another request by the browser. |
Note: The error codes that we get in the JSON response are not HTTP error codes but are custom Automate error codes that are used for internal purposes.
Contentstack offers you a Postman Collection that helps you try out our Automate Management API. You can download this collection, connect to your Contentstack account, and try out the Automate Management API with ease.
Learn more about how to get started with using the Postman Collection for Automate Management API.
The Get all projects request returns comprehensive information of all the projects related to the Organization in which they are created.
To configure the permissions for your application via OAuth, include the automationhub.projects.management:read scope.
Note: If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items.
The Get a single project request fetches a specific project created in your organization. When executing the API request, you need to provide the organization UID and your authtoken in the Request Header.
To configure the permissions for your application via OAuth, include the automationhub.projects.management:read scope.
The Create a project request lets you create a project in your organization.
To configure the permissions for your application via OAuth, include the automationhub.projects.management:writescope.
The Update a project request lets you update certain details such as the description, tags, and title of an existing project in an Organization.
To configure the permissions for your application via OAuth, include the automationhub.projects.management:write scope.
Here’s an example of the Request body:
{
"description": "New Description",
"tags": ["tag1", "tag2",...],
"title": "New Title"
}The Delete a project request lets you delete an existing project in an organization.
The Get all automations request returns comprehensive information of all the automations created in a project.
To configure the permissions for your application via OAuth, include the automationhub.automations:read scope.
To get a list of automations that are active, you need to pass the query={'active':'true'} parameter.
Note: If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items.
The Get a single automation request fetches a specific automation from a project in which it was created.
To configure the permissions for your application via OAuth, include the automationhub.automations:read scope.
The Activate/Deactivate an automation request sets an automation to an active or inactive state.
To configure the permissions for your application via OAuth, include the automationhub.automations:write scope.
Note: To activate/deactivate an automation, you must have a trigger and an action configured in your project.
The Get execution log request is used to retrieve the execution log of a project.
To configure the permissions for your application via OAuth, include the automationhub.executions:read scope.
Note: If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items.
The Get an execution log item request is used to retrieve a specific item from the execution log of a project.
To configure the permissions for your application via OAuth, include the automationhub.executions:read scope.
The Get audit log request returns the audit log of a specific project.
To configure the permissions for your application via OAuth, include the automationhub.audit-log:read scope.
Note: If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 30 items.
The Get an audit log item request is used to retrieve a specific item from the audit log of a project.
To configure the permissions for your application via OAuth, include the automationhub.audit-logs:read scope.
The Get all project variables request returns comprehensive information of all the project variables defined in a project.
To configure the permissions for your application via OAuth, include the automationhub.variables:read scope.
Note: If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items.
The Get a single project variable request fetches a specific project variable defined in a project.
To configure the permissions for your application via OAuth, include the automationhub.variables:read scope.
The Create a project variable request lets you create a project variable in a project.
To configure the permissions for your application via OAuth, include the automationhub.variables:write scope.
The Update a project variable request lets you update the key, value and type of a project variable.
To configure the permissions for your application via OAuth, include the automationhub.variables:write scope.
The Delete a project variable request lets you delete a specific project variable from a project.
To configure the permissions for your application via OAuth, include the automationhub.variables:write scope.
The Get all accounts request returns comprehensive information of all the accounts in a project.
To configure the permissions for your application via OAuth, include the automationhub.accounts:read scope.
Note: If you do not specify a value for the optional “limit” query parameter, the API request will by default return the initial 100 items.
The Get a single account request fetches a specific account in a project.
To configure the permissions for your application via OAuth, include the automationhub.accounts:read scope.
The Automate Postman collection is a set of preconfigured REST API requests that will make it easy for you to get started with the Contentstack APIs and try out our API requests through the popular Postman REST client.
To use the Automate Postman collection you will need to have the Postman. You can either download the Desktop app or use Postman for Web.
Note: If you have already installed Postman for your device, go to the Download Latest Postman Collection for Automate section.
Postman is available for Windows (x32), Windows (x64), Mac (Intel Chip / Apple Chip), and Linux environments.
Once you have installed Postman on your device, click the Run in Postman button to start working with the Automate Management API endpoints for Contentstack.
Note: The Automate Postman collection does not support the now deprecated Postman Chrome extension. Make sure you have installed the latest version of the Postman desktop app.
This opens the Fork collection into your workspace modal from where you can proceed to download/work with the Automate Postman collection in the following three ways:
Let’s look at each of the above methods in detail.
This option allows you to just view (and not try out) the API requests of the Postman collection.
Perform the following steps to view the Automate Management API Postman collection:

A new tab opens up in your browser where you should see the latest collection preloaded in the left navigation.
Note: If you want to try out the API requests, you can either import a copy of the collection or fork the collection.
This option allows you to import a copy of the collection into your workspace.
To import the Automate Management API collection, perform the following steps:


You will see a copy of the latest Postman collection in the left navigation panel.
This option allows you to fork, or create a copy of the collection, and perform changes to the collection without affecting the original.
To fork the Automate Management API collection, perform the following steps:


Under Notifications, check Watch original collection to get notified of any changes that are made to the original collection.

Once done, click Fork Collection to fork the Postman collection into your selected workspace.
We have also hosted our Postman collection on GitHub. You can follow the steps mentioned in the Readme file to download and start using it.
You can also choose to watch the latest Postman collection to get notifications of new releases or updates.
To do so, click the following Watch button and select Watching.
When you download and install the latest version of the Automate Management API Postman Collection, you also download and import the respective environment along with the environment variables.
Once your Environment is imported, next you need to set your Automate account specific values.
Note: As these environment variables are referenced across multiple API requests, once you set the variables, it becomes a lot more convenient to make repeated use of the Postman Collection.
Some of the important variables that you need to set are as follows:
| Environment Variable | Value |
|---|---|
| base_url | automations-api.contentstack.com |
| organization_uid | your_organization_uid |
| authtoken | your_authtoken |
Note: The Automate Postman Collection will require a valid Authtoken to make API calls. Check out the Authentication section for more details.
If you want to add your own environment variables, you can follow the procedure in the next section.
To add any new environment variables for your Postman collection, perform the following steps:



With every new API request added, we update our environment file. So, to get the latest environment variables, you need to download the collection along with the updated environment file again, compare your existing environment with the latest environment, identify and add the new variables to your existing environment.
Next, let’s see how you can run API Requests from your Automate Postman collection using your environment.
With the Automate Postman Collection loaded into the Postman app (on the left panel) and the environment created, you can now make API requests to the Automate API via Postman.
To make an API request, perform the following steps:
Note: If you want to make changes to your parameters or want to add parameters of your own, you can do it here.

The API call should return with a response under the Body tab in the bottom half of the screen.

We strongly advise against storing your Organization UID and authtokens in your collection permanently. If you or someone else shares the collection by mistake, other users will be able to export it along with these keys.
We recommend that you provide your Automate account-specific Organization UID and tokens in your environment or directly to the sample requests.
For users who use authtoken to authenticate their calls, when you make the Log in to your account API Request, your authtoken will be saved in cookies.
If you want to prevent this action, perform the steps given below:
This will allow you to access cookies of this domain in scripts programmatically.
Note: To avoid this situation, we recommend you to use the Organization UID along with the Authtoken to make valid Automate Management API requests. For more information, refer to Authentication.
We keep our Postman Collection updated. To get the latest version of our Postman Collection, all you need to do is to download the Postman Collection along with the updated environment again and you are good to go.
You can also choose to watch for the latest Postman Collection updates on our GitHub repository and get notifications of new releases or updates to the repository. The GitHub Readme doc will help you with the steps that you need to follow.