Skip to main content
POST
Duplicate an ad set

Request contract

  • Method and path: POST /apis/v1/ads/ad-sets/{adSetId}/duplicate
  • Availability: enabled
  • Request URL template: https://api.aisa.one/apis/v1/ads/ad-sets/{adSetId}/duplicate
  • adSetId: path; required
  • connectionId: query; required
  • X-Aisa-Confirm: header; optional
  • Idempotency-Key: header; optional
  • Runtime facts: fe60122939c67dc98a3a6ac6b97bd5c326b526105150c8959304dd2160d4dd09
Complete OpenAPI definition Effective request and pricing declaration (including authentication and referenced schemas):

Cost and request rules

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

X-Aisa-Confirm
enum<string>

Required with the value "spend" when the request can spend money or change spend. Without it the request is refused with 409 confirmation_required, which describes what would happen; nothing is sent to the ad platform.

Available options:
spend
Idempotency-Key
string

Passed to the ad platform integration: a retry with the same key returns the first result instead of acting twice. AIsa never retries a write for you.

Required string length: 1 - 191

Path Parameters

adSetId
string
required

Source platform ad set ID

Query Parameters

connectionId
string
required

The ads connection (adc_...) the request runs on: one of yours, from GET /apis/v1/ads/connections. On a request with a JSON body it may be sent as a top-level body member instead.

Pattern: ^adc_[0-9A-Za-z]+$

Body

application/json
campaignId
string

Destination platform campaign id (defaults to the source's campaign) Must be yours: it is checked through the connection before the request is sent, and an id that is not yours answers not_found.

connectionId
string

The ads connection (adc_...), when not sent as the connectionId query parameter.

Pattern: ^adc_[0-9A-Za-z]+$
deepCopy
boolean
default:true

Copy child ads + creatives

endTime
string<date-time>

Reschedule the copy's end, read like startTime; a date-only end runs to 23:59:59 local.

platform
enum<string>

Filled from the connection when omitted.

Available options:
facebook,
instagram,
tiktok,
meta
renamePrefix
string

Text prepended to each renamed object's name.

renameStrategy
enum<string>

Meta's native rename_strategy values: DEEP_RENAME: renames the copied ad set and its copied ads with renamePrefix / renameSuffix. ONLY_TOP_LEVEL_RENAME: renames only the copied ad set; its ads keep their source names.

Available options:
DEEP_RENAME,
ONLY_TOP_LEVEL_RENAME,
NO_RENAME
renameSuffix
string

Text appended to each renamed object's name.

startTime
string<date-time>

Reschedule the copy's start (ISO 8601). A value without an offset (YYYY-MM-DD, YYYY-MM-DD HH:MM:SS or YYYY-MM-DDTHH:MM:SS) is read in the ad account timezone.

statusOption
enum<string>
default:PAUSED
Available options:
ACTIVE,
PAUSED,
INHERITED_FROM_SOURCE
syncAfter
boolean
default:true

Response

Ad set duplicated

adIdMap
object

Meta only: source ad ID to copied ad ID. Empty when deepCopy is false.

copiedAdIds
string[]

Platform IDs of the copied ads

copiedAdSetId
string

Platform ID of the new ad set

discovery
enum<string>
Available options:
triggered,
skipped,
failed
raw
object

Platform-native response from the copy (TikTok). Absent on Meta, which returns adIdMap instead.