---
schema_version: "1"
id: 2e1a88445440445e845337a6b5ea681aeb26b6da01ff81979f3720c3b70e0dbe
title: Assets
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/marketing-cloud/references/generated-api-specs/mc_rest_assets.md
canonical_url: https://developer.salesforce.com/docs/marketing/marketing-cloud/references/mc_rest_assets
source_site: developer.salesforce.com
content_type: documentation
content_hash: 3e6ca006d16aeb3097e5118aaa83f39ff90b4f36028311d8076f5f021d507300
products:
  - Marketing Cloud Engagement APIs and Programmatic Languages
  - Marketing Cloud
---
Assets

# Assets

Manage Content Builder assets and categories.

This table lists the use cases that the API supports.

| Supported Use Case | HTTP Verb | Endpoint |
| --- | --- | --- |
| [Get assets by simple filter](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getAssetsSimpleQuery) | GET | /asset/v1/content/assets |
| [Create asset](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=createAsset) | POST | /asset/v1/content/assets |
| [Get assets by advanced query](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getAssetsAdvancedQuery) | GET | /asset/v1/content/assets/query |
| [Get salutations](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getSalutations) | GET | /asset/v1/content/assets/salutations |
| [Get asset by ID](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getAsset) | GET | /asset/v1/content/assets/{id} |
| [Update asset](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=updateAsset) | PUT | /asset/v1/content/assets/{id} |
| [Patch asset](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=patchAsset) | PATCH | /asset/v1/content/assets/{id} |
| [Delete asset](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=deleteAsset) | DELETE | /asset/v1/content/assets/{id} |
| [Get file](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getFile) | GET | /asset/v1/content/assets/{id}/file |
| [Get header and footer](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getHeaderAndFooter) | GET | /asset/v1/content/assets/{id}/headerandfooter |
| [Archive asset](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=archiveAsset) | POST | /asset/v1/content/assets/{id}/archive |
| [Restore asset](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=restoreAsset) | POST | /asset/v1/content/assets/{id}/restore |
| [Create category](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=createCategory) | POST | /asset/v1/content/categories |
| [Get categories](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getCategories) | GET | /asset/v1/content/categories |
| [Get category by ID](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getCategory) | GET | /asset/v1/content/categories/{id} |
| [Update category](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=updateCategory) | PUT | /asset/v1/content/categories/{id} |
| [Delete category](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=deleteCategory) | DELETE | /asset/v1/content/categories/{id} |
| [Get channel view](/docs/marketing/marketing-cloud/references/mc_rest_assets?meta=getChannelView) | GET | /asset/v1/content/assets/{id}/channelviews/{viewname} |

**Version:** 1

## Servers

*   `https://{subdomain}.rest.marketingcloudapis.com`
    *   `subdomain (default N/A) The unique API subdomain for your Marketing Cloud Engagement tenant.`

## Operations

### GET Get assets by simple filter

`GET /asset/v1/content/assets`

Operation ID: `getAssetsSimpleQuery`.

Retrieve a collection of assets by applying basic filters and sorting rules.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `$page` (query, integer) Page number to return from the paged results. Start with 1 and continue until you get zero results. Typically provided along with the $pagesize parameter.
*   `$pagesize` (query, integer) Number of results per page to return. Typically provided along with the $page parameter.
*   `$orderBy` (query, string) Determines which property to use for sorting, and also determines the direction in which to sort the data. If you don’t provide the `$orderBy` parameter, results are sorted by ID in ascending order. For assets, use asset property name. For categories, use a property name, such as `name asc`.
*   `$filter` (query, string) Filter by property using a simple operator and value. For GET /assets, filter by an asset's property. For GET /categories, filter by ParentId. ParentId is the only allowed field.
*   `$fields` (query, string) Comma-delimited string of asset properties used to reduce the size of your results to only the properties you need. Used only for GET /asset/v1/content/assets.

#### Responses

