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.
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 withok: falseand Meta’s message, never as a silent retry.401or403— see Errors, which every tool shares. This one needsmutation:write.