> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---
id: 7ef4256d-180a-4a65-9f93-b21cb9b713df
---

# API guide

> The v4 subscription preferences endpoints allow you to manage email subscriptions details for contacts in your account.

export const PostmanCard = ({title, collectionId}) => {
  return <div className="card-condensed-cta">
      <Card title={title ? title : "Postman collection"} href={`https://app.getpostman.com/run-collection/${collectionId}`} horizontal={true} cta="Run in Postman" icon={<svg xmlns="http://www.w3.org/2000/svg" width={25} height={25} preserveAspectRatio="xMidYMid" viewBox="0 0 256 256">
              <path fill="#FF6C37" d="M254.953 144.253c8.959-70.131-40.569-134.248-110.572-143.206C74.378-7.912 10.005 41.616 1.047 111.619c-8.959 70.003 40.569 134.248 110.572 143.334 70.131 8.959 134.248-40.569 143.334-110.7Z" />
              <path fill="#FFF" d="m174.2 82.184-54.007 54.007-15.229-15.23c53.11-53.11 58.358-48.503 69.236-38.777Z" />
              <path fill="#FF6C37" d="M120.193 137.47c-.384 0-.64-.128-.895-.384l-15.358-15.229a1.237 1.237 0 0 1 0-1.792c54.007-54.006 59.638-48.887 71.028-38.649.255.256.383.512.383.896s-.128.64-.383.896l-54.007 53.878c-.128.256-.512.384-.768.384Zm-13.437-16.509 13.437 13.438 52.087-52.087c-9.47-8.446-15.87-11.006-65.524 38.65Z" />
              <path fill="#FFF" d="m135.679 151.676-14.718-14.718 54.007-54.006c14.46 14.59-7.167 38.265-39.29 68.724Z" />
              <path fill="#FF6C37" d="M135.679 152.956c-.384 0-.64-.128-.896-.384l-14.718-14.718c-.256-.256-.256-.512-.256-.896s.128-.64.384-.895L174.2 82.056a1.237 1.237 0 0 1 1.791 0 15.58 15.58 0 0 1 4.991 11.902c-.256 14.206-16.38 32.25-44.28 58.614-.383.256-.767.384-1.023.384Zm-12.926-15.998c8.19 8.319 11.646 11.646 12.926 12.926 21.5-20.476 42.36-41.464 42.488-55.926.128-3.327-1.152-6.655-3.327-9.214l-52.087 52.214Z" />
              <path fill="#FFF" d="m105.22 121.345 10.878 10.878c.256.256.256.512 0 .768-.128.128-.128.128-.256.128l-22.524 4.863c-1.152.128-2.175-.64-2.431-1.791-.128-.64.128-1.28.512-1.664l13.053-13.054c.256-.256.64-.384.768-.128Z" />
              <path fill="#FF6C37" d="M92.934 139.262c-1.92 0-3.327-1.536-3.327-3.455 0-.896.384-1.792 1.024-2.432l13.053-13.054c.768-.64 1.792-.64 2.56 0l10.878 10.878c.768.64.768 1.792 0 2.56-.256.256-.512.384-.896.512l-22.524 4.863c-.256 0-.512.128-.768.128Zm11.902-16.51-12.542 12.543c-.256.256-.383.64-.128 1.024.128.383.512.511.896.383l21.116-4.607-9.342-9.342Z" />
              <path fill="#FFF" d="M202.739 52.238c-8.191-7.935-21.373-7.679-29.307.64-7.935 8.318-7.679 21.372.64 29.306A20.678 20.678 0 0 0 199.155 85l-14.59-14.59 18.174-18.172Z" />
              <path fill="#FF6C37" d="M188.405 89.223c-12.158 0-22.012-9.854-22.012-22.012 0-12.158 9.854-22.012 22.012-22.012 5.631 0 11.134 2.176 15.23 6.143.255.256.383.512.383.896s-.128.64-.384.895L186.357 70.41l13.566 13.566c.512.512.512 1.28 0 1.792l-.256.256c-3.327 2.047-7.295 3.199-11.262 3.199Zm0-41.337c-10.75 0-19.452 8.703-19.324 19.453 0 10.75 8.702 19.452 19.452 19.324 2.944 0 5.887-.64 8.575-2.047l-13.438-13.31c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l17.149-17.15c-3.456-2.943-7.807-4.479-12.414-4.479Z" />
              <path fill="#FFF" d="m203.122 52.622-.255-.256-18.301 18.044 14.461 14.462c1.408-.896 2.816-1.92 3.967-3.072a20.51 20.51 0 0 0 .128-29.178Z" />
              <path fill="#FF6C37" d="M199.155 86.28c-.384 0-.64-.128-.896-.384l-14.589-14.59c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l18.173-18.173a1.237 1.237 0 0 1 1.791 0l.384.256c8.575 8.574 8.575 22.396.128 31.098-1.28 1.28-2.687 2.432-4.223 3.328-.384.128-.64.256-.768.256Zm-12.798-15.87 12.926 12.926c1.024-.64 2.048-1.536 2.816-2.304 7.294-7.294 7.678-19.196.64-26.875L186.357 70.41Z" />
              <path fill="#FFF" d="M176.375 84.488a7.879 7.879 0 0 0-11.134 0l-48.247 48.247 8.063 8.063 51.062-44.792c3.328-2.816 3.584-7.807.768-11.134-.256-.128-.384-.256-.512-.384Z" />
              <path fill="#FF6C37" d="M124.929 142.077c-.384 0-.64-.128-.896-.383l-8.063-8.063a1.237 1.237 0 0 1 0-1.792l48.247-48.247a9.115 9.115 0 0 1 12.926 0 9.115 9.115 0 0 1 0 12.926l-.384.384-51.063 44.792c-.128.255-.384.383-.767.383Zm-6.143-9.342 6.27 6.271 50.167-44.024c2.816-2.304 3.072-6.527.768-9.342-2.303-2.816-6.526-3.072-9.342-.768-.128.128-.256.256-.512.384l-47.351 47.48Z" />
              <path fill="#FFF" d="M80.009 187.637c-.512.256-.768.768-.64 1.28l2.175 9.214c.512 1.28-.256 2.816-1.663 3.2-1.024.384-2.176 0-2.816-.768l-14.077-13.95 45.943-45.943 15.87.256 10.75 10.75c-2.56 2.175-18.045 17.149-55.542 35.961Z" />
              <path fill="#FF6C37" d="M78.985 202.61c-1.024 0-2.048-.383-2.688-1.151l-13.95-13.95c-.255-.256-.383-.512-.383-.896 0-.383.128-.64.384-.895l45.944-45.944c.256-.256.64-.384.895-.384l15.87.256c.383 0 .64.128.895.384l10.75 10.75c.256.256.384.64.384 1.024s-.128.64-.512.896l-.895.767c-13.566 11.902-31.995 23.804-54.902 35.194l2.175 9.086c.384 1.664-.384 3.456-1.92 4.352-.767.384-1.407.512-2.047.512Zm-14.078-15.997 13.182 13.054c.384.64 1.152.896 1.792.512.64-.384.896-1.152.512-1.792l-2.176-9.214c-.256-1.152.256-2.176 1.28-2.688 22.652-11.39 40.952-23.163 54.39-34.81l-9.47-9.47-14.718-.256-44.792 44.664Z" />
              <path fill="#FFF" d="m52.11 197.62 11.006-11.007 16.38 16.381-26.107-1.791c-1.151-.128-1.92-1.152-1.791-2.304 0-.512.128-1.024.512-1.28Z" />
              <path fill="#FF6C37" d="m79.497 204.146-26.236-1.791c-1.92-.128-3.199-1.792-3.071-3.712.128-.768.384-1.535 1.024-2.047L62.22 185.59a1.237 1.237 0 0 1 1.792 0l16.38 16.38c.385.385.512.897.257 1.408-.256.512-.64.768-1.152.768Zm-16.381-15.74-10.11 10.11c-.384.255-.384.895 0 1.151.127.128.255.256.511.256l22.652 1.536-13.053-13.054ZM104.452 146.557c-.768 0-1.28-.64-1.28-1.28 0-.384.128-.64.384-.896l12.414-12.414a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-20.477 4.352h-.256Zm12.414-11.902-8.446 8.446 13.821-2.943-5.375-5.503Z" />
              <path fill="#FFF" d="m124.8 140.926-14.077 3.071c-1.024.256-2.048-.384-2.303-1.408-.128-.64 0-1.28.511-1.791l7.807-7.807 8.063 7.935Z" />
              <path fill="#FF6C37" d="M110.467 145.277a3.168 3.168 0 0 1-3.2-3.2c0-.895.385-1.663.897-2.303l7.806-7.807a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-14.078 3.072h-.64Zm6.399-10.622-6.91 6.91c-.257.257-.257.512-.129.768s.384.384.768.384l11.774-2.56-5.503-5.502ZM203.25 64.907c-.256-.767-1.151-1.151-1.92-.895-.767.255-1.151 1.151-.895 1.92 0 .127.128.255.128.383.768 1.536.512 3.455-.512 4.863-.512.64-.384 1.536.128 2.048.64.512 1.536.384 2.048-.256 1.92-2.432 2.303-5.503 1.023-8.063Z" />
            </svg>} />
    </div>;
};

