---
title: "Change labels of many campaigns"
type: reference
method: POST
path: /rest-api/campaigns/labels.do
tag: "Campaigns"
---

# Change labels of many campaigns

`POST https://YOUR-NETWORK-DOMAIN/rest-api/campaigns/labels.do`

Applies one label change to up to 500 campaigns in one call: ADD appends the labels, OVERWRITE replaces the campaign's labels with them, REMOVE takes them off and CLEAR removes every label (labels is then ignored). Label names that do not exist yet are created when the caller holds the Create Labels permission, otherwise the call is a 400 naming them. Campaigns whose labels would not change are skipped as 'unchanged', deleted or unknown ids as 'deleted' / 'not-found'. The response lists changed ids and skipped {id, reason} pairs. The batch is all-or-nothing on permissions: without the Campaign Labels permission, or if any campaign's advertiser is outside the caller's UPDATE share, nothing changes.

## Form params

| Name | Type | Required | Example | Description |
|---|---|---|---|---|
| `ids` | array<integer> | yes | `2001` | Campaign IDs to change, 1 to 500 |
| `labels` | array<string> | no | `premium` | Label names, comma-separated or repeated |
| `labelUpdateType` | string | no | `ADD` | ADD (default), OVERWRITE, REMOVE or CLEAR |

## Responses

- `200` — Batch applied
- `400` — No ids or more than 500, no labels for ADD / OVERWRITE / REMOVE, or a new label the caller may not create
- `401` — Authentication error
- `403` — Not enough permissions for the whole batch
- `404` — None of the ids names an existing campaign

## Example request

```bash
curl --request POST \
  --url 'https://YOUR-NETWORK-DOMAIN/rest-api/campaigns/labels.do' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'ids=2001' \
  --data-urlencode 'labels=premium' \
  --data-urlencode 'labelUpdateType=ADD'
```

Source: https://epom.com/ad-server/docs/api/campaigns/post-campaigns-labels