Duplicate an ad
Duplicates a single ad via Meta's native POST /{ad-id}/copies. The copy is created
paused. adSetId retargets the copy into another ad set; omitted = the source's own ad
set. Accepts the Zernio ad id or the platform ad id. Sync discovery is triggered
automatically (syncAfter: false to skip).
API key authentication - use your Zernio API key as a Bearer token
In: header
Path Parameters
Zernio ad ID or platform ad ID
Destination platform ad set id (defaults to the source's ad set)
"PAUSED""ACTIVE" | "PAUSED" | "INHERITED_FROM_SOURCE""DEEP_RENAME" | "ONLY_TOP_LEVEL_RENAME" | "NO_RENAME"trueResponse Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adcampaigns.duplicateAd({ path: { adId: 'ad_abc123', }, body: { adSetId: 'adset_abc123', statusOption: 'PAUSED', renameStrategy: 'DEEP_RENAME', },});console.log(data);{
"copiedAdId": "string",
"discovery": "triggered",
"raw": {}
}{
"error": "Unauthorized"
}Duplicate an ad set POST
Duplicates an ad set, including its ads and creatives by default (`deepCopy: true`), via Meta's native `POST /{adset-id}/copies`. The copy is created paused so callers can review before launching. `campaignId` retargets the copy into another campaign; omitted = the source's own campaign. The new hierarchy materializes asynchronously — sync discovery is triggered automatically (`syncAfter: false` to skip).
List a catalog's product sets GET
Lists a Meta product catalog's product sets — the unit a catalog ad promotes. Pass the chosen set as `promotedObject.productSetId` on POST /v1/ads/create with `goal: catalog_sales`.