Zernio
Zernio
API Reference

Accounts & Ops

Accounts

List ad accountsGETUpdate ad account settingsPATCHAd account financesGET

Activity

Ad account change / audit logGETList comments on an adGET

Business Assets

Businesses listGETList TikTok Business CentersGETAd labelsGETA/B tests and lift studiesGET

Custom Conversions

List custom conversionsGETCreate or reuse a custom conversionPOST

Value Rules

List value rule setsGETCreate a value rule setPOSTRead a value rule setGETReplace a value rule setPUTDelete a value rule setDELETE

Budget Scheduling

High demand periods / budget schedulesGETSchedule a budget increasePOST

DSA Compliance

Get ad account DSA defaultsGETList DSA beneficiary/payor suggestionsGET

Other

Add account-level callout extensionsPOSTList account-level callout extensionsGETRemove an account-level callout extensionDELETE
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
Accounts & Ops

List comments on an ad

Returns comments on an ad's underlying creative post. Useful for moderating or analyzing engagement on dark posts (ad creatives that never went live organically), which the regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are not in Zernio's post database.

An ad that runs on both Facebook feed and Instagram feed has two separate underlying posts with separate comment threads (the creative's effective_object_story_id and effective_instagram_media_id). Use the placement query param to pick one; with no param the Instagram side is returned when it exists, otherwise Facebook. The identifiers are read from the ad record (persisted during sync) with a Marketing-API fallback for ads that predate the field.

For Instagram-placed comments, the Instagram account that runs the ad must be connected to Zernio — those comments are read through that account's token. If no connected Instagram account on the profile can read the ad's media, the call returns ads_connection_required (the Facebook side, if any, is still readable via ?placement=facebook).

Meta-only for now. Other ad platforms (TikTok, LinkedIn, Pinterest, Google, X) are not wired to this endpoint and return feature_not_available.

Requires the Ads add-on. Response shape matches GET /v1/inbox/comments/{postId}.

The {adId} path segment accepts any identifier dialect Zernio indexes for the ad: Zernio internal _id (24-char hex), Meta's numeric platformAdId (the value shipped in comment.received webhooks as comment.ad.id), or the creative's effective_object_story_id / effective_instagram_media_id. Caller doesn't need a translation step.


PlatformsMeta
GET
/v1/ads/{adId}/comments

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication - use your Zernio API key as a Bearer token

In: header

Path Parameters

adId*string

Internal Zernio ad ID (ObjectId).

Query Parameters

placement?string

Which side of the ad to return comments for. Omit to default to the Instagram side when present, else Facebook. Returns ad_not_commentable if the ad has no such placement.

Value in

  • "facebook"
  • "instagram"
limit?integer
Range1 <= value <= 100
Default25
cursor?string

Pagination cursor from a previous response.

Response Body

application/json

application/json

application/json

{  "status": "success",  "comments": [    {}  ],  "pagination": {    "hasMore": true,    "cursor": "string"  },  "meta": {    "platform": "facebook",    "placement": "facebook",    "adId": "string",    "platformAdId": "string",    "effectiveStoryId": "string",    "facebookAccountId": "string",    "instagramUserId": "string",    "instagramPermalink": "string",    "instagramAccountId": "string",    "accountId": "string",    "lastUpdated": "2019-08-24T14:15:22Z"  }}
Was this page helpful?

Ad account change / audit log

Account-level audit log from Meta's `/act_X/activities`: who changed what and when (creates, edits, status flips, budget changes...) with Meta's translated event names and the structured before/after in `extra_data`. Rows are returned verbatim. Meta has no server-side per-object filter on this edge, so `objectId` filters the returned page client-side (combine with paging to walk history for one campaign/ad set/ad).

Businesses list

Business Manager portfolios the connected Meta user belongs to (Meta's `/me/businesses`), rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no `adAccountId` is needed. For TikTok Business Centers use `GET /v1/ads/business-centers`.