---
title: meta_set_status
description: Pause, resume or archive a Meta campaign, ad set or ad.
---

Ask to pause, resume or archive a campaign, an ad set or an ad on Meta. Resume starts delivery, and so it starts spend.

> Pause the FR BE 25-54 ad set on Northwind.

The agent calls `meta_set_status`, then [`get_mutation_status`](/mcp/tools/get-mutation-status), and you see whether Meta applied the change. [Change what runs on Meta](/mcp/tools/change-what-runs-on-meta) tells why archive is almost permanent.

## Reference

**Available on:** [![Meta](/providers/meta.svg)](https://docs.adcrunch.dev/connect/providers)

Pause, resume, or archive a Meta campaign, ad set, or ad on a live ad account. Runs asynchronously: returns a `workflowId` immediately — call `get_mutation_status` with it to see whether the change succeeded. `ACTIVE` resumes delivery (spends money); `PAUSED` stops it; `ARCHIVED` retires the object and is close to permanent — an archived object leaves Ads Manager's default views and cannot be returned to delivery, so use it only to retire something that should not exist, never to pause it.

### Input

| Argument | Type | Required | Description |
| --- | --- | --- | --- |
| `advertiserId` | string | yes | Advertiser account ID (`acc_<id>`). Must belong to the active organization. |
| `id` | string | yes | The Meta object ID of the campaign, ad set, or ad. |
| `level` | one of `campaign`, `adset`, `ad` | yes | Which level the `id` refers to. |
| `status` | one of `ACTIVE`, `PAUSED`, `ARCHIVED` | yes | `ACTIVE` resumes delivery; `PAUSED` stops it; `ARCHIVED` retires the object near-permanently (it cannot be brought back into delivery). Prefer `PAUSED` unless the object should not exist at all. |

### Output

A successful call returns this object in `structuredContent`.

| Field | Type | Always present | Description |
| --- | --- | --- | --- |
| `workflowId` | string | yes | The id of the change. The change has not reached Meta yet. Give this id to `get_mutation_status` to find out how the change ended. |

### Failure codes

A failed call has `isError` set, and `structuredContent.error` holds one of these codes. [Errors](/mcp/errors) describes the shape of a failed call.

- `not_found`
- `missing_write_access`
- `forbidden`
- `invalid_request`
- `internal_error`

### Scope

The token must hold `mutation:write`. [Auth & scopes](/mcp/auth) lists each scope.

### Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

- **Writes.** The tool can change data.
- **Destructive.** The tool can make a change that you cannot undo. A client can ask you to confirm before it calls the tool.
- **Not idempotent.** A second call with the same arguments can change more.
- **Open world.** The tool reaches a system outside AdCrunch, such as an ad platform.

### Example

The arguments:

```json
{
  "advertiserId": "acc_1485443900032333",
  "id": "120215678901234890",
  "level": "adset",
  "status": "PAUSED"
}
```

The result, in `structuredContent`:

```json
{
  "workflowId": "3f9c2b7e-8a41-4d6e-9b05-c1e7a2d4f860"
}
```
