curl --request POST \
--url https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"productId": "<string>"
}
]
}
'import requests
url = "https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create"
payload = { "inputs": [{ "productId": "<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({inputs: [{productId: '<string>'}]})
};
fetch('https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create', 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/create",
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' => [
[
'productId' => '<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/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"productId\": \"<string>\"\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/create")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"productId\": \"<string>\"\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/create")
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 \"productId\": \"<string>\"\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"
}
}Add products to a price book
Créez plusieurs articles dans un catalogue des prix spécifié en une seule opération par lot. Ce point de terminaison est utile pour ajouter efficacement un grand nombre d’articles à un catalogue des prix, réduisant ainsi le besoin de multiples requêtes individuelles. L’opération renvoie une réponse par lot indiquant le succès ou l’échec de chaque création d’article.
curl --request POST \
--url https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"productId": "<string>"
}
]
}
'import requests
url = "https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create"
payload = { "inputs": [{ "productId": "<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({inputs: [{productId: '<string>'}]})
};
fetch('https://api.hubapi.com/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create', 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/create",
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' => [
[
'productId' => '<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/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"productId\": \"<string>\"\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/create")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"productId\": \"<string>\"\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/create")
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 \"productId\": \"<string>\"\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 auquel les éléments seront ajoutés.
Corps
Un tableau d'objets PriceBookAddProductRequest, chacun représentant un produit à ajouter au Catalogue des prix. Cette propriété est obligatoire.
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.