meta_ads_ad_sets_update
Update an existing Meta ad set by changing any subset of its settings. Targeting changes are merged onto the current spec by default; returns the updated ad set.
Instructions
Updates one or more settings on an existing ad set. Partial update — only provided fields are changed. Returns the updated ad set. Mutating; not automatically reversible — record before-state if you need to roll back. For status-only transitions prefer meta_ads_ad_sets_pause / meta_ads_ad_sets_enable. Changing targeting is a safe read-modify-write by default: the supplied top-level keys are merged onto the current spec, so keys you omit are preserved. Set replace_targeting to true to replace the whole spec instead (e.g. to clear a facet).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New ad set name. | |
| status | No | New ad set status. Prefer the dedicated pause/enable tools for simple ACTIVE ↔ PAUSED. | |
| end_time | No | New schedule end. Accepts an ISO 8601 datetime string (e.g. '2026-08-01T00:00:00+0900') or a UTC UNIX timestamp integer. Pass 0 to clear the end date so the ad set runs continuously (Meta API convention; only valid with a daily budget — a lifetime budget requires an end date). | |
| ad_set_id | Yes | Ad set ID to update. | |
| targeting | No | Targeting spec changes. Merged onto the current spec by default (top-level keys you omit are kept). Supply only the facets you want to change, e.g. {"age_min": 25}. Set replace_targeting=true to replace the whole spec instead. | |
| account_id | No | Meta Ads account ID in the format 'act_XXXXXXXXXX' (e.g. 'act_1234567890'). Optional — falls back to META_ADS_ACCOUNT_ID from the configured credentials. The leading 'act_' prefix is required. | |
| bid_amount | No | Bid cap in account currency minor units. Set when switching to a capped strategy (LOWEST_COST_WITH_BID_CAP or COST_CAP). | |
| bid_strategy | No | Bid strategy for automatic auction bidding. LOWEST_COST_WITHOUT_CAP is fully automatic (do NOT set bid_amount). LOWEST_COST_WITH_BID_CAP and COST_CAP both require a bid_amount on the ad set (the cap). LOWEST_COST_WITH_MIN_ROAS requires bid_constraints.roas_average_floor on the ad set. When set on the campaign, budgets typically live at the campaign (CBO) level; when set on the ad set, at the ad-set level. | |
| daily_budget | No | New daily budget in account currency minor units. Only valid when the campaign is not using CBO. Mutually exclusive with lifetime_budget. | |
| bid_constraints | No | Bid constraints object. Currently carries roas_average_floor for the LOWEST_COST_WITH_MIN_ROAS strategy. | |
| lifetime_budget | No | New lifetime budget in account currency minor units (cents for USD, yen for JPY). Mutually exclusive with daily_budget. Requires the ad set to have an end_time — supply one in the same call if it is not already set. | |
| promoted_object | No | Conversion target for conversion optimization, e.g. {"pixel_id": "123", "custom_event_type": "LEAD"}. Required for conversion optimization (e.g. OUTCOME_LEADS + optimization_goal OFFSITE_CONVERSIONS optimizing to a pixel event). | |
| replace_targeting | No | When true, `targeting` replaces the entire spec instead of merging onto the current one. Use only to deliberately clear targeting facets. Default false (safe merge). |