curl --request POST \
--url https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm \
--header 'Authorization: Bearer <token>' \
--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 = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', '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 => [
"Authorization: Bearer <token>",
"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("Authorization", "Bearer <token>")
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("Authorization", "Bearer <token>")
.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["Authorization"] = 'Bearer <token>'
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"
}
}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.
curl --request POST \
--url https://api.hubapi.com/webhooks-journal/snapshots/2026-09/crm \
--header 'Authorization: Bearer <token>' \
--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 = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', '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 => [
"Authorization: Bearer <token>",
"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("Authorization", "Bearer <token>")
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("Authorization", "Bearer <token>")
.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["Authorization"] = 'Bearer <token>'
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
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
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
Was this page helpful?