API Reference › Meta Ads › duplicate_meta_campaign
duplicate_meta_campaign
Meta Ads
Write
User wants to duplicate/copy an existing Meta campaign with all its ad sets, ads, and settings
Endpoint
POST https://api.adspirer.ai/api/v1/tools/duplicate_meta_campaign/execute
Headers
Authorization: Bearer sk_live_... — your Adspirer API key (required)
Content-Type: application/json (required)
Idempotency-Key: <uuid> — recommended for write operations to make retries safe
Description
User wants to duplicate/copy an existing Meta campaign with all its ad sets, ads, and settings.
IMPORTANT: This creates a NEW real campaign in Meta Ads. The duplicate starts in PAUSED status by default for review.
This tool copies the entire campaign structure including:
- Campaign settings (objective, budget strategy)
- All ad sets (targeting, budgets, schedules, promoted_object)
- All ads (creatives, text, CTAs, app_link_spec deep links)
App Campaigns (OUTCOME_APP_PROMOTION) — preserved on duplicate:
- ad-set promoted_object (application_id + object_store_url + custom_event_type)
- creative app_link_spec (deep_link_url_ios / deep_link_url_android)
- creative asset_feed_spec.link_urls.ios_url / android_url (DCO ads)
After duplicating an app campaign, run get_meta_campaign_details on the
new campaign ID to verify the 'App Campaign:' section shows the same
app_id, store URL, and event type as the original.
Returns:
- Original and new campaign IDs
- New campaign status
- Ads Manager URL for the new campaign
- Next steps for review and activation
When to use this tool:
- "Duplicate my campaign"
- "Copy campaign [ID]"
- "Create a copy of this campaign"
- "I want to A/B test with a copy of my campaign"
- "Clone my campaign with different targeting"
Parameters:
- campaign_id: The Meta Campaign ID to duplicate (required)
- new_name: Name for the new campaign (optional, defaults to original + " - Copy")
- status: Status for new campaign — 'PAUSED' (default, recommended) or 'ACTIVE'
Execution time: 10-30 seconds (depends on campaign size)
Creates: New real campaign in Meta Ads
Common use cases:
1. A/B Testing: Duplicate, then modify targeting or creative on the copy
2. Seasonal variants: Copy a proven campaign, update copy and dates
3. New market expansion: Duplicate, change location targeting
4. Budget testing: Copy, change budget levels
Workflow:
1. Use `list_meta_campaigns` to find the campaign ID
2. Use `duplicate_meta_campaign` to create the copy
3. Use `update_meta_campaign` or `update_meta_ad_set` to modify the copy
4. Use `resume_meta_campaign` when ready to launch
Request body
All tool arguments are wrapped in an arguments object.
| Field | Type | Description |
campaign_id | string required | The Meta Campaign ID to duplicate (required) |
new_name | string optional | Name for the new campaign (optional - defaults to original name + ' - Copy') |
status | string optional | Status for the new campaign: 'PAUSED' (default, recommended for review) or 'ACTIVE' default: "PAUSED" |
ad_account_id | string optional | Meta Ad Account ID. Required for multi-account users. Get from get_connections_status. |
Example request
{
"arguments": {
"campaign_id": "<campaign_id>",
"new_name": "string",
"status": "PAUSED",
"ad_account_id": "string"
}
}
Example responses
200 — Success
{
"success": true,
"data": {
"text": "(tool-specific textual output for duplicate_meta_campaign)",
"quota": {
"used": 42,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01"
}
},
"tool": "duplicate_meta_campaign"
}
400 — Tool-level error (bad arguments / multi-account selection)
{
"success": false,
"error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n - Acme Holdings (ad_account_id=\"act_123456789\")\n - Acme EU (ad_account_id=\"act_987654321\")",
"is_error": true,
"tool": "duplicate_meta_campaign"
}
402 — Quota exhausted
{
"success": false,
"error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
"is_error": true,
"tool": "duplicate_meta_campaign",
"quota": {
"used": 150,
"limit": 150,
"tier": "plus",
"period_end": "2026-05-01",
"upgrade_url": "https://adspirer.ai"
}
}
Try it live
Adspirer REST API — get an API key at adspirer.ai/keys ·
adspirer.ai