List tracking tags
Lists the pixels and other measurement tags an ads account can see, so you can inspect or install them.
Returns the tracking tags (Meta Pixels, or OpenAI Ads pixels) the
connected ads account can see. Pass ?adAccountId=act_... (Meta only)
to scope the list to a single ad account; omit it to list every pixel
reachable by the token (the name is then suffixed with the ad account
it was discovered on, for disambiguation). The list view omits code.
Call getTrackingTag for the install snippet and full detail.
Meta (platform metaads) and OpenAI Ads (platform openaiads); other
platforms return 501. The accountId must be the ads SocialAccount
created by the Ads add-on connect flow (Meta) or the OpenAI Ads
connect flow, not a Facebook/Instagram posting account. Get your Meta
act_... ids from GET /v1/ads/accounts; adAccountId is ignored for
OpenAI Ads (one API key maps to exactly one ad account).
LinkedIn (linkedinads): lists the Insight Tag of each ad account (LinkedIn allows one
per ad account; a tag shared with several accounts appears once). adAccountId is the
numeric ad account id or urn:li:sponsoredAccount:{id}; omit it to scan every active ad
account the connection can see. The tag id IS the partner id the site embeds, so
siteTagId equals id. LinkedIn tags have no name; it is shown as Insight Tag {id}.
Pinterest (platform pinterestads): lists Pinterest tags (conversion tags). adAccountId
is the numeric Pinterest ad account id (no prefix); omit it to walk every ad account the
connection can read (an ad account the user has no Business Access role on is skipped).
id equals siteTagId, the id the site loads with pintrk('load', id).
TikTok (platform tiktokads): TikTok Pixels across the connection's advertisers, or one
advertiser with ?adAccountId=<numeric advertiser_id>. id is the numeric pixel_id,
siteTagId the alphanumeric pixel_code from Events Manager. Connections authorized
before the Pixel Management permission (about 2026-05-28) answer 403 until reconnected.
X Ads (platform xads): one X Pixel per X ad account, so TrackingTag.id is the ad
account id (base36, e.g. 18ce54d4x5t) and siteTagId is the pixel id the site embeds.
Ad accounts without a pixel are left out. adAccountId scopes the list to one ad account.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Path Parameters
Ads SocialAccount id (platform metaads or openaiads).
Query Parameters
Optional, Meta only. Scope to one ad account, e.g. act_123456789. Ignored for OpenAI Ads.
Response Body
application/json
application/json
application/json
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.trackingtags.listTrackingTags({ path: { accountId: 'account_abc123', },});console.log(data);{ "platform": "metaads", "tags": [ { "id": "string", "siteTagId": "string", "events": [ { "id": "string", "name": "string", "type": "string", "siteEvent": "page_view", "siteEventId": "string", "status": "string", "defaultValue": 0, "currency": "string", "clickWindowDays": 0, "viewWindowDays": 0, "urlContains": "string", "alwaysUseDefaultValue": true, "primary": true, "countingType": "one" } ], "name": "string", "platform": "metaads", "kind": "pixel", "status": "active", "code": "string", "lastFiredTime": 0, "isUnavailable": true, "installed": true, "creationTime": 0, "automaticMatchingFields": [ "em" ], "ownerBusinessId": "string", "ownerAdAccountId": "string", "autoTagging": true } ]}Withdraw an invitation awaiting multi-party approval
Cancels an email invitation that Google is still holding for a second admin's approval, so the same address can be invited again right away. Resolves the review `multiPartyAuthReviewId` (from POST /v1/ads/accounts/user-invitations or GET on this path) to `REVOKED` through Google's MultiPartyAuthReviewService. Only the Google user who sent the invitation can withdraw it, and only while no admin has approved or rejected it; otherwise Google refuses and this returns a 400. Without a withdrawal, Google refuses a new invitation to the address until the review is resolved or expires.
Create a tracking tag
Creates a measurement pixel on an ad account and returns the snippet to install on your site. Meta: creates a Meta Pixel on the given ad account (`POST /act_{id}/adspixels`, where `name` is the only input). Returns the created tag including its install `code`. The pixel is owned by the Business Manager that owns the ad account; a pixel created on a personal (non-BM) ad account ends up with `ownerBusinessId: null` and can't be shared with other ad accounts. Creating a Meta pixel does NOT install it. Install the returned `code` snippet on the site, or send events server-side via `POST /v1/ads/conversions`. The check `installed` is derived from `lastFiredTime`. OpenAI Ads: creates an OpenAI pixel AND provisions a Conversions API key for it in the same call (`adAccountId` is required by this endpoint but ignored: one API key maps to exactly one ad account, so there's nothing to select). Returns 422 (`FEATURE_NOT_AVAILABLE`) if the ad account isn't enabled for pixel management; contact your OpenAI partner representative to enable it. There is no delete API for OpenAI pixels. If the pixel is created but the Conversions API key provisioning then fails, the pixel is left live on OpenAI (it cannot be cleaned up) and the error message names the surviving pixel id and warns against retrying, since a retry would create a second, orphaned pixel. NOT idempotent on either platform: each call creates a new pixel (and, for OpenAI, a new Conversions API key plus, with `defaultEventType`, a new conversion event setting). Do not retry blindly on timeout. Meta (platform `metaads`) and OpenAI Ads (platform `openaiads`); other platforms return 501. LinkedIn (`linkedinads`): creates the ad account's Insight Tag (`POST /rest/insightTags`). Idempotent: an ad account holds at most one Insight Tag, so when it already has one that tag is returned and nothing is created. `name` is ignored (LinkedIn tags have no name) and there is no API to delete an Insight Tag. Pinterest (platform `pinterestads`): creates a Pinterest tag on the numeric ad account `adAccountId` (`POST /v5/ad_accounts/{id}/conversion_tags`). Returns the tag with Pinterest's `code` snippet. `automaticMatchingFields` switches on automatic enhanced match for those fields. NOT idempotent and Pinterest has no dry-run and no delete for tags (DELETE on `conversion_tags/{id}` answers 405), so never retry blindly: list first. Google Ads (`googleads`): every Google Ads account has exactly one Google tag (`AW-...`), so this is idempotent. `adAccountId` is the 10-digit customer id. When the account already tracks conversions the existing tag is returned (201) and nothing is created. Otherwise a first WEBPAGE conversion action named `name` (category DEFAULT) is created, which is what switches Google's conversion tracking on, and the tag is returned with it as its first event. TikTok: `POST /pixel/create/` on the advertiser in `adAccountId` (numeric). Names are at most 40 characters with no emoji and must be unique; TikTok refuses a duplicate name (400), which is its only retry guard. TikTok has no pixel delete API. Pinterest's `code` snippet. NOT idempotent and Pinterest has no dry-run and no delete for tags, so never retry blindly: list first. X Ads (platform `xads`): creates the ad account's X Pixel (its UNIVERSAL website tag) with first-party cookies on. `adAccountId` is the X ad account id; `name` is not stored (X pixels have no name). X allows one pixel per ad account and cannot delete one, so an account that already has a pixel answers 409 without writing anything.