---
schema_version: "1"
id: 969d605172ced7f8f0abf987ca178006b422663e8a6ca43e39b6bb72f96ad12a
title: Content Management Resources (Connect API)
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/marketing-cloud/mc-core/references/generated-api-specs/mc-next-cms-resources.md
canonical_url: https://developer.salesforce.com/docs/marketing/marketing-cloud-growth/references/mc-next-cms-resources
source_site: developer.salesforce.com
content_type: documentation
content_hash: 1a877b33bf5b394eaa36a244b29a7d162816af6ccc0d2fdf405ad0b7c28803af
products:
  - Marketing Cloud Next
  - Marketing Cloud
---
Content Management Resources (Connect API)

# Content Management Resources (Connect API)

Manage CMS channels, content variants, publishing, and search in the Salesforce Content Management System (CMS) by using the Connect API.

This table lists the use cases that REST API supports for CMS resources.

| Supported Use Case | HTTP Verb | URI |
| --- | --- | --- |
| [Publish content](/docs/marketing/marketing-cloud-growth/references/mc-next-cms-resources?meta=publishContent) | POST | /services/data/{apiVersion}/connect/cms/contents/publish |
| [Unpublish content](/docs/marketing/marketing-cloud-growth/references/mc-next-cms-resources?meta=unpublishContent) | POST | /services/data/{apiVersion}/connect/cms/contents/unpublish |
| [Update a content variant](/docs/marketing/marketing-cloud-growth/references/mc-next-cms-resources?meta=updateVariant) | PUT | /services/data/{apiVersion}/connect/cms/contents/variants/{variantId} |
| [Delete a content variant](/docs/marketing/marketing-cloud-growth/references/mc-next-cms-resources?meta=deleteVariant) | DELETE | /services/data/{apiVersion}/connect/cms/contents/variants/{variantId} |
| [Search content](/docs/marketing/marketing-cloud-growth/references/mc-next-cms-resources?meta=searchContent) | GET | /services/data/{apiVersion}/connect/cms/items/search |

**Version:** v68.0

## Servers

*   `https://{subdomain}.my.salesforce.com`
    *   `subdomain (default (no default)) The unique API subdomain for your Salesforce org.`

## Tags

### CMS Channels

Operations for managing CMS channels.

### CMS Contents Publish

Operations for publishing CMS content.

### CMS Contents Variants

Operations for managing CMS content variants.

### CMS Search

Operations for searching CMS content.

## Operations

### POST publishContent

`POST /services/data/{apiVersion}/connect/cms/contents/publish`

Operation ID: `publishContent`. Tags: CMS Contents Publish.

Publish managed content. Either `contentIds` or `variantIds` is required.

#### Parameters

*   `apiVersion` (path, string, required) The API version.  
    Default: `v68.0`.

#### Request body (required)

Media type: `application/json`. Schema: `ManagedContentPublishRequest`.

_Example_

```
{
  "description": "My description text.",
  "contentIds": [
    "20YRM0000000CPi2AM"
  ]
}
```

#### Responses

*   **200** Content published successfully.
    
    Media type: `application/json`. Schema: `ManagedContentPublishResponse`.
    
*   **400** Invalid request body or parameters.
    
    Media type: `application/json`. Schema: `Error`.
    
*   **401** Authentication credentials are missing or invalid.
    
    Media type: `application/json`. Schema: `Error`.
    

### POST unpublishContent

`POST /services/data/{apiVersion}/connect/cms/contents/unpublish`

Operation ID: `unpublishContent`. Tags: CMS Contents Publish.

Unpublish managed content to revert it back to draft status. Either `contentIds` or `variantIds` is required.

#### Parameters

*   `apiVersion` (path, string, required) The API version.  
    Default: `v68.0`.

#### Request body (required)

Media type: `application/json`. Schema: `ManagedContentUnpublishRequest`.

_Example_

```
{
  "description": "Unpublish content using the API",
  "contentIds": [
    "20YRM0000000CPi2AM"
  ]
}
```

#### Responses

*   **200** Content unpublished successfully.
    
    Media type: `application/json`. Schema: `ManagedContentUnpublishResponse`.
    
*   **400** Invalid request body or parameters.
    
    Media type: `application/json`. Schema: `Error`.
    
