Set ad tracking tags
Unified update. Send only the fields for the ad's platform:
- Meta:
urlTags(array of {key,value}). Meta creatives are immutable, so this rebuilds the creative and repoints the ad. By DEFAULT we PRESERVE the existing creative verbatim (re-post its object_story_spec + the new url_tags, reusing the image), so you sendurlTagsALONE — no need to read back headline/body/CTA.creative(headline, body, callToAction, linkUrl, imageUrl) is OPTIONAL and only needed to rebuild explicitly, or for SHARE / page-post / dark / asset_feed creatives whose object_story_spec Meta strips (those return 422 asking forcreative). - Google:
trackingUrlTemplateand/orfinalUrlSuffix(full template strings; account quota applies). - LinkedIn:
dynamicValueParametersand/orcustomValueParameters(campaign-level Dynamic UTM).
API key authentication - use your Zernio API key as a Bearer token
In: header
Path Parameters
Meta only. Click-URL params appended to a freshly-rebuilt creative.
Meta only. OPTIONAL — omit to preserve the existing creative verbatim (default). Provide it only to rebuild the creative explicitly, or for creatives whose object_story_spec Meta strips.
Google only. Full tracking template (must contain {lpurl}).
Google only. Parse-only key=value params.
LinkedIn only. key -> dynamic value enum (CAMPAIGN_ID, CAMPAIGN_NAME, CREATIVE_ID, ...).
LinkedIn only. key -> static value.
Response Body
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.ads.updateAdTrackingTags({ path: { adId: 'ad_abc123', }, body: { urlTags: [ { key: 'tok_abc123', value: 'string', }, ], creative: { headline: 'string', body: 'Hello, world!', callToAction: 'string', linkUrl: 'https://example.com', imageUrl: 'https://example.com', }, trackingUrlTemplate: 'string', },});console.log(data);{
"error": "Unauthorized"
}Get ad tracking tags GET
Unified read of the platform's native click-URL tracking params. - Meta (facebook/instagram): the creative's `url_tags` (and template_url_spec). - Google (googleads): the campaign's `trackingUrlTemplate` + `finalUrlSuffix`. Subject to the Google Ads API access-tier daily quota; bulk audits need Standard access. - LinkedIn (linkedinads): the campaign's Dynamic UTM `dynamicValueParameters` + `customValueParameters`. Returns 405 for platforms without a click-URL tracking surface (TikTok, X, Pinterest).
List campaigns GET
Returns campaigns as virtual aggregations over ad documents grouped by platform campaign ID. Metrics (spend, impressions, clicks, etc.) are summed across all ads in each campaign. Campaign status is derived from child ad statuses (active > pending_review > paused > error > completed > cancelled > rejected).