export const ScopesList = ({scopes = [], description = "This API requires one of the following scopes:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<PostmanCard collectionId="26126890-e814a25f-c97a-4fc8-96ae-b5df46006c67" />

<Accordion title="Scope requirements">
  <ScopesList
    scopes={[
  'communication_preferences.read',
  'communication_preferences.read_write',
  'communication_preferences.statuses.batch.read',
  'communication_preferences.statuses.batch.write',
  'communication_preferences.write'
]}
  />
</Accordion>

Subscription types represent the lawful basis to communicate with your contacts through email. Contacts can [manage their email preferences](https://knowledge.hubspot.com/marketing-email/insert-subscription-links-into-marketing-emails) so they're only opted in to emails they want to receive. The v4 subscriptions APIs allow you to programmatically subscribe or unsubscribe contacts from your email subscription types, or unsubscribe a contact from all email communication. These APIs also provide support for the [Brands add-on](https://knowledge.hubspot.com/branding/associate-assets-with-brands).

<Warning>
  **Please note:**

  Some of the endpoints below provide support for a `businessUnitId` field or query parameter, which you can use if you purchased the [Brands add-on](https://knowledge.hubspot.com/branding/manage-your-brands-with-hubspot-brands). Be aware that business units is the former name for [brands](https://knowledge.hubspot.com/branding/manage-your-brands-with-hubspot-brands), but this change does <u>not</u> impact the API. You should continue using any previous reference to `businessUnitId`. You can get a list of brands in your account using the [brands API](/api-reference/legacy/account/brands/guide).
</Warning>

## Scope requirements

The following scopes are required to use the v4 subscription API endpoints, based on the endpoint you're using:

* `communication_preferences.read`: provides access to fetch subscription type definitions and subscription preferences for a contact.
* `communication_preferences.write`: provides access to update subscription preferences for a contact.
* `communication_preferences.read_write`: provides access to both fetch and update subscription preferences for a contact and fetch all subscription definitions in your account.

The scopes below are required to use the batch subscription endpoints. You must have an ***Marketing Hub** Enterprise* subscription to authorize these scopes for your app.

* `communication_preferences.statuses.batch.read`: provides access to fetch subscription statuses in bulk.
* `communication_preferences.statuses.batch.write`: provides access to manage and update subscription statuses in bulk.

## Get all subscription types

To get a list of all email subscription types in your account, make a `GET` request to `/communication-preferences/v4/definitions`.

If you have the [Brands add-on](/api-reference/legacy/account/brands/guide), you can filter subscription types by brand by including the `businessUnitId` as a query parameter in your request. The default *Account* brand will always use `"businessUnitId": 0`.

The subscription types will be returned within the `results` field of the response.

```json theme={null}
// Example response for GET request to /communication-preferences/v4/definitions
{
  "status": "COMPLETE",
  "results": [
    {
      "businessUnitId": 41857,
      "id": "33583163",
      "name": "Marketing Information",
      "description": "Marketing offers and updates.",
      "purpose": "Marketing",
      "communicationMethod": "Email",
      "isActive": true,
      "isDefault": true,
      "isInternal": false,
      "createdAt": "2022-02-09T21:06:59.247Z",
      "updatedAt": "2022-02-09T21:06:59.247Z"
    },
    {
      "businessUnitId": 0,
      "id": "39644612",
      "name": "New recipe newsletter",
      "description": "Subscription for new recipes and kitchen updates",
      "purpose": "Marketing",
      "communicationMethod": "Email",
      "isActive": true,
      "isDefault": false,
      "isInternal": false,
      "createdAt": "2022-04-14T20:37:03.073Z",
      "updatedAt": "2022-04-14T20:37:03.073Z"
    }
  ]
}
```

You can optionally include the `includeTranslations=true` query parameter in your request to retrieve any subscription translations associated with each definition.

For example, if you made a `GET` request to `/communication-preferences/v4/definitions?includeTranslations=true`, the response would resemble the following:

```json theme={null}
// Example response for GET request to /communication-preferences/v4/definitions with subscription translations included
{
  "status": "COMPLETE",
  "results": [
    {
      "subscriptionTranslations": [
        {
          "subscriptionId": 88249125,
          "languageCode": "ar",
          "name": "test",
          "description": "test",
          "updatedAt": 1724702359758,
          "createdAt": 0
        }
      ],
      "businessUnitId": 0,
      "id": "88249125",
      "name": "test",
      "description": "test",
      "purpose": "",
      "communicationMethod": "",
      "isActive": false,
      "isDefault": false,
      "isInternal": false,
      "createdAt": "2022-12-22T21:06:03.522Z",
      "updatedAt": "2024-08-26T19:59:39.926Z"
    }
  ],
  "startedAt": "2024-08-30T20:17:36.744Z",
  "completedAt": "2024-08-30T20:17:36.753Z"
}
```

## Get subscription preferences for a specific contact

To get the current subscription preferences for a specific contact, make a `GET` request to `/communication-preferences/v4/statuses/{subscriberIdString}?channel=EMAIL` where the `subscriberIdString` is the email address of the contact.

For example, to get the subscription preferences for a contact with an email address of `jdoe@example.com`, you'd make a `GET` request to `/preferences/v4/statuses/jdoe@example.com?channel=EMAIL`.

The response will include a full list of the current subscription preferences for the contact in the `results` field. An example response is included below:

```json theme={null}
// Example response for GET request to /communication-preferences/v4/statuses/jdoe@example.com?channel=EMAIL
{
  "status": "SUCCESS",
  "results": [
    {
      "businessUnitId": 41857,
      "channel": "EMAIL",
      "subscriberIdString": "jdoe@example.com",
      "subscriptionId": 33583163,
      "status": "NOT_SPECIFIED",
      "source": "Not specified",
      "legalBasis": null,
      "legalBasisExplanation": null,
      "setStatusSuccessReason": null,
      "timestamp": "2024-06-05T13:39:29.495Z"
    },
    {
      "businessUnitId": 0,
      "channel": "EMAIL",
      "subscriberIdString": "jdoe@example.com",
      "subscriptionId": 39644612,
      "status": "SUBSCRIBED",
      "source": "Self Service Resubscription",
      "legalBasis": "CONSENT_WITH_NOTICE",
      "legalBasisExplanation": "Contact provided explicit consent via form.",
      "setStatusSuccessReason": null,
      "timestamp": "2023-02-09T20:13:19.046Z"
    }
  ]
}
```

Based on whether the contact explicitly opted in or opted out to a given a subscription, they can have the following `status` for a subscription type:

* `SUBSCRIBED`: contact opted into the subscription type.
* `UNSUBSCRIBED`: contact opted out of the subscription type.
* `NOT_SPECIFIED`: contact hasn't provided opt-in preference for the subscription type.

Learn more about [opt-in consent for email](https://knowledge.hubspot.com/marketing-email/understand-opt-in-consent-for-email).

## Get contacts who unsubscribed from all email communications

Contacts can also opt out of all email communications from your business. To get a list of all contacts who are currently opted out of all email subscription types, make a `POST` request to `/communication-preferences/v4/statuses/batch/unsubscribe-all/read`.

If you have the [Brands add-on](https://knowledge.hubspot.com/branding/manage-your-brands-with-hubspot-brands), you'll see the `wideStatusType: "BUSINESS_UNIT_WIDE"` field in the response. Note that the default *Account* brand will always use `"businessUnitId": 0`.

## Get a specific contact who unsubscribed from all email communications

To check whether a specific contact is unsubscribed from all email subscription types, make a `GET` request to `/communication-preferences/v4/statuses/{subscriberIdString}/unsubscribe-all`, where the subscriberIdString is the email address of the contact.

If you have the [Brands add-on](https://knowledge.hubspot.com/branding/manage-your-brands-with-hubspot-brands), you'll see the `wideStatusType: "BUSINESS_UNIT_WIDE"` field in the response. Note that the default *Account* brand will always use `"businessUnitId": 0`.

For example, to check whether a contact with an email address of `jdoe@example.com` has opted out of all email communications, you'd make a `GET` request to `/communication-preferences/v4/statuses/jdoe@example.com/unsubscribe-all`.

## Update subscription preferences for a specific contact

To update the subscription preferences for a contact, make a `POST` request to `/communication-preferences/v4/statuses/{subscriberIdString}`, where the `subscriberIdString` is the email address of the contact. In the request body, you'll need to include the fields listed the table below:

| Parameter               | Type   | Description                                                                                                                                                                                 |
| ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `subscriptionId`        | Number | The internal ID of the subscription type. You can get a full list of subscription IDs by making a `GET` request to `/communication-preferences/v4/statuses/&#123;subscriberIdString&#125;`. |
| `statusState`           | string | The opt-in or opt-out state that you want to update the contact's subscription to. The possible values are `SUBSCRIBED`, `UNSUBSCRIBED`, or `NOT_SPECIFIED`.                                |
| `legalBasis`            | string | The legal reason for changing the subscriber's status. If you data privacy settings turned on, this field is required, along with the `legalBasisExplanation` field.                        |
| `legalBasisExplanation` | string | An explanation for the legal basis you provided for updating the subscriber status.                                                                                                         |
| `channel`               | string | The channel type for the subscription type. Currently, the only supported channel type is `EMAIL`.                                                                                          |

For example, the request body below would subscribe a contact into the subscription associated with the internal ID of `39644612`. You can fetch a list of all subscription types available to get their IDs by making a `GET` request to `/communication-preferences/v4/definitions`.

```json theme={null}
{
  "subscriptionId": 39644612,
  "statusState": "SUBSCRIBED",
  "legalBasis": "LEGITIMATE_INTEREST_OTHER",
  "legalBasisExplanation": "Contact mentioned that they mistakenly unsubscribed and they'd like to opt back into our newsletter.",
  "channel": "EMAIL"
}
```

## Update a contact's "Opted out of all email" status

To unsubscribe a contact from all email communication in an account or specific business unit (i.e., "Opted out of all"), make a `POST` request to `/communications-preferences/v4/statuses/{subscriberIdString}/unsubscribe-all`, where the `subscriberIdString` is the email address of the contact.

* If you have the [Brands add-on](https://knowledge.hubspot.com/branding/manage-your-brands-with-hubspot-brands), you'll also need to include the `businessUnitId` query parameter in your request. Note that the *Account* brand will always use `"businessUnitId": 0`.
* You can optionally include the `verbose` query parameter to include the details of the updated subscription statuses the contact has unsubscribed from in the response. If you don't use the `verbose` query parameter, the resulting response will be empty.

Following a successful `POST` request, the contact will be unsubscribed from all email communication from your account. If you have the Brands add-on, the contact will be unsubscribed from all email from the brand specified in your request, but will still be eligible to receive email from other brands in your account.

## Using batch subscription endpoints

If you have an ***Marketing Hub*** *Enterprise* account, you can use the bulk subscription endpoints detailed below to fetch and manage subscription statuses for multiple contacts in a single API request.

### Get "Opted out of all communication" subscription status for a list of contacts

To get a list of the *Opted out of all communication* statuses for multiple contacts across an account or for a specific business unit, you can make a `POST` request to `/communication-preferences/v4/statuses/batch/unsubscribe-all/read`, and provide the following query parameters:

* `businessUnitId`: if you have the [Brands add-on](https://knowledge.hubspot.com/branding/manage-your-brands-with-hubspot-brands), you can include this parameter to specify which business unit your contacts will be opted out of all subscription types from. If you don't provide this query parameter in the URL of your request, then all statuses for the account will be returned across all brands.
* `channel`: the communication type to unsubscribe all contacts out of. Currently, the only the supported channel is `EMAIL`.

In the body of your request, provide a list of the email addresses for the associated contacts you want to retrieve using the `inputs` field:

```json theme={null}
// Example request body for unsubscribing multiple contacts from all subscriptions in an account or business unit
{
  "inputs": ["test1@hubspot.com"]
}
```

For example, if you made a `POST` request to `/communication-preferences/v4/statuses/batch/unsubscribe-all/read?channel=EMAIL`, the resulting response would resemble the following:

```json theme={null}
// Example response body for POST request to /communication-preferences/v4/statuses/batch/unsubscribe-all/read
{
  "status": "COMPLETE",
  "results": [
    {
      "subscriberIdString": "test1@husbpot.com",
      "wideStatuses": [
        {
          "businessUnitId": 0,
          "wideStatusType": "PORTAL_WIDE",
          "subscriberIdString": "string",
          "status": "SUBSCRIBED",
          "channel": "EMAIL",
          "timestamp": "2024-08-02T21:37:58.597Z"
        }
      ]
    },
    {
      "subscriberIdString": "test2@hubspot.com",
      "wideStatuses": [
        {
          "businessUnitId": 0,
          "wideStatusType": "PORTAL_WIDE",
          "subscriberIdString": "string",
          "status": "SUBSCRIBED",
          "channel": "EMAIL",
          "timestamp": "2024-05-22T12:151:01.145Z"
        }
      ]
    }
  ],
  "startedAt": "2024-08-02T19:25:35.063Z",
  "completedAt": "2024-08-02T19:25:35.114Z"
}
```

### Get specific subscription statuses for multiple contacts

To get the subscription statuses of multiple contacts in an account or for a specific business unit, make a `POST` request to `/communication-preferences/v4/statuses/batch/read`. If you have the Brands add-on, you can include the `businessUnitId` query parameter to specify which brand your contacts will be opted out of all subscription types from.

In the body of your request, provide a list of the email addresses for the associated contacts you want to opted out of all email communications using the `inputs` field:

```json theme={null}
// Example request body for unsubscribing multiple contacts from all subscriptions in an account or business unit
{
  "inputs": ["test1@hubspot.com"]
}
```

For example, if you made a `POST` request to `/communication-preferences/v4/statuses/batch/read?channel=EMAIL`, the resulting response would resemble the following:

```json theme={null}
// Example response body for POST request to /communication-preferences/v4/statuses/batch/read
{
  "status": "COMPLETE",
  "results": [
    {
      "subscriberIdString": "test@husbpot.com",
      "statuses": [
        {
          "businessUnitId": 0,
          "channel": "EMAIL",
          "subscriberIdString": "test@husbpot.com",
          "subscriptionId": 88221657,
          "status": "UNSUBSCRIBED",
          "source": "Public status API",
          "legalBasis": null,
          "legalBasisExplanation": null,
          "setStatusSuccessReason": null,
          "timestamp": "2024-08-02T19:28:39.390Z"
        }
      ]
    }
  ],
  "startedAt": "2024-08-02T21:50:28.203Z",
  "completedAt": "2024-08-02T21:50:28.245Z"
}
```

### Update the "Opted out of all email" status for multiple contacts

To unsubscribe multiple contacts from all subscription types in an account or for a specific business unit, make a `POST` request to `/communication-preferences/v4/statuses/batch/unsubscribe-all`, and provide the following query parameters in your request:

* `businessUnitId`: if you have the [Brands add-on](https://knowledge.hubspot.com/branding/manage-your-brands-with-hubspot-brands), you can include this parameter to specify which brand your contacts will be opted out of all subscription types from.
* `channel`: the communication type to unsubscribe all contacts out of. Currently, the only the supported channel is `EMAIL`.
* `verbose`: an optional boolean value that controls if the endpoint returns all the subscriptions that were impacted for all contacts.

In the body of your request, provide a list of the email addresses for the associated contacts you want to opted out of all email communications using the `inputs` field:

```json theme={null}
// Example request body for unsubscribing multiple contacts from all subscriptions in an account or business unit
{
  "inputs": ["test1@hubspot.com", "test2@hubspot.com"]
}
```

For example, if you made a `POST` request to `/communication-preferences/v4/statuses/batch/unsubscribe-all?channel=EMAIL&verbose=true`, the resulting response would resemble the following:

```json theme={null}
// Example response for POST request to /communication-preferences/v4/statuses/batch/unsubscribe-all?channel=EMAIL&verbose=true
{
  "status": "COMPLETE",
  "results": [
    {
      "subscriberIdString": "test1@husbpot.com",
      "statuses": [
        {
          "businessUnitId": 0,
          "channel": "EMAIL",
          "subscriberIdString": "test@husbpot.com",
          "subscriptionId": 87914424,
          "status": "UNSUBSCRIBED",
          "source": "Public status API",
          "legalBasis": null,
          "legalBasisExplanation": null,
          "setStatusSuccessReason": "UNSUBSCRIBE_FROM_ALL_OCCURRED",
          "timestamp": "2024-08-02T19:28:39.390Z"
        }
      ]
    },
    {
      "subscriberIdString": "test2@husbpot.com",
      "statuses": [
        {
          "businessUnitId": 0,
          "channel": "EMAIL",
          "subscriberIdString": "test2@husbpot.com",
          "subscriptionId": 87914424,
          "status": "UNSUBSCRIBED",
          "source": "Public status API",
          "legalBasis": null,
          "legalBasisExplanation": null,
          "setStatusSuccessReason": "UNSUBSCRIBE_FROM_ALL_OCCURRED",
          "timestamp": "2024-08-02T19:28:39.390Z"
        }
      ]
    }
  ],
  "startedAt": "2024-08-02T19:25:35.063Z",
  "completedAt": "2024-08-02T19:25:35.114Z"
}
```

### Unsubscribe multiple contacts from specific subscription types

To update the specific subscription types of multiple contacts in an account or for a specific business unit, make a `POST` request to `/communication-preferences/v4/statuses/batch/write`, and provide the details of the subscription updates in the inputs field in the body of your request. For example, the following request body would subscribe the contact with an email address of `test@hubspot.com`[](mailto:test@hubspot.com) to the subscription with an ID of 123:

```json theme={null}
// Example request body for POST request to /communication-preferences/v4/statuses/batch/write
{
  "inputs": [
    {
      "subscriptionId": 123,
      "statusState": "SUBSCRIBED",
      "legalBasis": "LEGITIMATE_INTEREST_PQL",
      "legalBasisExplanation": "string",
      "channel": "EMAIL",
      "subscriberIdString": "test@hubspot.com"
    }
  ]
}
```

For the example request body above, the resulting response would resemble the following:

```json theme={null}
// Example response for POST request to /communication-preferences/v4/statuses/batch/write
{
  "status": "COMPLETE",
  "results": [
    {
      "businessUnitId": 0,
      "channel": "EMAIL",
      "subscriberIdString": "test@husbpot.com",
      "subscriptionId": 63722844,
      "status": "UNSUBSCRIBED",
      "source": "Public status API",
      "legalBasis": null,
      "legalBasisExplanation": null,
      "setStatusSuccessReason": "RESUBSCRIBE_OCCURRED",
      "timestamp": "2024-08-02T21:46:29.110Z"
    }
  ],
  "startedAt": "2024-08-02T21:46:29.088Z",
  "completedAt": "2024-08-02T21:46:29.228Z"
}
```