*   **200** Indicates that the assets were retrieved successfully.
    
    Media type: `application/json`. Schema: `AssetCollectionResponse`.
    
    _Example_
    
    ```
    {
      "count": 1,
      "page": 1,
      "pageSize": 25,
      "links": {},
      "items": [
        {
          "id": 999999,
          "customerKey": "e433dd9b-82a9-44cc-a3e3-66b8ed60550a",
          "assetType": {
            "id": 28,
            "name": "png",
            "displayName": "Image"
          },
          "fileProperties": {
            "extension": "png",
            "fileSize": 6578,
            "fileCreatedDate": "2026-02-16T15:16:26.8284748-08:00",
            "width": 500,
            "height": 107,
            "publishedURL": "https://image.s4.sfmc-content.com/lib/ef3785739738647c7a77/m/1/NTOLogoHeader_small.png"
          },
          "name": "NTOLogoHeader_small",
          "description": "Northern Trail Logo Header Small",
          "modelVersion": 2
        }
      ]
    }
    ```
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### POST Create asset

`POST /asset/v1/content/assets`

Operation ID: `createAsset`.

Creates a new asset.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    

#### Request body (required)

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

#### Responses

*   **200** The asset was created successfully.
    
    Media type: `application/json`. Schema: `AssetResponseBody`.
    
    _Example_
    
    ```
    {
      "id": 992589,
      "customerKey": "e433dd9b-82a9-44cc-a3e3-66b8ed60550a",
      "objectID": "b5b90b6b-dd88-4d9e-8cbd-82a0411a1114",
      "assetType": {
        "id": 28,
        "name": "png",
        "displayName": "Image"
      },
      "fileProperties": {
        "fileName": "NTOLogoHeader_small.png",
        "extension": "png",
        "fileSize": 6578,
        "fileCreatedDate": "2026-02-16T15:16:26.8284748-08:00",
        "width": 500,
        "height": 107,
        "publishedURL": "https://image.s4.sfmc-content.com/lib/ef3785739738647c7a77/m/1/NTOLogoHeader_small.png"
      },
      "name": "NTOLogoHeader_small",
      "description": "Northern Trail Logo Header Small",
      "owner": {
        "id": 8888888,
        "email": "",
        "name": "API user",
        "userId": "5555555"
      },
      "createdDate": "2026-02-16T15:16:26.8284748-08:00",
      "createdBy": {
        "id": 8888888,
        "email": "",
        "name": "API user",
        "userId": "5555555"
      },
      "modifiedDate": "2026-02-16T15:16:26.8284748-08:00",
      "modifiedBy": {
        "id": 8888888,
        "email": "",
        "name": "API user",
        "userId": "5555555"
      },
      "enterpriseId": 1111111,
      "memberId": 987654,
      "status": {
        "id": 2,
        "name": "Published"
      },
      "category": {
        "id": 999999,
        "name": "Content Builder",
        "parentId": 0
      },
      "availableViews": [],
      "modelVersion": 2
    }
    ```
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### POST Get assets by advanced query

`POST /asset/v1/content/assets/query`

Operation ID: `getAssetsAdvancedQuery`.

Use an advanced query to retrieve a collection of assets.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    

#### Request body (required)

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

#### Responses

*   **200** Indicates that the assets were retrieved successfully.
    
    Media type: `application/json`. Schema: `AssetCollectionResponse`.
    
    _Example: same as GET /asset/v1/content/assets 200 response._
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### GET Get default salutations

`GET /asset/v1/content/assets/salutations`

Operation ID: `getSalutations`.

Retrieves the default header and footer for an account.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    

#### Responses

*   **200** A salutation object.
    
    Media type: `application/json`. Schema: `Salutation`.
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    

### GET Get asset by ID

`GET /asset/v1/content/assets/{id}`

Operation ID: `getAsset`.

Retrieves an asset by its ID.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.

#### Responses

*   **200** The asset was created successfully.
    
    Media type: `application/json`. Schema: `AssetResponseBody`.
    
    _Example: same as POST /asset/v1/content/assets 200 response._
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### PUT Update an asset

`PUT /asset/v1/content/assets/{id}`

Operation ID: `updateAsset`.

Modify the properties of an existing asset.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.

