List commented posts
Returns posts with comment counts from all connected accounts. Aggregates data across multiple accounts.
For users with the Ads add-on (Metronome plans always qualify), the user's Meta ads
(boosted/dark posts) are included too. There's one row per (ad, placement-with-comments):
an ad that runs on both Facebook feed and Instagram feed produces up to two rows (the
Page dark post and the IG media have separate comment threads), each flagged
isAd: true with adId and placement (id is {adId}:{placement}). Use
?platform=metaads to return only ad rows; passing facebook/instagram returns
organic posts only (no ads); omitting platform returns both. Fetch a row's thread
from GET /v1/ads/{adId}/comments?placement={placement}. Ad comment counts are read with
the Marketing API token (Facebook side) or the connected Instagram account's token
(Instagram side); a row whose count can't be read is omitted.
Pagination walks each account's platform listing. Following nextCursor reaches past
the first page on Facebook, Instagram, Threads, LinkedIn and YouTube, since they are
the platforms that support a server-side date window; on the others the listing stops
at its first page. Cursor pagination is only coherent for the default sort
(sortBy=date, sortOrder=desc): with sortOrder=asc, or with sortBy=comments,
the cursor filter does not match the sort order and the second page is unreliable.
nextCursor is opaque: pass it back verbatim, never construct or parse it, its
composition may change without notice. Because each page re-queries a live window,
results can still shift between requests, so dedupe by id on the client.
commentCount semantics differ by platform: YouTube's includes replies, Facebook's counts
top-level comments only.
API key authentication - use your Zernio API key as a Bearer token
In: header
Query Parameters
Filter by profile ID
Filter by platform. metaads is a synthetic value meaning the user's ads (boosted/dark posts) only; facebook/instagram return organic posts only.
"facebook" | "instagram" | "twitter" | "bluesky" | "threads" | "youtube" | "linkedin" | "reddit" | "metaads"Minimum comment count
0 <= valuePosts created after this date
date-timeSort field
"date""date" | "comments"Sort order
"desc""asc" | "desc"501 <= value <= 100Filter by specific social account ID
Response Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.comments.listInboxComments();console.log(data);{
"data": [
{
"id": "string",
"platform": "string",
"accountId": "string",
"accountUsername": "string",
"content": "string",
"picture": "string",
"permalink": "string",
"createdTime": "2019-08-24T14:15:22Z",
"commentCount": 0,
"likeCount": 0,
"cid": "string",
"subreddit": "string",
"isAd": true,
"adId": "string",
"placement": "facebook"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "string"
},
"meta": {
"accountsQueried": 0,
"accountsFailed": 0,
"failedAccounts": [
{
"accountId": "string",
"accountUsername": "string",
"platform": "string",
"error": "string",
"code": "string",
"retryAfter": 0
}
],
"lastUpdated": "2019-08-24T14:15:22Z"
}
}{
"error": "Unauthorized"
}Resolve message attachment GET
Resolve one attachment on a message to a media url that works right now. Instagram and Facebook sign DM media urls per request and expire them, so the `url` on a message is a snapshot: it works when you read the message and stops working later. This endpoint checks the stored url and, when it has gone stale, re-mints the message's media from Meta and persists it before answering. The message id never expires, so this URL is the one to store — it is returned on each attachment as `refreshUrl`. By default it responds `302` to the live media url, so it can be used directly as an `<img src>` on a browser session. API-key integrators should pass `?format=json` and read `url` off the body, since a browser cannot attach an Authorization header to an image request. Only Instagram and Facebook media can be re-minted. On other platforms the stored url is returned as-is when it still resolves, and `404` otherwise.
Get post comments GET
Fetch comments for a specific post. Requires accountId query parameter. On Facebook and Instagram, passing a COMMENT id as `postId` is also supported and returns that comment's replies instead of the post's top-level comments. This is not available on YouTube, where `postId` must be a video id.