meta_set_status

Pause, resume or archive a Meta campaign, ad set or ad on a live account. Runs asynchronously and returns a workflowId to poll.

Pauses, resumes or archives a live Meta campaign, ad set or ad. Requires the mutation:write scope, and the ad account must be connected to your organization with write access.

ACTIVE resumes delivery, which spends money. PAUSED stops it. ARCHIVED retires the object.

This changes a live ad account

There is no confirmation step. The call is made as soon as the tool runs, and the change is recorded on your Activity page with your name against it.

ARCHIVED is close to one-way

An archived object leaves Ads Manager’s default views and cannot be returned to delivery. It exists because there is no hard delete — it is how something that should never have been created gets retired, for example a duplicate campaign an agent made by mistake. Prefer PAUSED for anything you might want back. Archive is not a stronger pause.

Input

Field Type Required Description
advertiserId acc_${string} yes The ad account. Must belong to your organization — find it with list_advertisers.
id string yes The Meta object ID of the campaign, ad set or ad.
level 'campaign' | 'adset' | 'ad' yes Which level id refers to.
status 'ACTIVE' | 'PAUSED' | 'ARCHIVED' yes ACTIVE resumes delivery; PAUSED stops it; ARCHIVED retires it near-permanently.

Those three are the only values. There is no hard delete — through this tool or any other. Archiving is deliberately the strongest thing available.

Output

Returns immediately, before the change has been applied:

{ "workflowId": "…" }

The change itself runs in a durable workflow. Poll get_mutation_status with that workflowId to find out whether it succeeded.

Example

“Pause the Retargeting — Broad ad set on the Acme account.”

const { workflowId } = meta_set_status({
  advertiserId: 'acc_123456789',
  id: '23851234567890123',
  level: 'adset',
  status: 'PAUSED',
});

get_mutation_status({ workflowId });
// → { status: 'complete', result: { ok: true, … } }

Errors

  • Advertiser not found for this organization — the account isn’t yours, or doesn’t exist. The two are deliberately indistinguishable. Use list_advertisers.
  • Connected without write access — the Meta connection for that account doesn’t carry ads_management. Reconnect Meta to grant it.
  • provider_error — Meta rejected the change. Returned as a completed mutation with ok: false and Meta’s message, never as a silent retry.
  • 401 Unauthorized / 403 insufficient_scope (needs mutation:write).