#### Request body (required)

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

#### Responses

*   **200** The asset was created successfully.
    
    Media type: `application/json`. Schema: `AssetResponseBody`.
    
    _Example: same as POST /asset/v1/content/assets 200 response._
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### DELETE Delete an asset

`DELETE /asset/v1/content/assets/{id}`

Operation ID: `deleteAsset`.

Deletes an asset.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.
*   `isCDNDelete` (query, integer) Permanently deletes the file and its URL in the Content Delivery Network (CDN) when the associated file is deleted in Content Builder. A value of 1 permanently deletes the file. If isCDNDelete is unspecified or if the value is 0, it doesn't permanently delete the file.

#### Responses

*   **200** Indicates that the asset was deleted successfully.
    
    Media type: `text/plain`. Schema: `string`.
    
    Type: `string`.
    
    Example: `OK`.
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### PATCH Patch an asset

`PATCH /asset/v1/content/assets/{id}`

Operation ID: `patchAsset`.

Modify the properties of an asset deleted in the last 30 days.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.

#### Request body

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

#### Responses

*   **200** The asset was created successfully.
    
    Media type: `application/json`. Schema: `AssetResponseBody`.
    
    _Example: same as POST /asset/v1/content/assets 200 response._
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### GET Get asset file

`GET /asset/v1/content/assets/{id}/file`

Operation ID: `getFile`.

Gets the binary file for an asset.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.

#### Responses

*   **200** A Base64-encoded string of the file.
    
    Media type: `application/json`. Schema: `string`.
    
    Type: `string`.
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### GET Get email salutations

`GET /asset/v1/content/assets/{id}/salutations`

Operation ID: `getHeaderAndFooter`.

Retrieves the header and footer of an email asset by specifying the asset ID.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.

#### Responses

*   **200** Successful response.
    
    Media type: `application/json`. Schema: `Salutation`.
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    

### PATCH Archive an asset

`PATCH /asset/v1/content/assets/{id}/archive`

Operation ID: `archiveAsset`.

Archive an asset. When you archive an asset, Marketing Cloud Engagement removes it from availability for queries, triggered sends, and journeys, as if the asset were deleted.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.

#### Responses

*   **200** OK
    
    Media type: `text/plain`. Schema: `string`.
    
    Type: `string`.
    
    Example: `OK`.
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### PATCH Restore asset

`PATCH /asset/v1/content/assets/{id}/restore`

Operation ID: `restoreAsset`.

Restore an asset hidden by a prior archive operation, and make it available again for queries, triggered sends, journeys, and other operations.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.

#### Responses

*   **200** OK
    
    Media type: `text/plain`. Schema: `string`.
    
    Type: `string`.
    
    Example: `OK`.
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### GET Get channel view

`GET /asset/v1/content/assets/{id}/channelviews/{viewName}`

Operation ID: `getChannelView`.

Returns the compiled HTML for a requested channel view of an asset.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `id` (path, integer, required) The ID of the asset.
*   `viewName` (path, string, required) The name of the asset view to retrieve.
*   `thumbnail` (query, boolean) Set to true to return a base64-encoded thumbnail image.
*   `includeHeaderFooter` (query, boolean) If asset has HTML or text views, set to true to include the message header and footer.
*   `includeDesignContent` (query, boolean) Set to true to include design content in the thumbnail image.

#### Responses

*   **200** Successful response.
    
    Media type: `application/json`. Schema: `ChannelViewResponse`.
    
