Skip to content

Update an ad set (budget, status, and/or bid strategy)

Ad-set-level writes. Use this for ABO budget updates, ad-set-scoped pause/resume, and bid-strategy edits. At least one of budget, status, or bidStrategy is required.

Bid strategy compatibility (per Meta's spec):

  • LOWEST_COST_WITHOUT_CAP: no bidAmount, no roasAverageFloor.
  • LOWEST_COST_WITH_BID_CAP / COST_CAP: bidAmount REQUIRED (whole currency units).
  • LOWEST_COST_WITH_MIN_ROAS: roasAverageFloor REQUIRED (decimal multiplier, e.g. 2.0 = 2.0x ROAS).

When updating budget on an ABO campaign: if the parent campaign is CBO, the response is 409 with code BUDGET_LEVEL_MISMATCH — route to PUT /v1/ads/campaigns/{campaignId} instead.

PUT /v1/ads/ad-sets/{adSetId}

Ad-set-level writes. Use this for ABO budget updates, ad-set-scoped pause/resume, and bid-strategy edits. At least one of budget, status, or bidStrategy is required.

Bid strategy compatibility (per Meta's spec):

  • LOWEST_COST_WITHOUT_CAP: no bidAmount, no roasAverageFloor.
  • LOWEST_COST_WITH_BID_CAP / COST_CAP: bidAmount REQUIRED (whole currency units).
  • LOWEST_COST_WITH_MIN_ROAS: roasAverageFloor REQUIRED (decimal multiplier, e.g. 2.0 = 2.0x ROAS).

When updating budget on an ABO campaign: if the parent campaign is CBO, the response is 409 with code BUDGET_LEVEL_MISMATCH — route to PUT /v1/ads/campaigns/{campaignId} instead.

Parameters

  • adSetId (path, string) required — Platform ad set ID

Request body

Content-Type: application/json

  • platform (string) required (enum: facebook, instagram, tiktok, linkedin, pinterest, google, twitter)
  • budget (object) — Omit if not updating budget
  • status (string) (enum: active, paused) — Omit if not toggling delivery state
  • bidStrategy (any) — Ad-set-level bid strategy. Overrides the campaign-level default. Supported on Meta (facebook, instagram) and TikTok. On TikTok the Meta-style enum is mapped to bid_type / bid_price / deep_bid_type aut...
  • bidAmount (number) — Bid cap in WHOLE currency units (USD: 5 = $5.00; JPY: 100 = ¥100). Required when bidStrategy is LOWEST_COST_WITH_BID_CAP or COST_CAP. Internally converted to Meta's smallest-denomination integer.
  • roasAverageFloor (number) — Minimum ROAS as a decimal multiplier (2.0 = 2.0x). Required when bidStrategy is LOWEST_COST_WITH_MIN_ROAS. Sent to Meta as bid_constraints.roas_average_floor × 10000.

Responses

200 — Ad set updated

  • budget ($ref)
  • budgetLevel (string) (enum: adset)
  • status (string) (enum: active, paused)
  • statusUpdated (integer)
  • statusSkipped (integer)
  • bidStrategy ($ref)
  • bidAmount (number)
  • roasAverageFloor (number)

400 — Invalid input

401

404 — Ad set not found

409 — Campaign is CBO — route to /v1/ads/campaigns/{campaignId} instead

501 — bidStrategy not supported on the platform (Meta + TikTok only)