*   **401** Authentication credentials are missing or invalid.
    
    Media type: `application/json`. Schema: `Error`.
    

### PUT updateVariant

`PUT /services/data/{apiVersion}/connect/cms/contents/variants/{variantId}`

Operation ID: `updateVariant`. Tags: CMS Contents Variants.

Update a managed content variant. To upload binary files, send the request as `multipart/form-data`.

#### Parameters

*   `apiVersion` (path, string, required) The API version.  
    Default: `v68.0`.
*   `variantId` (path, string, required) ID of the managed content variant.

#### Request body (required)

Media type: `application/json`. Schema: `ManagedContentVariantUpdateRequest`.

_Example_

```
{
  "title": "Title of Document",
  "urlName": "test-url",
  "contentBody": {
    "excerpt": "New content",
    "body": "<p>This is my new content body.</p>"
  }
}
```

#### Responses

*   **200** Content variant updated successfully.
    
    Media type: `application/json`. Schema: `ManagedContentVariantResponse`.
    
*   **400** Invalid request body or parameters.
    
    Media type: `application/json`. Schema: `Error`.
    
*   **401** Authentication credentials are missing or invalid.
    
    Media type: `application/json`. Schema: `Error`.
    
*   **404** The requested resource was not found.
    
    Media type: `application/json`. Schema: `Error`.
    

### DELETE deleteVariant

`DELETE /services/data/{apiVersion}/connect/cms/contents/variants/{variantId}`

Operation ID: `deleteVariant`. Tags: CMS Contents Variants.

Delete a managed content variant.

#### Parameters

*   `apiVersion` (path, string, required) The API version.  
    Default: `v68.0`.
*   `variantId` (path, string, required) ID of the managed content variant.

#### Responses

*   **204** Content variant deleted successfully.
*   **401** Authentication credentials are missing or invalid.
    
    Media type: `application/json`. Schema: `Error`.
    
*   **404** The requested resource was not found.
    
    Media type: `application/json`. Schema: `Error`.
    

### GET searchContent

`GET /services/data/{apiVersion}/connect/cms/items/search`

Operation ID: `searchContent`. Tags: CMS Search.

Search for managed content items, including variants, in spaces and folders.

#### Parameters

*   `apiVersion` (path, string, required) The API version.  
    Default: `v68.0`.
*   `contentSpaceOrFolderIds` (query, string, required) The IDs of managed content spaces and folders to search. One content space is required in a search, and one folder in that content space is allowed.
*   `queryTerm` (query, string, required) Space-separated list of up to 50 search terms. Each term must contain at least two non-wildcard characters.
*   `contentTypeFQN` (query, string) Fully qualified name of the content type used to restrict the search.
*   `languages` (query, array of string, style: form, explode: false) A list of up to 10 languages to search. Alternatively, specify `All` to search across all languages. Specify each language as a language code, such as `en`, or a locale, such as `en_US`. If unspecified, the default language for the workspace is used.
*   `page` (query, integer) Number of the page to return.
*   `pageSize` (query, integer) Number of items per page. Valid values are from 1 through 250. The default value is 25.  
    Default: `25`. Minimum: 1. Maximum: 250.
*   `scope` (query, string) Text search scope. Possible values are `All` or `TitleOnly`. The default value is `All`. If you specify a folder ID, you can't restrict the search scope.  
    Allowed values: `All`, `TitleOnly`. Default: `All`.

#### Responses

*   **200** Paginated collection of search result items.
    
    Media type: `application/json`. Schema: `ManagedContentSearchResultsResponse`.
    
*   **400** Invalid request body or parameters.
    
    Media type: `application/json`. Schema: `Error`.
    
*   **401** Authentication credentials are missing or invalid.
    
    Media type: `application/json`. Schema: `Error`.
    

## Schemas

### ManagedContentPublishRequest

*   `contentIds` (_array of string_) IDs of content to publish. All variants of the content are published. Required if `variantIds` is not specified.
*   `contextContentSpaceId` (_string_) ID of the context workspace. If specified, content from other workspaces is published if it is shared to the specified workspace. If unspecified, the context workspace is derived from the content's origin workspace. All content in the request must belong to the same origin workspace.
*   `description` (_string_) Description for the publish action.
*   `includeContentReferences` (_boolean_) Specifies whether to include content references (`true`) or not (`false`).
*   `variantIds` (_array of string_) IDs of variants to publish. All variants must be from the same content space. Required if `contentIds` is not specified.