*   **400** Indicates that the request contained information that the API couldn’t process. If you receive a 400 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "message": "Insufficient Privileges to complete this action.",
      "errorcode": 20002,
      "documentation": ""
    }
    ```
    

### GET Get categories

`GET /asset/v1/content/categories`

Operation ID: `getCategories`.

Returns one or more Content Builder categories that are owned by or reside in your MID. To request categories that have been shared with your MID, add a scope parameter to the call.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `$filter` (query, string) Filter by property using a simple operator and value. For GET /assets, filter by an asset's property. For GET /categories, filter by ParentId. ParentId is the only allowed field.
*   `$page` (query, integer) Page number to return from the paged results. Start with 1 and continue until you get zero results. Typically provided along with the $pagesize parameter.
*   `$pagesize` (query, integer) Number of results per page to return. Typically provided along with the $page parameter.
*   `$orderBy` (query, string) Determines which property to use for sorting, and also determines the direction in which to sort the data. If you don’t provide the `$orderBy` parameter, results are sorted by ID in ascending order. For assets, use asset property name. For categories, use a property name, such as `name asc`.
*   `scope` (query, string) Determines which MIDs the query results come from. To return categories that reside in your MID, either don't add the scope parameter or call the endpoint like this .../categories?scope=Ours. To return categories that are shared to your MID, or that you’ve shared with other MIDs, call the endpoint like this `.../categories?scope=Shared`. To return all categories visible to your MID, call the endpoint like this `.../categories?scope=Ours,Shared`.

#### Responses

*   **200** Indicates that the categories were retrieved successfully.
    
    Media type: `application/json`. Schema: `CategoryCollectionResponse`.
    
    _Example_
    
    ```
    {
      "count": 1,
      "page": 1,
      "pageSize": 25,
      "links": {},
      "items": [
        {
          "categoryType": "asset",
          "description": "A description of the category.",
          "enterpriseId": 1111111,
          "id": 999999,
          "memberId": 987654,
          "name": "My Folder",
          "parentId": 654321,
          "sharingProperties": {
            "sharedWith": [
              2222222
            ],
            "sharingType": "view"
          }
        }
      ]
    }
    ```
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **500** Indicates that the API encountered an error when processing the request. If you receive a 500 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 500,
      "message": "Internal Server Error"
    }
    ```
    

### POST Create category

`POST /asset/v1/content/categories`

Operation ID: `createCategory`.

Creates a category in Content Builder. A category is a folder that contains assets.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    

#### Request body (required)

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

#### Responses

*   **200** Indicates that the category was retrieved, created, or updated successfully.
    
    Media type: `application/json`. Schema: `CategoryUpdateResponse`.
    
    _Example_
    
    ```
    {
      "categoryType": "asset",
      "description": "A description of the category.",
      "enterpriseId": 1111111,
      "id": 999999,
      "memberId": 987654,
      "name": "My Folder",
      "parentId": 654321,
      "sharingProperties": {
        "sharedWith": [
          2222222
        ],
        "sharingType": "view"
      }
    }
    ```
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **500** Indicates that the API encountered an error when processing the request. If you receive a 500 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 500,
      "message": "Internal Server Error"
    }
    ```
    

### GET Get category by ID

`GET /asset/v1/content/categories/{categoryId}`

Operation ID: `getCategory`.

Returns one Content Builder category by ID.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `categoryId` (path, integer, required) The ID of the category.

#### Responses

*   **200** Indicates that the category was retrieved, created, or updated successfully.
    
    Media type: `application/json`. Schema: `CategoryUpdateResponse`.
    
    _Example: same as POST /asset/v1/content/categories 200 response._
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **404** This response indicates that the URI in your request couldn’t be reached. If you receive a 404 response, verify that the request contains the correct endpoint URI.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 404,
      "message": "Not Found"
    }
    ```
    
*   **500** Indicates that the API encountered an error when processing the request. If you receive a 500 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 500,
      "message": "Internal Server Error"
    }
    ```
    

### PUT Update category

`PUT /asset/v1/content/categories/{categoryId}`

Operation ID: `updateCategory`.

Updates a Content Builder category.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `categoryId` (path, integer, required) The ID of the category.

#### Request body (required)

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

#### Responses

*   **200** Indicates that the category was retrieved, created, or updated successfully.
    
    Media type: `application/json`. Schema: `CategoryUpdateResponse`.
    
    _Example: same as POST /asset/v1/content/categories 200 response._
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **404** This response indicates that the URI in your request couldn’t be reached. If you receive a 404 response, verify that the request contains the correct endpoint URI.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 404,
      "message": "Not Found"
    }
    ```
    
