curl --request POST \
--url https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/update \
--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/price-books/{priceBookId}/items/batch/update"
payload = { "inputs": [
{
"id": "<string>",
"properties": {
"billingFrequency": {},
"billingPeriod": {},
"customProperties": {},
"status": {},
"archived": True
}
}
] }
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({
inputs: [
{
id: '<string>',
properties: {
billingFrequency: {},
billingPeriod: {},
customProperties: {},
status: {},
archived: true
}
}
]
})
};
fetch('https://api.hubapi.com/commerce/price-books/2026-09/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/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 => [
"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/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("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/price-books/{priceBookId}/items/batch/update")
.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/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["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",
"billingFrequency": "ANNUALLY",
"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": 123
}
],
"pricingModel": "FLAT"
},
"productClassification": "BUNDLE",
"productType": "INVENTORY",
"recurringBillingTerms": "AUTOMATICALLY_RENEW",
"sku": "<string>",
"status": "active",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"status": "CANCELED",
"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",
"billingFrequency": "ANNUALLY",
"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": 123
}
],
"pricingModel": "FLAT"
},
"productClassification": "BUNDLE",
"productType": "INVENTORY",
"recurringBillingTerms": "AUTOMATICALLY_RENEW",
"sku": "<string>",
"status": "active",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"status": "CANCELED",
"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
Mettre à jour plusieurs articles dans un catalogue des prix spécifié en une seule opération de lot. Ce point de terminaison permet des mises à jour efficaces des articles du catalogue des prix, ce qui est utile pour gérer de grands ensembles de données au sein d’un catalogue des prix. L’opération renvoie une réponse de lot indiquant le succès ou l’échec de chaque mise à jour d’article.
curl --request POST \
--url https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/update \
--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/price-books/{priceBookId}/items/batch/update"
payload = { "inputs": [
{
"id": "<string>",
"properties": {
"billingFrequency": {},
"billingPeriod": {},
"customProperties": {},
"status": {},
"archived": True
}
}
] }
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({
inputs: [
{
id: '<string>',
properties: {
billingFrequency: {},
billingPeriod: {},
customProperties: {},
status: {},
archived: true
}
}
]
})
};
fetch('https://api.hubapi.com/commerce/price-books/2026-09/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/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 => [
"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/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("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/price-books/{priceBookId}/items/batch/update")
.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/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["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",
"billingFrequency": "ANNUALLY",
"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": 123
}
],
"pricingModel": "FLAT"
},
"productClassification": "BUNDLE",
"productType": "INVENTORY",
"recurringBillingTerms": "AUTOMATICALLY_RENEW",
"sku": "<string>",
"status": "active",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"status": "CANCELED",
"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",
"billingFrequency": "ANNUALLY",
"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": 123
}
],
"pricingModel": "FLAT"
},
"productClassification": "BUNDLE",
"productType": "INVENTORY",
"recurringBillingTerms": "AUTOMATICALLY_RENEW",
"sku": "<string>",
"status": "active",
"taxCategory": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
],
"startedAt": "2023-11-07T05:31:56Z",
"status": "CANCELED",
"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
Paramètres de chemin
L'identifiant unique du catalogue des prix contenant les articles à mettre à jour.
Corps
Un tableau d'objets, chacun représentant un article de catalogue des prix à mettre à jour. Chaque objet doit être conforme au schéma PriceBookItemBatchUpdateInput.
Show child attributes
Show child attributes
Réponse
successful operation
La date et l'heure auxquelles l'opération de lot a été effectuée, au format ISO 8601.
Un tableau d'objets PriceBookItemResponse représentant les résultats individuels de l'opération de lot.
Show child attributes
Show child attributes
La date et l'heure de début de l'opération par lot, au format ISO 8601.
Le statut actuel de l'opération par lot. Les valeurs valides incluent « PENDING », « PROCESSING », « CANCELED » et « COMPLETE ».
CANCELED, COMPLETE, PENDING, PROCESSING Une carte des noms de liens vers les URI associées qui fournissent des informations ou des actions supplémentaires liées à l'opération de lot.
Show child attributes
Show child attributes
La date et l'heure auxquelles l'opération de lot a été demandée, au format ISO 8601.