### ManagedContentPublishResponse

*   `deploymentId` (_string_) ID of the managed content deployment.
*   `description` (_string_) Publish description.
*   `publishDate` (_string (date-time)_) Date and time when the content was published.

### Error

*   `error` (_string_)
*   `message` (_string_)

### ManagedContentUnpublishRequest

*   `contentIds` (_array of string_) The IDs of the content items to unpublish. All variants of the content are unpublished. Required if `variantIds` is not specified.
*   `contextContentSpaceId` (_string_) ID of the context workspace. If specified, content from other workspaces is unpublished if it is shared to the specified workspace. If unspecified, the context workspace is derived from the content's origin workspace. All content in the request must belong to the same origin workspace.
*   `description` (_string_) Description for the unpublish action.
*   `includeContentReferences` (_boolean_) Specifies whether to include content references (`true`) or not (`false`).
*   `variantIds` (_array of string_) The IDs of the content variants to unpublish. All variants must be from the same content space. Required if `contentIds` is not specified.

### ManagedContentUnpublishResponse

*   `deploymentId` (_string_) ID of the managed content deployment.
*   `description` (_string_) Unpublish description.
*   `unpublishDate` (_string (date-time)_) Date and time when the content was unpublished.

### ManagedContentVariantUpdateRequest

*   `apiName` (_string_) API name of the managed content variant.
*   `contentBody` (_object_) Body of the managed content variant. The properties depend on the content type.
*   `title` (_string_) Title of the managed content variant.
*   `urlName` (_string_) URL name of the managed content variant within the org.

### ManagedContentVariantResponse

*   `apiName` (_string_) API name of the managed content variant.
*   `contentBody` (_object_) Body of the managed content variant.
*   `contentFqn` (_string_) Fully qualified name (FQN) of the managed content.
*   `contentKey` (_string_) Content key of the managed content variant.
*   `contentSpace` (_object_) Summary of the content space that contains the variant.
*   `contentType` (_object_) Summary of the content type of the variant.
*   `createdBy` (_object_) User who created the managed content variant.
*   `createdDate` (_string (date-time)_) Date when the managed content variant was created.
*   `externalId` (_string_) External ID of the managed content variant.
*   `folder` (_object_) Summary of the folder that contains the variant.
*   `isPublished` (_boolean_) Specifies whether the managed content variant is published (`true`) or not (`false`).
*   `language` (_string_) Language of the managed content variant.
*   `lastModifiedBy` (_object_) User who last modified the managed content variant.
*   `lastModifiedDate` (_string (date-time)_) Date when the managed content variant was last modified.
*   `managedContentId` (_string_) ID of the managed content that the variant belongs to.
*   `managedContentVariantId` (_string_) ID of the managed content variant.
*   `managedContentVersionId` (_string_) ID of the managed content version.
*   `status` (_object_) Information about the managed content variant's status in the authoring space.
*   `title` (_string_) Title of the managed content variant.
*   `urlName` (_string_) URL name of the managed content variant within the org.

### ManagedContentSearchResultsResponse

*   `count` (_integer_) Total count of search results.
*   `currentPageUri` (_string_) URI for the current page of search results.
*   `items` (_array of object_) List of search result items. Each item is either a folder or a content variant search result.
*   `nextPageUri` (_string_) URI for the next page of search results.

### ManagedContentChannelsResponse

*   `channels` (_array of ManagedContentChannelResponse_) List of managed content channels.
*   `currentPageUrl` (_string_) URL for the current page of results.
*   `nextPageUrl` (_string_) URL for the next page of results.
*   `previousPageUrl` (_string_) URL for the previous page of results.
*   `totalChannels` (_integer_) Total number of managed content channels.

### ManagedContentChannelCreateRequest