*   **500** Indicates that the API encountered an error when processing the request. If you receive a 500 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 500,
      "message": "Internal Server Error"
    }
    ```
    

### DELETE Delete category

`DELETE /asset/v1/content/categories/{categoryId}`

Operation ID: `deleteCategory`.

Deletes a Content Builder category.

#### Parameters

*   `Authorization` (header, string, required) A unique, time-limited token that you can use to issue requests to the Marketing Cloud Engagement API. Replace `YOUR_ACCESS_TOKEN` with your Marketing Cloud Engagement API authentication token.
    
    _Example_
    
    ```
    Bearer YOUR_ACCESS_TOKEN
    ```
    
*   `categoryId` (path, integer, required) The ID of the category.

#### Responses

*   **200** Indicates that the category was deleted.
    
    Media type: `text/plain`. Schema: `string`.
    
    Type: `string`.
    
    Example: `OK`.
    
*   **403** This response indicates that the API accepted your request but couldn’t authorize it. If you receive a 403 response, make sure that you have the necessary permission scope for the operation. You can modify permission scopes on the Installed Apps page in Marketing Cloud Engagement Setup.
    
    Media type: `application/json`. Schema: `ApiError`.
    
*   **404** This response indicates that the URI in your request couldn’t be reached. If you receive a 404 response, verify that the request contains the correct endpoint URI.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 404,
      "message": "Not Found"
    }
    ```
    
*   **500** Indicates that the API encountered an error when processing the request. If you receive a 500 response, verify that the request uses the correct syntax.
    
    Media type: `application/json`. Schema: `ApiError`.
    
    _Example_
    
    ```
    {
      "documentation": "https://developer.salesforce.com/docs/atlas.en-us.mc-apis.meta/mc-apis/error-handling.htm",
      "errorcode": 500,
      "message": "Internal Server Error"
    }
    ```
    

## Schemas

### AssetCollectionResponse

Success response for GET assets and POST assets/query.

*   `count` (_integer_) The number of assets that match the query or filter criteria.
*   `page` (_integer_) The page number of the results.
*   `pageSize` (_integer_) The number of assets returned per page.
*   `links` (_object_) A dictionary of links to the resources related to the asset collection.
*   `items` (_array of Asset_) An array of assets that match the query or filter criteria.

### ApiError

*   `message` (_string_) The error message.
*   `errorcode` (_number_) The error code. For some errors, this value is 0.
*   `documentation` (_string_) A link to documentation that describes how to handle the error.

### AssetRequestBody

A request body for creating or updating an asset.

*   `customerKey` (_string_) The user-defined key for the asset.
*   `contentType` (_string_) The type that the content attribute will be in.
*   `data` (_object_) Property bag containing the asset data.
*   `assetType` (_object_) The type of the asset saved as a key-value pair.
*   `version` (_number_) The version of the asset.
*   `locked` (_boolean_) Specifies if the asset can be modified or not.
*   `fileProperties` (_object_) Stores the different properties that this asset refers to if it’s a file type.
*   `name` (_string_) The user-defined name of the asset.
*   `description` (_string_) A description of the asset.
*   `category` (_object_) ID of the category the asset belongs to.
*   `tags` (_array of any_) List of tags associated with the asset.
*   `content` (_string_) The actual content of the asset.
*   `design` (_string_) Fallback for display when neither content nor supercontent are provided.
*   `superContent` (_string_) Content that supersedes content in terms of display.
*   `customFields` (_object_) Custom fields within an asset.
*   `views` (_object_) Views within an asset.
*   `blocks` (_object_) Blocks within the asset.
*   `minBlocks` (_number_) Minimum number of blocks within an asset.
*   `maxBlocks` (_number_) Maximum number of blocks within an asset.
*   `channels` (_object_) List of channels that are allowed to use this asset.
*   `allowedBlocks` (_array of any_) List of blocks that are allowed in the asset.
*   `slots` (_object_) Slots within the asset.
*   `businessUnitAvailability` (_object_) A dictionary of member IDs that have been granted access to the asset.
*   `sharingProperties` (_AssetSharingProperties_)
*   `template` (_object_) Template the asset follows.
*   `file` (_string_) Base64-encoded string of a file associated with an asset.
*   `generateFrom` (_string_) Tells the sending compiler what view to use for generating this view's content.

