Update Meta Ad Set
User wants to edit an existing Meta ad set’s targeting, budget, bid, placements, schedule, or optimization settings.
IMPORTANT: This tool modifies REAL ad sets in Meta Ads Manager. Changes take effect immediately.
This is the primary tool for:
- Changing audience targeting (age, gender, interests, locations)
- Excluding placements (e.g., remove Audience Network)
- Adjusting budgets at the ad set level
- Changing bid amounts
- Pausing/resuming specific ad sets
- Modifying optimization goals
Returns:
- Confirmation of updates applied
- Summary of all changes made
- Ads Manager URL for the ad set
When to use this tool:
- “Change the targeting on my ad set”
- “Exclude Audience Network from placements”
- “Update the budget on this ad set to $50/day”
- “Pause this ad set”
- “Change the age range to 25-45”
- “Add interest targeting for fitness”
- “Exclude custom audience from this ad set”
- “Change bid to $5”
- “Update the optimization goal”
Parameters:
- ad_set_id: The Meta Ad Set ID to update (required)
- status: ACTIVE, PAUSED, DELETED, ARCHIVED (optional)
- name: New ad set name (optional)
- daily_budget: New daily budget in USD (optional, min $1). DO NOT use for CBO campaigns.
- lifetime_budget: New lifetime budget in USD (optional). DO NOT use for CBO campaigns.
- daily_min_spend_target: CBO only — minimum daily spend for this ad set (use INSTEAD of daily_budget)
- daily_spend_cap: CBO only — maximum daily spend cap for this ad set (use INSTEAD of daily_budget)
- lifetime_min_spend_target: CBO only — minimum lifetime spend (for lifetime budget CBO)
- lifetime_spend_cap: CBO only — maximum lifetime spend cap (for lifetime budget CBO)
- bid_amount: New bid amount in USD (optional)
- targeting: New targeting spec as JSON (optional) — for placements, audiences, demographics
- start_time: New start time ISO format (optional)
- end_time: New end time ISO format (optional)
- optimization_goal: REACH, LINK_CLICKS, LANDING_PAGE_VIEWS, OFFSITE_CONVERSIONS, VALUE, etc. (optional)
CBO (Advantage Campaign Budget) campaigns: For ad sets under CBO campaigns, do NOT set daily_budget or lifetime_budget. Use daily_min_spend_target / daily_spend_cap to control spend distribution. Setting daily_budget on a CBO ad set will cause Meta to reject with an error.
At least one update field must be provided.
Targeting Spec Examples:
Exclude Audience Network:
{
"publisher_platforms": ["facebook", "instagram"],
"facebook_positions": ["feed", "stories", "reels"],
"instagram_positions": ["stream", "story", "reels"]
}
Change age and gender:
{
"age_min": 25,
"age_max": 45,
"genders": [1]
}
(genders: 1=male, 2=female, omit for all)
Add interest targeting:
{
"flexible_spec": [{"interests": [{"id": "6003139266461", "name": "Fitness"}]}]
}
Exclude custom audience:
{
"excluded_custom_audiences": [{"id": "AUDIENCE_ID"}]
}
Execution time: 2-5 seconds Modifies: Real ad set in Meta Ads
Workflow:
- Use
list_meta_ad_setsorget_meta_campaign_detailsto find the ad set ID - Use
update_meta_ad_setwith the changes you want to make - Verify changes in Ads Manager
Authorizations
API key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.
Headers
Client-generated UUID to make writes idempotent. Strongly recommended for write tools. A repeat call with the same key returns the cached result instead of re-executing. Example: 550e8400-e29b-41d4-a716-446655440000
Body
All tool arguments are wrapped in an arguments object. The fields accepted inside arguments are listed below — required fields are marked with a red asterisk.
Input schema for updating a Meta ad set
Response
Tool executed successfully. data.text carries the human-readable result (markdown-friendly). data.quota shows your current usage against the plan limit. data.structured appears when the tool emits machine-parseable structured content. data.content appears for tools that return non-text blocks (images, resources).
Returned on HTTP 200. data.text is the primary human-readable output. data.quota is always present for billable calls. data.structured is set only when the tool emits machine-parseable structured content. data.content is set only when the tool emits non-text content blocks.

