---
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. AdCrunch checks that the object is in the ad account of the advertiser, and it keeps the status that the change replaces.

> 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, and to get the status that it replaced as `priorValue`. AdCrunch refuses an object that is not in this ad account with `not_found`. `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, digits only. |
| `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`
- `provider_not_connected`
- `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"
}
```