_Example_

```
{
  "name": "NorthernTrailLogo_Small",
  "assetType": {
    "name": "png",
    "id": 28
  },
  "fileProperties": {
    "fileName": "nto_logo_sm.png"
  },
  "file": "goK5CYIIAAAANVBORw0KG...SUhEUi="
}
```

### AssetResponseBody

An object that contains information about an asset.

*   `assetType` (_object_) An object that contains information about the type of the asset.
    *   `id` (_integer_) The ID of the asset type.
    *   `displayName` (_string_) The display name of the asset type.
    *   `name` (_string_) The name of the asset type.
*   `availableViews` (_array of any_) A list of views associated with the asset.
*   `category` (_object_) The ID of the category the asset belongs to.
*   `contentType` (_string_) The type of content.
*   `createdBy` (_object_) The user who created the asset.
*   `createdDate` (_string_) The date and time the asset was created.
*   `customerKey` (_string_) The customer-defined key for the asset.
*   `data` (_object_) An object that contains the asset data.
*   `description` (_string_) A description of the asset.
*   `enterpriseId` (_number_) The enterprise ID (EID) of the account that's associated with the asset.
*   `id` (_integer_) The system-generated ID of the asset.
*   `objectID` (_string_) The GUID of the asset.
*   `fileProperties` (_object_) Stores the properties that this asset refers to if it's a file type.
*   `memberId` (_number_) The member ID (MID) of the account that's associated with the asset.
*   `modifiedBy` (_object_) The user who last modified the asset.
*   `modelVersion` (_number_) The model version of the asset.
*   `modifiedDate` (_string_) The date and time the asset was last modified.
*   `name` (_string_) The user-defined name of the asset.
*   `owner` (_object_) The owner of the asset.
*   `status` (_object_) The status of the asset.
    *   `id` (_integer_) The ID of the status.
    *   `name` (_string_) The name of the status.
*   `tags` (_array of any_) A list of tags associated with the asset.

### AssetAdvancedQueryRequest

*   `fields` (_array of string_) An array that specifies the fields to return in the response. Each string in the array corresponds to an asset field.
*   `page` (_PageObject_)
*   `query` (_QueryObject_, required)
*   `sort` (_array of SortItem_) An object that specifies how to sort the items in the response. Each object specifies a method of sorting; you can sort on multiple properties.

_Example_

```
{
  "page": {
    "page": 1,
    "pageSize": 50
  },
  "query": {
    "leftOperand": {
      "property": "version",
      "simpleOperator": "equal",
      "value": 2
    },
    "logicalOperator": "AND",
    "rightOperand": {
      "property": "assetType.name",
      "simpleOperator": "equal",
      "value": "Template"
    }
  },
  "sort": [
    {
      "property": "id",
      "direction": "ASC"
    }
  ],
  "fields": [
    "enterpriseId",
    "memberId",
    "thumbnail",
    "category",
    "content",
    "data"
  ]
}
```

### Salutation

*   `htmlHeader` (_string_) The HTML header.
*   `htmlFooter` (_string_) The HTML footer.
*   `textHeader` (_string_) The text header.
*   `textFooter` (_string_) The text footer.

### ChannelViewResponse

*   `compiled` (_string_) A representation of the view.

### CategoryCollectionResponse

Success response for GET categories and POST categories/query.

*   `count` (_integer_) The number of categories that match the query or filter criteria.
*   `page` (_integer_) The page number of the results.
*   `pageSize` (_integer_) The number of categories returned per page.
*   `links` (_object_) A dictionary of links to the resources related to the category collection.
*   `items` (_array of Category_) An array of categories that match the query or filter criteria.

### CategoryRequestBody

