Concepts

Paused is the draft

Meta's API has no draft object, so Win & Scale uses PAUSED. Launching creates paused ads; activating them is a separate step that needs the approval grant.

Meta's Marketing API has no draft object. Win & Scale uses PAUSED as the draft: meta_launch_ads creates the campaign, ad set and ads paused, and records the launch. Nothing spends until the launch is activated, and activating is a separate call.

Launch, review, activate

Launch

POST /api/v1/launches (meta_launch_ads) picks or creates the campaign and ad set, uploads each creative from a public https URL or a library upload id, builds the ad creative, and records a launch. Everything is created PAUSED. A launch never needs the approval grant, because the result cannot spend.

Two rules apply at this step:

  • Every Advantage+ enhancement is opted out on every creative. Left alone, Meta rewrites approved copy.
  • Every ad name must be canonical: id__locale__format__persona__angle__concept__variant. A launch with a name that does not parse is refused before anything is uploaded.

The result carries strategyCautions: what in the copy the workspace's strategy does not back: numbers it does not state, claims to confirm, and the voice's person. Show them to the person who reviews the launch.

Review

A person checks the launch in Meta Ads Manager or on the Launches page in the app (/app/ads/launches). meta_list_launches shows each launch's state: created (paused), active or failed.

Activate

POST /api/v1/launches/{launchId}/activate (meta_activate) flips the launch's ads, ad set and campaign to ACTIVE. It spends from the moment it returns.

What changes spend

These are the operations that change what is delivering on Meta. All of them need a key with write scope and the approval grant, and the executor checks the grant again whatever the transport.

OperationRESTMCP tool
Activate a launchPOST /api/v1/launches/{launchId}/activatemeta_activate
Pause a launch's adsPOST /api/v1/launches/{launchId}/pausemeta_pause_launch
Pause or resume one adPOST /api/v1/ads/{adId}/statusmeta_set_ad_status
Change an ad set's placements or age rangePATCH /api/v1/ad-sets/{adSetId}/targetingmeta_update_ad_set_targeting
Rebuild a launch's live creative (CTA, link, text)PATCH /api/v1/launches/{launchId}/copymeta_relink_launch

Three of them carry a cost beyond the spend:

  • Targeting changes are a significant edit. The ad set re-enters Meta's learning phase on every call, so one call carries every change for an ad set.
  • Rebuilding a creative (meta_relink_launch) replaces each ad's creative, because Meta creatives are immutable. Active ads go back through review, the post's likes and comments do not carry over, and learning restarts. Change link and text in one call so the ads are reviewed once.
  • Resuming one ad (meta_set_ad_status with ACTIVE) spends at once. effectiveStatus stays ADSET_PAUSED or CAMPAIGN_PAUSED when a parent is off.

There is no tool or endpoint that edits an existing campaign's budget.

  1. The credential. A key that may launch paused drafts may not, by that alone, put them live. The approval grant is a separate boolean, not a rung above write, so a key that proposes is not automatically a key that approves its own proposal. See Authentication.
  2. The human's word. An agent activates only when the person says so in the conversation, after it has restated what will go live and its daily budget. The same holds for resuming an ad. A request to "launch" is not a request to activate, and a cut verdict is advice: the person picks what to pause.

Tests, briefs, Observations and Conclusions never touch delivery. An instant form spends nothing until an ad opens it. A test lead sent through a form is delivered to the lead webhook like a real one, so it runs whatever your CRM does with a new lead, and it carries the operator's own contact details.

When the trial ends

Once an ad account's free trial has ended and no plan is active, launching, turning ads on and changing live ads are refused until a plan is chosen under Settings → Billing. Pausing, reading and everything else still work.

On this page