Skip to main content
GET
/
cms
/
v3
/
blogs
/
posts
/
{objectId}
/
revisions
Retrieves all previous versions of a post
curl --request GET \
  --url https://api.hubapi.com/cms/v3/blogs/posts/{objectId}/revisions \
  --header 'Authorization: Bearer <token>'
{
  "results": [
    {
      "id": "<string>",
      "object": {
        "abStatus": "automated_loser_variant",
        "abTestId": "<string>",
        "archivedAt": 123,
        "archivedInDashboard": true,
        "attachedStylesheets": [
          {}
        ],
        "authorName": "<string>",
        "blogAuthorId": "<string>",
        "campaign": "<string>",
        "categoryId": 123,
        "contentGroupId": "<string>",
        "contentTypeCategory": "0",
        "created": "2023-11-07T05:31:56Z",
        "createdById": "<string>",
        "currentState": "AUTOMATED",
        "currentlyPublished": true,
        "domain": "<string>",
        "dynamicPageDataSourceId": "<string>",
        "dynamicPageDataSourceType": 123,
        "dynamicPageHubDbTableId": "<string>",
        "enableDomainStylesheets": true,
        "enableGoogleAmpOutputOverride": true,
        "enableLayoutStylesheets": true,
        "featuredImage": "<string>",
        "featuredImageAltText": "<string>",
        "folderId": "<string>",
        "footerHtml": "<string>",
        "headHtml": "<string>",
        "htmlTitle": "<string>",
        "id": "<string>",
        "includeDefaultCustomCss": true,
        "language": "af",
        "layoutSections": {},
        "linkRelCanonicalUrl": "<string>",
        "mabExperimentId": "<string>",
        "metaDescription": "<string>",
        "name": "<string>",
        "pageExpiryDate": 123,
        "pageExpiryEnabled": true,
        "pageExpiryRedirectId": 123,
        "pageExpiryRedirectUrl": "<string>",
        "password": "<string>",
        "postBody": "<string>",
        "postSummary": "<string>",
        "publicAccessRules": [
          {}
        ],
        "publicAccessRulesEnabled": true,
        "publishDate": "2023-11-07T05:31:56Z",
        "publishImmediately": true,
        "rssBody": "<string>",
        "rssSummary": "<string>",
        "slug": "<string>",
        "state": "<string>",
        "tagIds": [
          123
        ],
        "themeSettingsValues": {},
        "translatedFromId": "<string>",
        "translations": {},
        "updated": "2023-11-07T05:31:56Z",
        "updatedById": "<string>",
        "url": "<string>",
        "useFeaturedImage": true,
        "widgetContainers": {},
        "widgets": {}
      },
      "updatedAt": "2023-11-07T05:31:56Z",
      "user": {
        "email": "<string>",
        "fullName": "<string>",
        "id": "<string>"
      }
    }
  ],
  "total": 123,
  "paging": {
    "next": {
      "after": "<string>",
      "link": "<string>"
    },
    "prev": {
      "before": "<string>",
      "link": "<string>"
    }
  }
}

Supported products

Requires one of the following products or higher.
Marketing HubMarketing Hub -Professional
Sales HubSales Hub -Free
Service HubService Hub -Free
Content HubContent Hub -Starter
Data HubData Hub -Free

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

objectId
string
required

The ID of the blog post to retrieve previous versions of.

Query Parameters

after
string

The cursor token value to get the next set of results. You can get this from the paging.next.after JSON property of a paged response containing more results.

before
string

A paging cursor token for retrieving previous pages.

limit
integer<int32>

The maximum number of results to return. Default is 100.

Response

successful operation

Response object for collections of blog post versions with pagination information.

results
object[]
required

Collection of blog post versions.

total
integer<int32>
required

Total number of blog post versions.

paging
object

Model definition for paging.

Last modified on December 16, 2025