---
title: "Initiate a content management job"
description: "Starts a content management job that creates, updates, or deletes entities in Mindtickle Content Center."
contentType: "api-reference"
url: "https://developer.mindtickle.com/docs/content-center/jobs/initiate-a-content-management-job/"
---

## Prerequisites

1. [Authentication and setup](/docs/getting-started/authentication-and-setup/): A valid access token.
2. [Create an integration](/docs/content-center/integration/create-an-integration/): The integration ID and root folder ID the job runs against.
3. [Get an upload URL](/docs/content-center/files/get-an-upload-url/): The upload key of each file the job syncs.

## Endpoint

```http
POST /services/data/v1.0/content/management
```

Base URL: the standard REST host for your region. See [Base URLs](/docs/getting-started/authentication-and-setup/#base-urls).

Headers: `Authorization: Bearer ACCESS_TOKEN`, `Content-Type: application/json`.

## Request

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `request_meta` | object | Required | Identifies the integration the job runs against. See [RequestMeta object](/docs/content-center/#requestmeta-object). |
| `request_meta.integration_id` | string | Required | ID of the integration created earlier. |
| `request_meta.root_folder_id` | string | Required | ID of the root folder created in Content Center. |
| `entities` | array | Required | The files or folders to manage. See [Entity object reference](/docs/content-center/#entity-object-reference). |

The example below is for `UPSERT`. Before submitting a `DELETE` job, confirm its required fields with [Mindtickle Support](mailto:support@mindtickle.com), including whether to include `upload_key` and `metadata`.

### Request example

```json
{
  "request_meta": {
    "integration_id": "AEM Content-789012",
    "root_folder_id": "123456"
  },
  "entities": [
    {
      "id": "doc-001",
      "operation": "UPSERT",
      "upload_key": "1234/56789_example.pdf",
      "parent_folder_id": "folder-123456",
      "metadata": {
        "file_name": "example.pdf",
        "source_path": "https://source-system.example.com/brochures/Q1-2025.pdf",
        "additional_properties": {
          "size": 1024000,
          "created_at": "2023-05-15T10:30:00Z",
          "author": "John Smith"
        }
      }
    }
  ]
}
```

## Response

| Field | Type | Description |
| --- | --- | --- |
| `execution_id` | string | Unique identifier used to track the content management job. |
| `created_at` | string | Time the job was created. |
| `entities` | object | The entities in the job, keyed by the `id` sent in the request. |
| `entities.ENTITY_ID.external_id` | string | External identifier for the entity. |
| `entities.ENTITY_ID.file_id` | string | Internal file identifier. |

### Response example

```json
{
  "execution_id": "12345678-1234-4123-8123-123456789101_1709278427",
  "created_at": "2025-03-11T12:00:00Z",
  "entities": {
    "doc-001": {
      "external_id": "brochure-2025-Q1",
      "file_id": "file-123456"
    }
  }
}
```

## Notes

- **Async processing:** The job runs asynchronously, and the response returns an `execution_id` you use to track it.
- **Operations:** `UPSERT` creates the file if it does not exist and updates it if it does. `DELETE` deletes a file.
- **Batching:** You can include multiple operations in a single sync job. See [Usage examples](/docs/content-center/#usage-examples).

## Check status

Track the job with its `execution_id`. See [Check content management job status](/docs/content-center/jobs/check-content-management-job-status/).

```http
GET /services/data/v1.0/content/management/{execution_id}
```

## Related

- [Check content management job status](/docs/content-center/jobs/check-content-management-job-status/): Track the job with the execution ID returned here.
- [Get executions for an integration](/docs/content-center/integration/get-executions-for-an-integration/): Review all executions for the integration.
