Skip to main content
GET
/
cms
/
blogs
/
2026-03
/
posts
/
{objectId}
/
revisions
Retrieves all previous versions of a post
curl --request GET \
  --url https://api.hubapi.com/cms/blogs/2026-03/posts/{objectId}/revisions \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.hubapi.com/cms/blogs/2026-03/posts/{objectId}/revisions"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.hubapi.com/cms/blogs/2026-03/posts/{objectId}/revisions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hubapi.com/cms/blogs/2026-03/posts/{objectId}/revisions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.hubapi.com/cms/blogs/2026-03/posts/{objectId}/revisions"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.hubapi.com/cms/blogs/2026-03/posts/{objectId}/revisions")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.hubapi.com/cms/blogs/2026-03/posts/{objectId}/revisions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "results": [
    {
      "id": "<string>",
      "object": {
        "abTestId": "<string>",
        "archivedAt": 123,
        "archivedInDashboard": true,
        "attachedStylesheets": [
          {}
        ],
        "authorName": "<string>",
        "blogAuthorId": "<string>",
        "campaign": "<string>",
        "categoryId": 123,
        "contentGroupId": "<string>",
        "created": "2023-11-07T05:31:56Z",
        "createdById": "<string>",
        "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,
        "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>"
    }
  }
}
{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}

Supported products

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 paging cursor token of the last successfully read resource will be returned as 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

results
object[]
required
total
integer<int32>
required
paging
object
Last modified on March 31, 2026