---
title: "Duplicate a Meta campaign (paused)"
method: POST
path: "/api/v1/tools/meta_duplicate_campaign/execute"
tags: ["Meta Ads"]
---

# Duplicate a Meta campaign (paused)

`POST /api/v1/tools/meta_duplicate_campaign/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/meta_duplicate_campaign/execute`
- Auth: HTTP bearer

Copies one campaign with Meta's own duplication, always PAUSED and always renamed with a suffix so the two are never confused. A deep copy brings the ad sets and ads with it; a shallow copy takes the campaign row only.
Use when: the user wants a second version of something that already works — a new audience, a new market, a new flight — without rebuilding it by hand.
Do not use to make a small change to the original: editing is meta_update_campaign, meta_update_ad_set or meta_update_ad. Two nearly identical live campaigns bid against each other.
Do not deep-copy a very large campaign casually: Meta runs it in the background and the copy can take minutes; the tool reports the job rather than inventing ids.
Returns the new campaign id, the copied child ids where Meta returned them, and reads the copy back to confirm it is paused.
The copy never inherits ACTIVE status, whatever the original was.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `ad_account_id` string: Meta ad account id such as act_1234567890. Omit it to use the primary account; if several accounts are active and none is primary the call fails and lists the valid ids.
    - `campaign_id` string, required: The campaign to copy, from meta_list_campaigns.
    - `name_suffix` string: Appended to the copied names. Defaults to " — copy".
    - `deep_copy` boolean: Copy the ad sets and ads too. Defaults to true — a campaign with no ad sets cannot be tested.
    - `start_time` string: Start time for the copied ad sets: YYYY-MM-DD (00:00 in the ad account's time zone) or an ISO timestamp with a UTC offset. Not in the past.
    - `end_time` string: End time for the copied ad sets: YYYY-MM-DD (23:59:59 in the ad account's time zone) or an ISO timestamp with a UTC offset.
    - `idempotency_key` string: Optional caller-supplied key; identical keys never execute twice.
    - `raw_data` boolean: Return compact JSON only (no markdown). Use when you will compute on the result.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
