Appearance
Get post analytics
Returns analytics for posts. With postId, returns a single post. Without it, returns a paginated list with overview stats. Accepts both Zernio Post IDs and External Post IDs (auto-resolved). fromDate defaults to 90 days ago if omitted, max range 366 days. Single post lookups may return 202 (sync pending) or 424 (all platforms failed). For follower stats, use /v1/accounts/follower-stats.
LinkedIn personal accounts: Analytics are only available for posts published through Zernio. LinkedIn's API only returns metrics for posts authored by the authenticated user. Organization/company page analytics work for all posts.
GET /v1/analytics
Returns analytics for posts. With postId, returns a single post. Without it, returns a paginated list with overview stats. Accepts both Zernio Post IDs and External Post IDs (auto-resolved). fromDate defaults to 90 days ago if omitted, max range 366 days. Single post lookups may return 202 (sync pending) or 424 (all platforms failed). For follower stats, use /v1/accounts/follower-stats.
LinkedIn personal accounts: Analytics are only available for posts published through Zernio. LinkedIn's API only returns metrics for posts authored by the authenticated user. Organization/company page analytics work for all posts.
Parameters
postId(query, string) — Returns analytics for a single post. Accepts both Zernio Post IDs and External Post IDs. Zernio IDs are auto-resolved to External Post analytics.platform(query, string) — Filter by platform (default "all")profileId(query, string) — Filter by profile ID (default "all")accountId(query, string) — Filter by social account IDsource(query, string) — Filter by post source: late (posted via Zernio API), external (synced from platform), all (default)fromDate(query, string) — Inclusive lower bound (YYYY-MM-DD). Defaults to 90 days ago if omitted. Max range is 366 days.toDate(query, string) — Inclusive upper bound (YYYY-MM-DD). Defaults to today if omitted.limit(query, integer) — Page size (default 50)page(query, integer) — Page number (default 1)sortBy(query, string) — Sort by date, engagement, or a specific metricorder(query, string) — Sort order
Responses
200 — Analytics result
one of:
postId(string)
latePostId(string) — Original Zernio post ID if scheduled via Zerniostatus(string) (enum: published, failed, partial) — Overall post status. "partial" when some platforms published and others failed.content(string)scheduledFor(string)publishedAt(string)analytics($ref)platformAnalytics(array)platform(string)platformPostUrl(string)isExternal(boolean)syncStatus(string) (enum: synced, pending, partial, unavailable) — Overall sync state across all platformsmessage(string) — Human-readable status message for pending, partial, or failed statesthumbnailUrl(string)mediaType(string) (enum: image, video, carousel, text)mediaItems(array) — All media items for this post. Carousel posts contain one entry per slide.overview($ref)
posts(array)pagination($ref)accounts(array) — Connected social accounts (followerCount and followersLastUpdated only included if user has analytics add-on)hasAnalyticsAccess(boolean) — Whether user has analytics add-on access
202 — Analytics are being synced from the platform (single post lookup only). The response body matches AnalyticsSinglePostResponse with syncStatus "pending" and a message.
postId(string)latePostId(string) — Original Zernio post ID if scheduled via Zerniostatus(string) (enum: published, failed, partial) — Overall post status. "partial" when some platforms published and others failed.content(string)scheduledFor(string)publishedAt(string)analytics($ref)platformAnalytics(array)platform(string)platformPostUrl(string)isExternal(boolean)syncStatus(string) (enum: synced, pending, partial, unavailable) — Overall sync state across all platformsmessage(string) — Human-readable status message for pending, partial, or failed statesthumbnailUrl(string)mediaType(string) (enum: image, video, carousel, text)mediaItems(array) — All media items for this post. Carousel posts contain one entry per slide.
400 — Validation error
error(string)details(object) — Detailed validation errors
401
402 — Analytics access required. Legacy plans need the Analytics add-on; included by default on usage-based plans.
error(string)code(string)
404
424 — Post failed to publish on all platforms. Analytics are unavailable. (single post lookup only)
postId(string)latePostId(string) — Original Zernio post ID if scheduled via Zerniostatus(string) (enum: published, failed, partial) — Overall post status. "partial" when some platforms published and others failed.content(string)scheduledFor(string)publishedAt(string)analytics($ref)platformAnalytics(array)platform(string)platformPostUrl(string)isExternal(boolean)syncStatus(string) (enum: synced, pending, partial, unavailable) — Overall sync state across all platformsmessage(string) — Human-readable status message for pending, partial, or failed statesthumbnailUrl(string)mediaType(string) (enum: image, video, carousel, text)mediaItems(array) — All media items for this post. Carousel posts contain one entry per slide.
500 — Internal server error
error(string)details(object)