*   `cacheControlMaxAge` (_integer (int64)_) HTTP cache control max age response header for content delivered from the channel, in seconds.
*   `domain` (_string_) ID or name of the domain assigned to the public channel.
*   `isDedicatedContentDelivery` (_boolean_) Specifies whether the channel has off-core dedicated content delivery enabled (`true`) or not (`false`). Orgs hosted on Hyperforce use off-core dedicated content delivery to deliver content in public channels with high performance and low latency.
*   `isDomainLocked` (_boolean_) Specifies whether the domain is locked and can't be changed (`true`) or not (`false`).
*   `isSearchable` (_boolean_) Specifies whether the text contents of the channel are searchable (`true`) or not (`false`).
*   `mediaCacheControlMaxAge` (_integer (int64)_) HTTP cache control max age response header for media delivered from the channel, in seconds.
*   `name` (_string_, required) Name of the managed content channel.
*   `targetId` (_string_) ID of the target associated with the managed content channel. Required for all channel types except `PublicUnauthenticated`.
*   `type` (_string_, required)
    
    Type of managed content channel. Possible values are:
    
    *   `CloudToCloud` — Cloud-to-Cloud integrated channel.
    *   `Community` — Experience Cloud site channel.
    *   `ConnectedApp` — Channel served by a connected app.
    *   `PublicUnauthenticated` — Public channel. All published content is publicly available.
    *   `UserPermission` — Channel backed by a system permission. All published content is available only to users with the permission.
    
      
    Allowed values: `CloudToCloud`, `Community`, `ConnectedApp`, `PublicUnauthenticated`, `UserPermission`.

### ManagedContentChannelUpdateRequest

*   `cacheControlMaxAge` (_integer (int64)_) HTTP cache control max age response header for content delivered from the channel, in seconds.
*   `domain` (_string_) ID or name of the domain assigned to the public channel.
*   `isDedicatedContentDelivery` (_boolean_) Specifies whether the channel has off-core dedicated content delivery enabled (`true`) or not (`false`). Orgs hosted on Hyperforce use off-core dedicated content delivery to deliver content in public channels with high performance and low latency.
*   `isDomainLocked` (_boolean_) Specifies whether the domain is locked and can't be changed (`true`) or not (`false`).
*   `isSearchable` (_boolean_) Specifies whether the text contents of the channel are searchable (`true`) or not (`false`).
*   `mediaCacheControlMaxAge` (_integer (int64)_) HTTP cache control max age response header for media delivered from the channel, in seconds.
*   `name` (_string_, required) Name of the managed content channel.
*   `targetId` (_string_) ID of the target associated with the managed content channel. Required for all channel types except `PublicUnauthenticated`.

### ManagedContentChannelResponse

*   `cacheControlMaxAge` (_integer (int64)_) HTTP cache control max age response header for content delivered from the channel, in seconds.
*   `domain` (_string_) ID or name of the domain assigned to the channel.
*   `domainName` (_string_) Name of the domain assigned to the channel.
*   `id` (_string_) ID of the managed content channel.
*   `isDedicatedContentDelivery` (_boolean_) Specifies whether the channel has off-core dedicated content delivery enabled (`true`) or not (`false`).
*   `isDomainLocked` (_boolean_) Specifies whether the domain is locked and can't be changed (`true`) or not (`false`).
*   `isSearchable` (_boolean_) Specifies whether the text contents of the channel are searchable (`true`) or not (`false`).
*   `managedContentChannelDomain` (_object_) Domain associated with the channel.
*   `mediaCacheControlMaxAge` (_integer (int64)_) HTTP cache control max age response header for media delivered from the channel, in seconds.
*   `name` (_string_) Name of the managed content channel.
*   `targetId` (_string_) ID of the target associated with the channel.
*   `type` (_string_)
    
    Type of managed content channel. Possible values are:
    
    *   `CloudToCloud` — Cloud-to-Cloud integrated channel.
    *   `Community` — Experience Cloud site channel.
    *   `ConnectedApp` — Channel served by a connected app.
    *   `PublicUnauthenticated` — Public channel. All published content is publicly available.
    *   `UserPermission` — Channel backed by a system permission. All published content is available only to users with the permission.
    
      
    Allowed values: `CloudToCloud`, `Community`, `ConnectedApp`, `PublicUnauthenticated`, `UserPermission`.

### ManagedContentVariantCreateRequest

*   `managedContentKeyOrId` (_string_, required) Managed content key or ID of the content to associate the new variant with.
*   `language` (_string_, required) Language of the managed content variant.
*   `title` (_string_) Title of the managed content variant.
*   `urlName` (_string_) URL name of the managed content variant within the org.
*   `contentBody` (_object_, required) Body of the managed content variant. The properties depend on the content type.