Zernio
APIFor you
Zernio
APIFor you
API Reference

Pixels & Tracking Tags

Tags

List tracking tagsGETCreate a tracking tagPOSTGet a tracking tagGETUpdate a tracking tagPATCHGet aggregated event statsGETGet tag diagnosticsGET

Conversion Events

List conversion eventsGETCreate a conversion eventPOSTUpdate a conversion eventPATCHDelete a conversion eventDELETE

Sharing

List accounts it is shared withGETShare with an ad accountPOSTStop sharing with an accountDELETE

Users and Partners

List tag usersGETAssign a user to a tagPOSTRemove a user from a tagDELETEList partner businesses of a tagGET

Store Install

Install on a Shopify, WordPress, Wix or Webflow sitePOSTGet store install statusGETRemove from a Shopify, WordPress, Wix or Webflow siteDELETE

Ad URL Tracking Tags

Get ad tracking tagsGETSet ad tracking tagsPATCH
Dashboard
OverviewPlatformsAPI ReferenceResources
Pixels & Tracking Tags

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.


PlatformsMetaGoogleTikTokLinkedInPinterestXOpenAI
GET
/v1/accounts/{accountId}/tracking-tags

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Path Parameters

accountId*string

Ads SocialAccount id (platform metaads or openaiads).

Query Parameters

adAccountId?string

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    }  ]}
Was this page helpful?

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.