Add Meta Ad Set
User wants to add a new ad set to an EXISTING campaign.
Common scenarios:
- Audience testing: Same ad format, different targeting/interests per ad set (e.g., “4 ad sets with different interests”)
- Multi-format: Different ad types (image + video + carousel) under one campaign
- Budget split: Same creative, different budgets per audience segment
- Scaling: Adding new audiences/markets to an existing campaign
- Geographic split: Same ad, different locations per ad set
- Dynamic Creative (DCO): Set is_dynamic_creative=true, then use add_meta_ad with image_urls/headlines/primary_texts
CRITICAL: Each create_meta_*_campaign creates a NEW campaign.
To add more ad sets to the SAME campaign, you MUST use this tool.
NEVER call create_meta_*_campaign again for the same campaign.
IMPORTANT: You need a campaign_id from a previously created campaign. Use get_meta_campaign_details first if you don’t have the campaign_id.
Supports all 3 ad types:
image: Provide image_url, existing_image_hash, or asset_bundle_idvideo: Provide video_url or existing_video_idcarousel: Provide cards array (2-10 cards)
Dynamic Creative Optimization (DCO):
- Set
is_dynamic_creative=truewhen creating the ad set - Then use
add_meta_adwithimage_urls(2-10),headlines(up to 5),primary_texts(up to 5) to add a DCO ad - Meta automatically tests all asset combinations and optimizes delivery
- DCO ad sets support only 1 ad — one ad with multiple asset variations
Each ad set has INDEPENDENT: targeting, budget, schedule, pixel/conversion tracking. Shared from campaign: objective, campaign name.
CBO (Advantage Campaign Budget) campaigns: If the campaign uses CBO (campaign_budget_optimization=true when created), you MUST:
- Set
campaign_budget_optimization: trueon this tool call - Do NOT set
budget_daily(budget is managed at campaign level) - Optionally set
daily_min_spend_targetanddaily_spend_capto control spend distribution If the campaign does NOT use CBO,budget_dailyis required as usual.
Workflow:
- Create initial campaign with
create_meta_*_campaign- get campaign_id - Call this tool with the campaign_id for each additional ad set
- Use
add_meta_adto add more ad copies/creatives within any ad set
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 adding a new ad set to an existing campaign
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.

