Skip to content

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 ID

  • source (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 metric

  • order (query, string) — Sort order

Responses

200 — Analytics result

one of:

    • postId (string)
  • latePostId (string) — Original Zernio post ID if scheduled via Zernio
  • status (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 platforms
  • message (string) — Human-readable status message for pending, partial, or failed states
  • thumbnailUrl (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 Zernio
  • status (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 platforms
  • message (string) — Human-readable status message for pending, partial, or failed states
  • thumbnailUrl (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 Zernio
  • status (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 platforms
  • message (string) — Human-readable status message for pending, partial, or failed states
  • thumbnailUrl (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)