curl --request POST \
--url https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"id": "<string>",
"properties": {
"billingFrequency": {},
"billingPeriod": {},
"customProperties": {},
"status": {},
"archived": true
}
}
]
}
'import requests
url = "https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update"
payload = { "inputs": [
{
"id": "<string>",
"properties": {
"billingFrequency": {},
"billingPeriod": {},
"customProperties": {},
"status": {},
"archived": True
}
}
] }
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({
inputs: [
{
id: '<string>',
properties: {
billingFrequency: {},
billingPeriod: {},
customProperties: {},
status: {},
archived: true
}
}
]
})
};
fetch('https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update', 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/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update",
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([
'inputs' => [
[
'id' => '<string>',
'properties' => [
'billingFrequency' => [
],
'billingPeriod' => [
],
'customProperties' => [
],
'status' => [
],
'archived' => true
]
]
]
]),
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/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"id\": \"<string>\",\n \"properties\": {\n \"billingFrequency\": {},\n \"billingPeriod\": {},\n \"customProperties\": {},\n \"status\": {},\n \"archived\": true\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/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"id\": \"<string>\",\n \"properties\": {\n \"billingFrequency\": {},\n \"billingPeriod\": {},\n \"customProperties\": {},\n \"status\": {},\n \"archived\": true\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update")
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 \"inputs\": [\n {\n \"id\": \"<string>\",\n \"properties\": {\n \"billingFrequency\": {},\n \"billingPeriod\": {},\n \"customProperties\": {},\n \"status\": {},\n \"archived\": true\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"customProperties": {},
"id": "<string>",
"productId": "<string>",
"archived": true,
"archivedAt": "2023-11-07T05:31:56Z",
"billingPeriod": "<string>",
"costOfGoodsSold": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"images": "<string>",
"name": "<string>",
"priceBookId": "<string>",
"pricing": {
"prices": [
{
"currencyCode": "<string>",
"price": 123,
"maxQuantity": "<string>"
}
]
},
"sku": "<string>",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"links": {},
"requestedAt": "2023-11-07T05:31:56Z"
}{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"customProperties": {},
"id": "<string>",
"productId": "<string>",
"archived": true,
"archivedAt": "2023-11-07T05:31:56Z",
"billingPeriod": "<string>",
"costOfGoodsSold": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"images": "<string>",
"name": "<string>",
"priceBookId": "<string>",
"pricing": {
"prices": [
{
"currencyCode": "<string>",
"price": 123,
"maxQuantity": "<string>"
}
]
},
"sku": "<string>",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"errors": [
{
"category": "<string>",
"context": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"context": "{missingScopes=[scope1, scope2]}",
"in": "<string>",
"subCategory": "<string>"
}
],
"links": {},
"message": "<string>",
"status": "<string>",
"id": "<string>",
"subCategory": {}
}
],
"links": {},
"numErrors": 123,
"requestedAt": "2023-11-07T05:31:56Z"
}{
"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"
}
}Update price book items
Update multiple items in a specified price book in a single batch operation. This endpoint allows for efficient updates of price book items, making it useful for managing large sets of data within a price book. The operation returns a batch response indicating the success or failure of each item update.
curl --request POST \
--url https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"id": "<string>",
"properties": {
"billingFrequency": {},
"billingPeriod": {},
"customProperties": {},
"status": {},
"archived": true
}
}
]
}
'import requests
url = "https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update"
payload = { "inputs": [
{
"id": "<string>",
"properties": {
"billingFrequency": {},
"billingPeriod": {},
"customProperties": {},
"status": {},
"archived": True
}
}
] }
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({
inputs: [
{
id: '<string>',
properties: {
billingFrequency: {},
billingPeriod: {},
customProperties: {},
status: {},
archived: true
}
}
]
})
};
fetch('https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update', 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/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update",
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([
'inputs' => [
[
'id' => '<string>',
'properties' => [
'billingFrequency' => [
],
'billingPeriod' => [
],
'customProperties' => [
],
'status' => [
],
'archived' => true
]
]
]
]),
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/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"id\": \"<string>\",\n \"properties\": {\n \"billingFrequency\": {},\n \"billingPeriod\": {},\n \"customProperties\": {},\n \"status\": {},\n \"archived\": true\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/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"id\": \"<string>\",\n \"properties\": {\n \"billingFrequency\": {},\n \"billingPeriod\": {},\n \"customProperties\": {},\n \"status\": {},\n \"archived\": true\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/commerce/price-books/2026-09-beta/price-books/{priceBookId}/items/batch/update")
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 \"inputs\": [\n {\n \"id\": \"<string>\",\n \"properties\": {\n \"billingFrequency\": {},\n \"billingPeriod\": {},\n \"customProperties\": {},\n \"status\": {},\n \"archived\": true\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"customProperties": {},
"id": "<string>",
"productId": "<string>",
"archived": true,
"archivedAt": "2023-11-07T05:31:56Z",
"billingPeriod": "<string>",
"costOfGoodsSold": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"images": "<string>",
"name": "<string>",
"priceBookId": "<string>",
"pricing": {
"prices": [
{
"currencyCode": "<string>",
"price": 123,
"maxQuantity": "<string>"
}
]
},
"sku": "<string>",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"links": {},
"requestedAt": "2023-11-07T05:31:56Z"
}{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"customProperties": {},
"id": "<string>",
"productId": "<string>",
"archived": true,
"archivedAt": "2023-11-07T05:31:56Z",
"billingPeriod": "<string>",
"costOfGoodsSold": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"description": "<string>",
"images": "<string>",
"name": "<string>",
"priceBookId": "<string>",
"pricing": {
"prices": [
{
"currencyCode": "<string>",
"price": 123,
"maxQuantity": "<string>"
}
]
},
"sku": "<string>",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"errors": [
{
"category": "<string>",
"context": {},
"errors": [
{
"message": "<string>",
"code": "<string>",
"context": "{missingScopes=[scope1, scope2]}",
"in": "<string>",
"subCategory": "<string>"
}
],
"links": {},
"message": "<string>",
"status": "<string>",
"id": "<string>",
"subCategory": {}
}
],
"links": {},
"numErrors": 123,
"requestedAt": "2023-11-07T05:31:56Z"
}{
"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
Required Scopes
Required Scopes
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
The unique identifier of the price book containing the items to update.
Body
An array of objects, each representing a price book item to be updated. Each object must conform to the PriceBookItemBatchUpdateInput schema.
Show child attributes
Show child attributes
Response
successful operation
The date and time when the batch operation was completed, in ISO 8601 format.
An array of PriceBookItemResponse objects representing the individual results of the batch operation.
Show child attributes
Show child attributes
The date and time when the batch operation started, in ISO 8601 format.
The current status of the batch operation. Valid values include 'PENDING', 'PROCESSING', 'CANCELED', and 'COMPLETE'.
CANCELED, COMPLETE, PENDING, PROCESSING A map of link names to associated URIs providing additional information or actions related to the batch operation.
Show child attributes
Show child attributes
The date and time when the batch operation was requested, in ISO 8601 format.
Was this page helpful?