*   `categoryType` (_string_) The type of category, either asset or asset-shared, which is automatically set to the categoryType of the parent category. If set to asset-shared, include the sharingProperties in the call.
*   `description` (_string_) A description of the category.
*   `enterpriseId` (_number_) The enterprise ID (EID) of the account that's associated with the category.
*   `memberId` (_number_) The member ID (MID) of the account that's associated with the category.
*   `name` (_string_, required) Required. The name of the category.
*   `parentId` (_number_, required) Required. The ID of the parent category.
*   `sharingProperties` (_object_) Allows you to share categories with one or more business units that have Content Builder Sharing enabled. See Sharing for additional information. Stores the MIDs of business units this category is shared with and the sharing type. Only included in the response if categoryType is `asset-shared`.
    *   `sharedWith` (_array of integer_) A list of up to 100 member IDs (MIDs) the category is shared with. To share the category with all business units in the enterprise, and if your account has access to Content Builder Across Enterprise Sharing, set this to 0. sharedWith can't contain 0 and other MIDs simultaneously. Since shared categories live in and are owned by the enterprise business unit, don't include the enterprise business unit in the sharedWith property.
    *   `sharingType` (_string_) Indicates the permission that you’re granting to the list of MIDs in sharedWith. The only possible value for categories is edit.  
        Allowed values: `edit`.

_Example_

```
{
  "name": "NTO Email Assets",
  "parentId": 987654
}
```

### CategoryUpdateResponse

Indicates that the category was updated successfully.

*   `categoryType` (_string_) The type of category. Possible values are `asset` and `asset-shared`.
*   `description` (_string_) A description of the category.
*   `enterpriseId` (_number_) The enterprise ID (EID) of the account that’s associated with the category.
*   `id` (_integer_) System-assigned ID for the category.
*   `memberId` (_number_) The member ID (MID) of the account that's associated with the category.
*   `name` (_string_) The name of the category.
*   `parentId` (_number_) The ID of the parent category.
*   `sharingProperties` (_object_) An object that contains the business units that the category is shared with, with and the sharing type for each business unit. This object is included in the response only if the value of categoryType is `asset-shared`.

### CategoryUpdateBody

*   `id` (_number_, required) Required. The unique ID of the category.
*   `name` (_string_, required) Required. The name of the category.
*   `parentId` (_number_, required) Required. The ID of the parent category.
*   `enterpriseId` (_number_) The enterprise ID (EID) associated with the category.
*   `categoryType` (_string_) The type of category. Possible values are asset and asset-shared.  
    Allowed values: `asset`, `asset-shared`.
*   `memberId` (_number_) The member ID (MID) of the account associated with the category.
*   `sharingProperties` (_object_) An object that contains the business units that the category is shared with, with and the sharing type for each business unit. This object is included in the response only if the value of categoryType is asset-shared.
    *   `sharedWith` (_array of integer_) A list of member IDs (MIDs) that the category is shared with.
    *   `sharingType` (_string_) Indicates the permission that you’re granting to the list of MIDs that the category is shared with. The only possible value is edit.  
        Allowed values: `edit`.
*   `description` (_string_) A description of the category.

_Example_

```
{
  "id": 345678,
  "name": "NTO Email Assets",
  "parentId": 987654,
  "categoryType": "asset",
  "memberId": 1111111,
  "enterpriseId": 2222222
}
```

### Asset

A single asset.

