User wants to add a new ad set to an EXISTING campaign.
Common scenarios:
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):
is_dynamic_creative=true when creating the ad setadd_meta_ad with image_urls (2-10), headlines (up to 5), primary_texts (up to 5) to add a DCO adEach 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:
campaign_budget_optimization: true on this tool callbudget_daily (budget is managed at campaign level)daily_min_spend_target and daily_spend_cap to control spend distribution
If the campaign does NOT use CBO, budget_daily is required as usual.Workflow:
create_meta_*_campaign - get campaign_idadd_meta_ad to add more ad copies/creatives within any ad setAPI key from https://adspirer.ai/keys. Prefix sk_live_. Treat as a secret — never commit.
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
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
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.