Skip to main content
POST
Duplicate an ad

Request contract

  • Method and path: POST /apis/v1/ads/{adId}/duplicate
  • Availability: enabled
  • Request URL template: https://api.aisa.one/apis/v1/ads/{adId}/duplicate
  • adId: 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

adId
string
required

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
adSetId
string

Destination platform ad set id (defaults to the source's ad set) 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]+$
renamePrefix
string

Text prepended to the copy's name.

renameStrategy
enum<string>

Meta's native rename_strategy values. An ad has no copied children, so DEEP_RENAME and ONLY_TOP_LEVEL_RENAME both rename the copy with renamePrefix / renameSuffix, and NO_RENAME keeps the source name.

Available options:
DEEP_RENAME,
ONLY_TOP_LEVEL_RENAME,
NO_RENAME
renameSuffix
string

Text appended to the copy's name.

reuseSourceCreative
boolean
default:false

Point the copy at the source ad's creative object instead of copying it. The copy keeps the same Facebook post and Instagram media, their existing likes, comments and shares, and the full creative setup (text variations included).

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

Response

Ad duplicated

copiedAdId
string

Platform ID of the new ad

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