> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---
id: 9536a173-db1c-475e-adde-c0c8e4364ee6
---

# CMS content audit API

> The CMS content audit API allows you to filter and sort on content changes by type, time period, or HubSpot user ID to understand content change history.

export const Tag = ({children, type = 'default', className = ''}) => {
  return <span className={`tag tag-${type} ${className}`.trim()}>
      {children}
    </span>;
};

export const SupportedProducts = ({marketing, sales, service, cms, data, commerce, marketingLevel, salesLevel, serviceLevel, cmsLevel, dataLevel, commerceLevel}) => {
  const translations = {
    description: "Requires one of the following products or higher.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub",
      data: "Data Hub",
      commerce: "Revenue Hub"
    },
    tiers: {
      free: "Free",
      starter: "Starter",
      professional: "Professional",
      enterprise: "Enterprise"
    }
  };
  const translateTier = tier => {
    if (!tier) return '';
    const lowerTier = tier.toLowerCase();
    return translations.tiers[lowerTier] || tier;
  };
  const products = [{
    name: marketing ? translations.productNames.marketing : '',
    level: translateTier(marketingLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/marketing-bolt.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/sales-star.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/service-heart.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/content-play.svg",
    alt: "Content Hub"
  }, {
    name: data ? translations.productNames.data : '',
    level: translateTier(dataLevel),
    icon: "https://developers.hubspot.com/hubfs/Knowledge_Base_2023-24-25/subscription_key_icons/operations_icon.svg",
    alt: "Data Hub"
  }, {
    name: commerce ? translations.productNames.commerce : '',
    level: translateTier(commerceLevel),
    icon: "https://developers.hubspot.com/hubfs/Knowledge_Base/subscription_key_icons/commerce_icon.svg",
    alt: "Revenue Hub"
  }].filter(product => product.name && product.level);
  if (products.length === 0) return null;
  return <div>
      <div className="text-sm mb-2">{translations.description}</div>
      <div className={`grid ${products.length === 1 ? 'grid-cols-1' : 'grid-cols-2'} gap-1.5`}>
        {products.map((product, index) => <div key={index} style={{
    display: 'flex',
    alignItems: 'center'
  }}>
            <img src={product.icon} alt={product.alt} className="w-3.5 h-3.5 mr-1.5 mt-2.5 mb-2.5 flex-shrink-0 align-middle" />
            <span className="font-medium mr-1 text-sm">{product.name} -</span>
            <span className="text-sm">{product.level}</span>
          </div>)}
      </div>
    </div>;
};

export const ScopesList = ({scopes = [], description = "This API requires one of the following scopes:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<AccordionGroup>
  <Accordion title="Supported products" defaultOpen="true" icon="cubes">
    <SupportedProducts cms={true} cmsLevel="enterprise" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'content'
]}
    />
  </Accordion>
</AccordionGroup>

The CMS content audit API allows you to query audit logs of CMS changes that occurred within your HubSpot account. Use this API to track content changes by type, time period, object, or user. For example, you can find out which user most recently made changes to a list of pages, or identify all content that was deleted within a specific time window.

## Query audit logs

To retrieve audit logs, make a `GET` request to `/cms/audit-logs/2026-03/`.

For example, the following request retrieves audit logs for landing page updates made by a specific user:

```shell wrap theme={null}
curl 'https://api.hubapi.com/cms/audit-logs/2026-03/?objectType=LANDING_PAGE,BLOG_POST&eventType=UPDATED,CREATED&userId=1011561&limit=10' \
  --request GET \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

The following query parameters are available for filtering and paginating results:

| Parameter    | Type   | Description                                                                                                                                                                                                  |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `after`      | String | Timestamp after which audit logs will be returned. Use for filtering by time range (e.g., `2024-01-01T00:00:00Z`).                                                                                           |
| `before`     | String | Timestamp before which audit logs will be returned. Use for filtering by time range.                                                                                                                         |
| `eventType`  | String | Comma-separated list of event types to filter by. See [event types](#event-types) below.                                                                                                                     |
| `limit`      | String | The number of logs to return per page.                                                                                                                                                                       |
| `objectId`   | String | Comma-separated list of object IDs to filter by.                                                                                                                                                             |
| `objectType` | String | Comma-separated list of object types to filter by. See [object types](#object-types) below.                                                                                                                  |
| `sort`       | String | The sort direction for the audit logs. Can only sort by timestamp. Use `timestamp` for ascending or `-timestamp` for descending.                                                                             |
| `userId`     | String | Comma-separated list of HubSpot user IDs to filter by. To [retrieve user IDs](/api-reference/latest/account/settings/user-provisioning/users/get-users), make a `GET` request to `/settings/users/2026-03/`. |

The response will include details for each event that meets the filter criteria.

```json theme={null}
{
  "results": [
    {
      "objectId": "4065364319",
      "objectName": "My Landing Page",
      "fullName": "John Doe",
      "event": "UPDATED",
      "userId": "1011561",
      "timestamp": "2024-03-10T15:24:34.672Z",
      "objectType": "LANDING_PAGE"
    },
    {
      "objectId": "4065364320",
      "objectName": "Homepage",
      "fullName": "John Doe",
      "event": "PUBLISHED",
      "userId": "1011561",
      "timestamp": "2024-03-10T14:12:18.123Z",
      "objectType": "LANDING_PAGE"
    }
  ],
  "paging": {
    "next": {
      "after": "1710081138123",
      "link": "https://api.hubapi.com/cms/audit-logs/2026-03/?after=1710081138123"
    }
  }
}
```

| Field        | Type   | Description                                                                                                                                                                    |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `objectId`   | String | The ID of the content object that was changed.                                                                                                                                 |
| `objectName` | String | The internal name of the object in HubSpot.                                                                                                                                    |
| `objectType` | String | The type of object. See [object types](#object-types) below.                                                                                                                   |
| `event`      | String | The type of event. See [event types](#event-types) below.                                                                                                                      |
| `userId`     | String | The ID of the user who made the change.                                                                                                                                        |
| `fullName`   | String | The name of the user who made the change.                                                                                                                                      |
| `timestamp`  | String | The timestamp when the event occurred (ISO 8601 format).                                                                                                                       |
| `meta`       | Object | Supplementary metadata about the event. For example, HubDB events may include rows deleted/updated, and Content Settings events include the specific fields that were changed. |

### Pagination

Results are paginated using cursor-based pagination. To retrieve the next page of results, include an `after` query parameter with the value from the `paging.next` object in the response.

For example, in the example response above, the `after` value is `1710081138123`. To retrieve the next page of results, you would make a `GET` request to `/cms/audit-logs/2026-03/?objectType=BLOG_POST&limit=10&after=1710081138123`.

```shell wrap theme={null}
curl 'https://api.hubapi.com/cms/audit-logs/2026-03/?objectType=BLOG_POST&limit=10&after=1710081138123' \
  --request GET \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Example use cases

