Create Snapshot
curl --request POST \
--url https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm \
--header 'Content-Type: application/json' \
--data '
{
"snapshotRequests": [
{
"objectId": 123,
"objectTypeId": "<string>",
"portalId": 123,
"properties": [
"<string>"
]
}
]
}
'import requests
url = "https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm"
payload = { "snapshotRequests": [
{
"objectId": 123,
"objectTypeId": "<string>",
"portalId": 123,
"properties": ["<string>"]
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
snapshotRequests: [
{
objectId: 123,
objectTypeId: '<string>',
portalId: 123,
properties: ['<string>']
}
]
})
};
fetch('https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm', 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/webhooks-journal/snapshots/2026-09/crm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'snapshotRequests' => [
[
'objectId' => 123,
'objectTypeId' => '<string>',
'portalId' => 123,
'properties' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm"
payload := strings.NewReader("{\n \"snapshotRequests\": [\n {\n \"objectId\": 123,\n \"objectTypeId\": \"<string>\",\n \"portalId\": 123,\n \"properties\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm")
.header("Content-Type", "application/json")
.body("{\n \"snapshotRequests\": [\n {\n \"objectId\": 123,\n \"objectTypeId\": \"<string>\",\n \"portalId\": 123,\n \"properties\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"snapshotRequests\": [\n {\n \"objectId\": 123,\n \"objectTypeId\": \"<string>\",\n \"portalId\": 123,\n \"properties\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"snapshotResponses": [
{
"objectId": 123,
"objectTypeId": "<string>",
"portalId": 123,
"snapshotStatusId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}{
"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"
}
}Snapshots
Create CRM object snapshots
Create a batch of CRM object snapshots in HubSpot. This endpoint is used to capture the current state of specified CRM objects for later reference or analysis. It requires a JSON payload containing the details of the CRM objects to snapshot. This operation is exempt from daily and ten-secondly rate limits.
POST
/
webhooks-journal
/
snapshots
/
2026-09
/
crm
Create Snapshot
curl --request POST \
--url https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm \
--header 'Content-Type: application/json' \
--data '
{
"snapshotRequests": [
{
"objectId": 123,
"objectTypeId": "<string>",
"portalId": 123,
"properties": [
"<string>"
]
}
]
}
'import requests
url = "https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm"
payload = { "snapshotRequests": [
{
"objectId": 123,
"objectTypeId": "<string>",
"portalId": 123,
"properties": ["<string>"]
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
snapshotRequests: [
{
objectId: 123,
objectTypeId: '<string>',
portalId: 123,
properties: ['<string>']
}
]
})
};
fetch('https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm', 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/webhooks-journal/snapshots/2026-09/crm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'snapshotRequests' => [
[
'objectId' => 123,
'objectTypeId' => '<string>',
'portalId' => 123,
'properties' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm"
payload := strings.NewReader("{\n \"snapshotRequests\": [\n {\n \"objectId\": 123,\n \"objectTypeId\": \"<string>\",\n \"portalId\": 123,\n \"properties\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm")
.header("Content-Type", "application/json")
.body("{\n \"snapshotRequests\": [\n {\n \"objectId\": 123,\n \"objectTypeId\": \"<string>\",\n \"portalId\": 123,\n \"properties\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"snapshotRequests\": [\n {\n \"objectId\": 123,\n \"objectTypeId\": \"<string>\",\n \"portalId\": 123,\n \"properties\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"snapshotResponses": [
{
"objectId": 123,
"objectTypeId": "<string>",
"portalId": 123,
"snapshotStatusId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}{
"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
Supported products
Body
application/json
An array of CrmObjectSnapshotRequest objects, each representing a request to create a snapshot for a specific CRM object. This property is required.
Show child attributes
Show child attributes
Response
successful operation
An array of responses for each CRM object snapshot request. Each item in the array is a CrmObjectSnapshotResponse object, detailing the outcome of a single snapshot request.
Show child attributes
Show child attributes
Last modified on September 9, 2026
Was this page helpful?