---
title: "Create labels"
method: POST
path: "/ad_accounts/{ad_account_id}/labels"
tags: ["labels"]
---

# Create labels

`POST /ad_accounts/{ad_account_id}/labels`

## Request

- Base URL: `https://api.pinterest.com/v5`
- URL: `https://api.pinterest.com/v5/ad_accounts/{ad_account_id}/labels`
- Auth: OAuth 2
  - Authorization code: `https://www.pinterest.com/oauth/`
  - Token URL: `https://api.pinterest.com/v5/oauth/token` scopes: `ads:write`
- TypeScript: <https://skmtc.dev/pinterest/apis/pinterest-rest-api/docs/ad_accounts/:ad_account_id/labels/post.ts> (a function with typed inputs; its response is checked against the schema)

[Closed beta](/docs/getting-started/using-beta-and-restricted-features/)

Apply one or more labels to a campaign.
Future releases may support labels for other [entities](/docs/key-concepts/pinterest-entities/).
Currently, you can apply brand and custom labels. Future releases will provide more options.

**Note:** You can only apply one brand label to a campaign. You can apply 30 custom labels to a campaign.

## Path parameters

- `ad_account_id` string, required

## Request body

- LabelCreateRequest
  - `labels` LabelCreateItem[], required: Labels that you are applying to the campaign.
    - `label_type` 'BRAND' | 'CUSTOM', required: Label type values.
    - `value` string, required: Label name. 100-character limit.

## Response `200`

The request has succeeded.

- LabelsResponse
  - `errors` LabelError[]: Labels that were not successfully applied.
    - `data` LabelErrorData
      - `id` string
      - `label_type` 'BRAND' | 'CUSTOM' | 'null', nullable: Category for the labeled items. You can apply one BRAND label to a campaign. You can apply 30 CUSTOM labels to a campaign.
      - `status` 'ACTIVE' | 'ARCHIVED' | 'null', nullable: The new status you want to give the label, either `ACTIVE` (in use) or no longer in use (`ARCHIVED`).
      - `value` string: Label name. 100-character limit.
    - `error_messages` string[]
  - `labels` Label[]
    - `id` string, required
    - `label_type` 'BRAND' | 'CUSTOM' | 'null', nullable, required: Category for the labeled items. You can apply one BRAND label to a campaign. You can apply 30 CUSTOM labels to a campaign.
    - `status` 'ACTIVE' | 'ARCHIVED' | 'null', nullable: The new status you want to give the label, either `ACTIVE` (in use) or no longer in use (`ARCHIVED`).
    - `value` string, required: Label name. 100-character limit.

## Other responses

- `400`: The request could not be understood by the server due to unexpected data.
- `401`: Authentication is required and has either failed or not been provided.
- `403`: The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource.
- `404`: The requested resource could not be found on this server.
- `429`: The user has sent too many requests in a given amount of time and is being rate limited.
- `default`: An unexpected error response.

## Changes

- **2026-06-04** (v5) `b698c180678a`: 4 breaking, 5 warning, 10 info
  - the request property `labels/items/label_type` became not nullable
  - removed the enum value `undefined` of the request property `labels/items/label_type`
  - the `errors/items/data/id` response's property type changed from `string` to no type for status `200`
  - the `labels/items/id` response's property type changed from `string` to no type for status `200`
  - …15 more
- **2025-10-16** (v5) `14c297539b64`: 6 breaking, 17 warning, 2 info
  - the response property `errors/items/data/label_type` became nullable for the status `200`
  - the response property `errors/items/data/parent_type` became nullable for the status `200`
  - the response property `errors/items/data/status` became nullable for the status `200`
  - the response property `labels/items/label_type` became nullable for the status `200`
  - …21 more
- **2025-08-14** (v5) `7d64d863909a`: 1 warning, 1 info
  - the `labels/items/value` request property's maxLength was set to `100`
  - added the new `CUSTOM` enum value to the request property `labels/items/label_type`
- **2025-07-16** (v5) `43134ca41f18`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/pinterest/apis/pinterest-rest-api/changes/ad_accounts/:ad_account_id/labels/post.md)

---

[API](https://skmtc.dev/pinterest/apis/pinterest-rest-api.md) - [All operations](https://skmtc.dev/pinterest/apis/pinterest-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pinterest/apis/pinterest-rest-api/revisions/b698c180678a?raw)