### Find recent changes to a specific page

To find all changes made to a specific page, use the `objectId` parameter:

```shell wrap theme={null}
curl 'https://api.hubapi.com/cms/audit-logs/2026-03/?objectId=4065364319&sort=-timestamp&limit=20' \
  --request GET \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

### Find all deleted content in a time range

To find all content that was deleted within a specific time window:

```shell wrap theme={null}
curl 'https://api.hubapi.com/cms/audit-logs/2026-03/?eventType=DELETED&after=2024-01-01T00:00:00Z&before=2024-02-01T00:00:00Z' \
  --request GET \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

### Audit changes by a specific user

To see all changes made by a specific user across all content types:

```shell wrap theme={null}
curl 'https://api.hubapi.com/cms/audit-logs/2026-03/?userId=1011561&sort=-timestamp&limit=50' \
  --request GET \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Event types

The `eventType` parameter accepts the following values. You can specify multiple values as comma-separated strings (e.g., `eventType=CREATED,UPDATED`).

| Event Type    | Description                                 |
| ------------- | ------------------------------------------- |
| `CREATED`     | An object has been created.                 |
| `DELETED`     | An object has been deleted or disconnected. |
| `PUBLISHED`   | An object has been published.               |
| `UNPUBLISHED` | An object has been unpublished.             |
| `UPDATED`     | An object has been updated.                 |

## Object types

The `objectType` parameter accepts the following values. You can specify multiple values as comma-separated strings (e.g., `objectType=BLOG,LANDING_PAGE`).

| Object Type              | Description                                                                                                                                                                                                                         |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BLOG`                   | Changes made to your blog settings in your account settings.                                                                                                                                                                        |
| `BLOG_POST`              | Blog posts associated with your blog(s).                                                                                                                                                                                            |
| `CONTENT_SETTINGS`       | Changes made to your website settings in your account settings. The values changed will appear in the `meta` JSON object.                                                                                                           |
| `CTA`                    | Changes made to your [Calls-to-action (CTAs)](https://knowledge.hubspot.com/cta/get-started-with-calls-to-action-ctas).                                                                                                             |
| `DOMAIN`                 | Changes made to the domains connected in your Domains & URLs settings in your account settings.                                                                                                                                     |
| `EMAIL`                  | Changes made to emails in the email editor.                                                                                                                                                                                         |
| `FILE`                   | Changes made to files in the [files tool](https://knowledge.hubspot.com/files/organize-edit-and-delete-files).                                                                                                                      |
| `GLOBAL_MODULE`          | Changes made to [global modules](https://knowledge.hubspot.com/design-manager/make-changes-to-a-global-module-in-only-one-template).                                                                                                |
| `HUBDB_TABLE`            | Changes made to HubDB tables.                                                                                                                                                                                                       |
| `KNOWLEDGE_BASE`         | Changes made to your knowledge base settings in your account settings.                                                                                                                                                              |
| `KNOWLEDGE_BASE_ARTICLE` | Changes made to knowledge base articles in the content editor.                                                                                                                                                                      |
| `LANDING_PAGE`           | Changes made to landing pages in the content editor.                                                                                                                                                                                |
| `MODULE`                 | Changes made to [modules](/cms/start-building/building-blocks/modules/overview).                                                                                                                                                    |
| `SERVERLESS_FUNCTION`    | Changes made to [serverless functions](/cms/start-building/features/serverless-functions/overview).                                                                                                                                 |
| `TEMPLATE`               | Changes made to [templates](/cms/start-building/building-blocks/templates/overview).                                                                                                                                                |
| `THEME`                  | Changes made to [Theme Settings](https://knowledge.hubspot.com/website-and-landing-pages/edit-your-theme-settings) and when [Themes](https://knowledge.hubspot.com/website-and-landing-pages/edit-your-theme-settings) are created. |
| `URL_MAPPING`            | Changes made to your URL Redirects in URL Redirects settings in your account settings.                                                                                                                                              |
| `WEBSITE_PAGE`           | Changes made to website pages in the content editor.                                                                                                                                                                                |
