curl --request POST \
--url https://api.hubapi.com/communication-preferences/v4/statuses/batch/write \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"channel": "EMAIL",
"subscriberIdString": "<string>",
"subscriptionId": 123,
"legalBasisExplanation": "<string>"
}
]
}
'import requests
url = "https://api.hubapi.com/communication-preferences/v4/statuses/batch/write"
payload = { "inputs": [
{
"channel": "EMAIL",
"subscriberIdString": "<string>",
"subscriptionId": 123,
"legalBasisExplanation": "<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({
inputs: [
{
channel: 'EMAIL',
subscriberIdString: '<string>',
subscriptionId: 123,
legalBasisExplanation: '<string>'
}
]
})
};
fetch('https://api.hubapi.com/communication-preferences/v4/statuses/batch/write', 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/communication-preferences/v4/statuses/batch/write",
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' => [
[
'channel' => 'EMAIL',
'subscriberIdString' => '<string>',
'subscriptionId' => 123,
'legalBasisExplanation' => '<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/communication-preferences/v4/statuses/batch/write"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"channel\": \"EMAIL\",\n \"subscriberIdString\": \"<string>\",\n \"subscriptionId\": 123,\n \"legalBasisExplanation\": \"<string>\"\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/communication-preferences/v4/statuses/batch/write")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"channel\": \"EMAIL\",\n \"subscriberIdString\": \"<string>\",\n \"subscriptionId\": 123,\n \"legalBasisExplanation\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/communication-preferences/v4/statuses/batch/write")
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 \"channel\": \"EMAIL\",\n \"subscriberIdString\": \"<string>\",\n \"subscriptionId\": 123,\n \"legalBasisExplanation\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"channel": "EMAIL",
"source": "<string>",
"status": "NOT_SPECIFIED",
"subscriberIdString": "<string>",
"subscriptionId": 123,
"timestamp": "2023-11-07T05:31:56Z",
"businessUnitId": 123,
"legalBasis": "CONSENT_WITH_NOTICE",
"legalBasisExplanation": "<string>",
"setStatusSuccessReason": "NO_STATUS_CHANGE",
"subscriptionName": "<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"
}
}Batch update subscription status
Mettre à jour le statut d’abonnement pour un ensemble de contacts.
curl --request POST \
--url https://api.hubapi.com/communication-preferences/v4/statuses/batch/write \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": [
{
"channel": "EMAIL",
"subscriberIdString": "<string>",
"subscriptionId": 123,
"legalBasisExplanation": "<string>"
}
]
}
'import requests
url = "https://api.hubapi.com/communication-preferences/v4/statuses/batch/write"
payload = { "inputs": [
{
"channel": "EMAIL",
"subscriberIdString": "<string>",
"subscriptionId": 123,
"legalBasisExplanation": "<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({
inputs: [
{
channel: 'EMAIL',
subscriberIdString: '<string>',
subscriptionId: 123,
legalBasisExplanation: '<string>'
}
]
})
};
fetch('https://api.hubapi.com/communication-preferences/v4/statuses/batch/write', 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/communication-preferences/v4/statuses/batch/write",
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' => [
[
'channel' => 'EMAIL',
'subscriberIdString' => '<string>',
'subscriptionId' => 123,
'legalBasisExplanation' => '<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/communication-preferences/v4/statuses/batch/write"
payload := strings.NewReader("{\n \"inputs\": [\n {\n \"channel\": \"EMAIL\",\n \"subscriberIdString\": \"<string>\",\n \"subscriptionId\": 123,\n \"legalBasisExplanation\": \"<string>\"\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/communication-preferences/v4/statuses/batch/write")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": [\n {\n \"channel\": \"EMAIL\",\n \"subscriberIdString\": \"<string>\",\n \"subscriptionId\": 123,\n \"legalBasisExplanation\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/communication-preferences/v4/statuses/batch/write")
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 \"channel\": \"EMAIL\",\n \"subscriberIdString\": \"<string>\",\n \"subscriptionId\": 123,\n \"legalBasisExplanation\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"completedAt": "2023-11-07T05:31:56Z",
"results": [
{
"channel": "EMAIL",
"source": "<string>",
"status": "NOT_SPECIFIED",
"subscriberIdString": "<string>",
"subscriptionId": 123,
"timestamp": "2023-11-07T05:31:56Z",
"businessUnitId": 123,
"legalBasis": "CONSENT_WITH_NOTICE",
"legalBasisExplanation": "<string>",
"setStatusSuccessReason": "NO_STATUS_CHANGE",
"subscriptionName": "<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
Autorisations
The access token received from the authorization server in the OAuth 2.0 flow.
Corps
Un tableau d'objets PublicStatusRequest, chacun représentant les détails du statut d'abonnement pour un abonné spécifique. Cette propriété est requise.
Show child attributes
Show child attributes
Réponse
successful operation
La date et l'heure de la fin de l'opération par lot.
Un tableau contenant les résultats de l'opération par lot.
Show child attributes
Show child attributes
La date et l'heure du début de l'opération par lot.
Le statut actuel de l'opération par lot, qui peut être EN ATTENTE, EN COURS DE TRAITEMENT, ANNULÉE ou TERMINÉE.
CANCELED, COMPLETE, PENDING, PROCESSING Un tableau d'objets d'erreur détaillant tous les problèmes rencontrés.
Show child attributes
Show child attributes
Des URL renvoyant vers des ressources ou de la documentation connexes.
Show child attributes
Show child attributes
Le nombre d'erreurs rencontrées pendant l'opération par lot.
La date et l'heure auxquelles la demande a été faite.