*   `allowedBlocks` (_array of any_) List of blocks that are allowed in the asset.
*   `assetType` (_object_) The type of the asset saved as a key-value pair.
*   `blocks` (_object_) Blocks within the asset.
*   `businessUnitAvailability` (_object_) A dictionary of member IDs that have been granted access to the asset.
*   `category` (_object_) ID of the category the asset belongs to.
*   `channels` (_object_) List of channels that are allowed to use this asset.
*   `content` (_string_) The actual content of the asset.
*   `contentType` (_string_) The type that the content attribute will be in.
*   `customFields` (_object_) Custom fields within an asset.
*   `customerKey` (_string_) A user-defined key for the asset.
*   `data` (_object_) Property bag containing the asset data.
*   `description` (_string_) Description of the asset, set by the client.
*   `design` (_string_) Fallback for display when neither content nor supercontent are provided.
*   `file` (_string_) Base64-encoded string of a file associated with an asset.
*   `fileProperties` (_object_) Stores the different properties that this asset refers to if it's a file type.
*   `generateFrom` (_string_) Tells the sending compiler what view to use for generating this view's content.
*   `locked` (_boolean_) Specifies if the asset can be modified or not.
*   `maxBlocks` (_number_) Maximum number of blocks within an asset.
*   `minBlocks` (_number_) Minimum number of blocks within an asset.
*   `modelVersion` (_number_) The model version of the asset.
*   `name` (_string_) Name of the asset, set by the client. 200 character maximum.
*   `sharingProperties` (_AssetSharingProperties_)
*   `slots` (_object_) Slots within the asset.
*   `superContent` (_string_) Content that supersedes content in terms of display.
*   `tags` (_array of any_) List of tags associated with the asset.
*   `template` (_object_) Template the asset follows.
*   `version` (_number_) The version of the asset.
*   `views` (_object_) Views within an asset.

### AssetSharingProperties

Allows you to share content with one or more business units that have Content Builder Sharing enabled. See Sharing for additional information.

*   `sharedWith` (_object_) List of MID IDs the asset is shared with.
*   `sharingType` (_string_) Indicates the permission that you’re granting to the list of MIDs in sharedWith. Possible values are view, edit, or local.  
    Allowed values: `view`, `edit`, `local`.

### PageObject

An object that controls the page number and page size.

*   `page` (_integer_) The page number of results to be returned in the response. The default value is 1.
*   `pageSize` (_integer_) The number of results to be returned on each page. The default value is 50.

### QueryObject

An object that contains simple queries that are united by using AND or OR logic. Contains leftOperand and rightOperand; you can also embed queries within other queries.

*   `leftOperand` (_QueryOperand | QueryObject_)
    
    One of: `QueryOperand`, `QueryObject`.
    
*   `logicalOperator` (_string_) The value can be either AND or OR.  
    Allowed values: `AND`, `OR`.
*   `rightOperand` (_QueryOperand | QueryObject_)
    
    One of: `QueryOperand`, `QueryObject`.
    

### SortItem

*   `property` (_string_) The name of the field to sort on.
*   `direction` (_string_) The sort direction for the specified property. Possible values are `ASC` (to sort results in ascending order) and `DESC` (to sort in descending order).  
    Allowed values: `ASC`, `DESC`.

### Category

*   `categoryType` (_string_) The type of category. Possible values are `asset` and `asset-shared`.
*   `description` (_string_) A description of the category.
*   `enterpriseId` (_number_) ID of the enterprise this business unit belongs to.
*   `id` (_integer_) System-assigned ID for the category.
*   `memberId` (_number_) ID of the member who creates the category.
*   `meta` (_object_) Meta is used much like the data attribute on CMS assets but for internal functionality in Content Builder. If meta is returned, be sure to pass it through the API.
*   `name` (_string_) Name of the category.
*   `parentId` (_number_) ID of the parent category.
*   `sharingProperties` (_object_) Stores the MIDs of business units this category is shared with and the sharing type. Only included in the response if categoryType is `asset-shared`.

### QueryOperand

*   `property` (_string_) The name of the field to use in the comparison.
*   `simpleOperator` (_string_) The comparison operator to use in the query. Possible values are equal, notEqual, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, like, isNull, isNotNull, contains, mustContain, startsWith, in.  
    Allowed values: `equal`, `notEqual`, `lessThan`, `lessThanOrEqual`, `greaterThan`, `greaterThanOrEqual`, `like`, `isNull`, `isNotNull`, `contains`, `mustContain`, `startsWith`, `in`.
*   `value` (_any_) The value to compare the specified field to. String, number, boolean, or array.

### ArchiveMessageResponse

Success response for archive.

*   `message` (_string_) The resource was successfully archived.

### RestoreMessageResponse

Success response for restore.

*   `message` (_string_) The resource was successfully restored.