Skip to Content
Tool referenceCreate ad sets (batch)

Create ad sets (batch) (adsap_create_ad_sets)

Platform: Meta · Read or write: Write · Plan: All plans · Consumes a task: Yes · Preview supported: Yes

What it does

Creates one or more ad sets under an existing Meta campaign, up to 20 in one call. Each ad set carries its own targeting, placements, optimization goal, budget and schedule. Ad sets start paused. Ask for a preview first: the copilot validates every ad set and shows a launch review card where you confirm and activate.

Parameters

Descriptions are shortened from the tool schema. Your assistant sees the full text.

NameTypeRequiredDescription
campaign_idstringYesParent campaign ID. Call list_campaigns first if needed.
campaign_objectiveone of OUTCOME_SALES, OUTCOME_LEADS, OUTCOME_AWARENESS, OUTCOME_TRAFFIC, OUTCOME_ENGAGEMENT, OUTCOME_APP_PROMOTIONNoParent campaign’s objective. Pass it (e.g. from adsap_create_campaign’s response) when the campaign was created recently and may not be cached yet. If omitted, resolved from cache; an unresolvable objective fails with guidance.
ad_account_idstringNoTarget ad account. Defaults to user’s primary account.
ad_setsarray of objectYesArray of ad set definitions. Max 20 per call.
ad_sets[].namestringYesAd set name.
ad_sets[].daily_budgetnumberNoDaily budget in cents.
ad_sets[].lifetime_budgetnumberNoLifetime budget in cents.
ad_sets[].daily_min_spend_targetnumberNoMin daily spend in cents.
ad_sets[].daily_spend_capnumberNoMax daily spend in cents.
ad_sets[].start_timestringNoISO 8601 start time UTC.
ad_sets[].end_timestringNoISO 8601 end time UTC.
ad_sets[].optimization_goalone of OFFSITE_CONVERSIONS, LINK_CLICKS, IMPRESSIONS, REACH, LANDING_PAGE_VIEWS, LEAD_GENERATION, VALUE, APP_INSTALLS and 8 moreYesOptimization goal for ad delivery. PROFILE_VISIT (traffic) / PROFILE_AND_PAGE_ENGAGEMENT (engagement) drive Instagram profile / Facebook Page visits: pair with an INSTAGRAM_PROFILE / FACEBOOK_PAGE / INSTAGRAM_PROFILE_AND_FACEBOOK_PAGE destination_type and a page_id; not available on Special Ad Category campaigns. AD_RECALL_LIFT / TWO_SECOND_CONTINUOUS_VIDEO_VIEWS are Awareness goals (TWO_SECOND also for Engagement + ON_VIDEO).
ad_sets[].billing_eventone of IMPRESSIONS, LINK_CLICKSNo
ad_sets[].bid_strategyone of LOWEST_COST_WITHOUT_CAP, COST_CAP, BID_CAP, MINIMUM_ROASNo
ad_sets[].bid_amountnumberNoBid cap in cents.
ad_sets[].roas_targetnumberNoROAS target e.g. 2.5.
ad_sets[].frequency_control_specsobjectNoFrequency cap (hard ceiling). Only supported for REACH and THRUPLAY optimization goals. REACH requires a cap: Meta defaults to 2 impressions per 7 days when omitted.
ad_sets[].destination_typeone of WEBSITE, APP, ON_AD, WEBSITE_AND_LEAD_FORM, ON_PAGE, ON_VIDEO, ON_POST, INSTAGRAM_PROFILE and 2 moreNoWhere users land after clicking. Default WEBSITE. APP is only valid on OUTCOME_APP_PROMOTION campaigns.
ad_sets[].promoted_objectobjectNo
ad_sets[].attribution_specobjectNo
ad_sets[].pixel_idstringNo
ad_sets[].conversion_eventstringNo
ad_sets[].page_idstringNo
ad_sets[].instagram_user_idstringNo
ad_sets[].advantage_audiencebooleanNoAdvantage+ audience (targeting_automation.advantage_audience). Default false. For App promotion, true + broad geo-only targeting + automatic placements is Meta’s modern Advantage+ App setup (legacy smart_promotion_type is dead: Meta derives advantage_state from these settings).
ad_sets[].saved_audience_idstringNoUse a SAVED AUDIENCE instead of manual targeting (mirrors the web UI’s Saved Audience picker). When set, the backend takes the entire targeting spec (geo/age/gender/audiences) from the saved audience and IGNORES the targeting object and manual… Get ids from adsap_list_custom_audiences with type_filter SAVED.
ad_sets[].targetingobjectNoManual targeting. Required unless saved_audience_id is set (in which case it is ignored).
ad_sets[].placementsobjectNoPlacement targeting. Omit entirely (or set use_advantage_placements true) for Advantage+ automatic placements (recommended). Set use_advantage_placements false and provide positions for manual placements.
ad_sets[].statusone of PAUSED, ACTIVENo
dry_runbooleanNoPreview only: the request is validated and the resolved payload returned, nothing is created or changed.
idempotency_keystringNoUnique key to prevent duplicate creation from retries.

Example prompts

  • “Add an ad set to the Summer Sale campaign targeting women 25 to 45 in the US, optimized for purchases, $30 a day.”
  • “Create three ad sets under this campaign, one each for the UK, Germany and France, same interests, 20 EUR daily each.”
  • “Preview a lead ad set with Instant Forms as the destination before creating it.”

Notes

Messaging, calls, event responses, reminders and shop destinations are not supported yet. For those, use Meta Ads Manager. App promotion ad sets need the app store URL and an app in Live mode.

Guide

Read Creating an ad set for the workflow around this tool, and the Tool reference for every tool.

Last updated on