---
title: "Batch update subscription status"
method: POST
path: "/communication-preferences/2026-03/statuses/batch/write"
tags: ["Batch"]
---

# Batch update subscription status

`POST /communication-preferences/2026-03/statuses/batch/write`

Update the subscription status for a set of contacts.

## Request body

- CommunicationPreferencesBatchInputPublicStatusRequest
  - `inputs` CommunicationPreferencesPublicStatusRequest[], required — An array of PublicStatusRequest objects, each representing a subscription status update request. This property is required.
    - `channel` 'EMAIL', required — The type of communication channel. Currently, only `EMAIL` is supported.
    - `legalBasis` 'CONSENT_WITH_NOTICE' | 'LEGITIMATE_INTEREST_CLIENT' | 'LEGITIMATE_INTEREST_OTHER' | 'LEGITIMATE_INTEREST_PQL' | 'NON_GDPR' | 'PERFORMANCE_OF_CONTRACT' | 'PROCESS_AND_STORE' — The legal basis for communication.
    - `legalBasisExplanation` string — The explanation for the legal basis.
    - `statusState` 'NOT_SPECIFIED' | 'SUBSCRIBED' | 'UNSUBSCRIBED', required — The status of the contact's subscription.
    - `subscriberIdString` string, required — The contact's email address.
    - `subscriptionId` integer, required — The ID of the subscription to update.

## Response `200`

successful operation

- CommunicationPreferencesBatchResponsePublicStatus
  - `completedAt` string, date-time, required — The date and time when the batch operation was completed.
  - `errors` StandardError[] — An array of error objects detailing any issues encountered.
    - `category` string, required — Error category.
    - `context` object, required — Error context.
    - `errors` ErrorDetail[], required — List of error details.
      - `code` string — The status code associated with the error detail
      - `context` object — Context about the error condition
      - `in` string — The name of the field or parameter in which the error was found.
      - `message` string, required — A human readable message describing the error along with remediation steps where appropriate
      - `subCategory` string — A specific category that contains more specific detail about the error
    - `id` string — Error ID.
    - `links` object, required — Error links.
    - `message` string, required — Error message.
    - `status` string, required — Error status.
    - `subCategory` object — Error subcategory.
  - `links` object — URLs linking to related resources or documentation.
  - `numErrors` integer — The number of errors encountered during the batch operation.
  - `requestedAt` string, date-time — The date and time when the request was made.
  - `results` CommunicationPreferencesPublicStatus[], required — An array containing the results of the batch operation.
    - `businessUnitId` integer — The ID of the business unit associated with the subscription.
    - `channel` 'EMAIL', required — The type of communication channel, with 'EMAIL' as the only supported option.
    - `legalBasis` 'CONSENT_WITH_NOTICE' | 'LEGITIMATE_INTEREST_CLIENT' | 'LEGITIMATE_INTEREST_OTHER' | 'LEGITIMATE_INTEREST_PQL' | 'NON_GDPR' | 'PERFORMANCE_OF_CONTRACT' | 'PROCESS_AND_STORE' — The legal basis for communication, with options including 'LEGITIMATE_INTEREST_PQL', 'LEGITIMATE_INTEREST_CLIENT', 'PERFORMANCE_OF_CONTRACT', 'CONSENT_WITH_NOTICE', 'NON_GDPR', 'PROCESS_AND_STORE', and 'LEGITIMATE_INTEREST_OTHER'.
    - `legalBasisExplanation` string — An explanation for the legal basis used for communication.
    - `setStatusSuccessReason` 'NO_STATUS_CHANGE' | 'REQUESTED_CHANGE_OCCURRED' | 'RESUBSCRIBE_OCCURRED' | 'UNSUBSCRIBE_FROM_ALL_OCCURRED' — The reason for the successful change in subscription status, such as 'RESUBSCRIBE_OCCURRED' or 'NO_STATUS_CHANGE'.
    - `source` string, required — The origin or method through which the subscription status was set.
    - `status` 'NOT_SPECIFIED' | 'SUBSCRIBED' | 'UNSUBSCRIBED', required — The current subscription status of the contact, which can be 'SUBSCRIBED', 'UNSUBSCRIBED', or 'NOT_SPECIFIED'.
    - `subscriberIdString` string, required — The contact's email address.
    - `subscriptionId` integer, required — The unique identifier of the subscription.
    - `subscriptionName` string — The name of the subscription.
    - `timestamp` string, date-time, required — The date and time when the subscription status was last updated.
  - `startedAt` string, date-time, required — The date and time when the batch operation started.
  - `status` 'CANCELED' | 'COMPLETE' | 'PENDING' | 'PROCESSING', required — The current status of the batch operation, which can be PENDING, PROCESSING, CANCELED, or COMPLETE.

## Other responses

- `default` — An error occurred.

---

[API](https://skmtc.net/hubspot/apis/hubspot-api-specification.md) · [All operations](https://skmtc.net/hubspot/apis/hubspot-api-specification/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hubspot/hubspot-api-specification/versions/f9c7181056c5/schema)
