---
title: "Get an analytics dashboard"
method: GET
path: "/v1/analytics/dashboard"
tags: ["Analytics"]
---

# Get an analytics dashboard

`GET /v1/analytics/dashboard`

Everything an analytics dashboard needs in one call: window totals, follower growth, a per-day series, top posts, recent posts and, optionally, the same figures for the previous period.
Daily and total metrics use received attribution: each day holds the engagement that arrived that day, on any post, so `totals` is always the sum of `daily`.
`topPosts` and `recentPosts` list posts published in the window with their lifetime metrics. A post cross-posted to several platforms appears once per platform.
All dates are UTC days. Requires the Analytics add-on.

## Query parameters

- `profileId` string
- `platform` string
- `fromDate` string, date, required
- `toDate` string, date, required
- `compare` 'previous_period'
- `topPosts` integer
- `recentPosts` integer

## Response `200`

Dashboard for the window

- object
  - `dateRange` object, required
    - `fromDate` string, date
    - `toDate` string, date
  - `totals` AnalyticsDashboardTotals, required
    - `impressions` integer
    - `reach` integer
    - `likes` integer
    - `comments` integer
    - `shares` integer
    - `saves` integer
    - `clicks` integer
    - `views` integer
    - `engagementRate` number — Percentage. Likes, comments, shares and saves over impressions, pooled per platform (reach, then views, when a platform has no impressions).
  - `previousTotals` AnalyticsDashboardTotals
    - `impressions` integer
    - `reach` integer
    - `likes` integer
    - `comments` integer
    - `shares` integer
    - `saves` integer
    - `clicks` integer
    - `views` integer
    - `engagementRate` number — Percentage. Likes, comments, shares and saves over impressions, pooled per platform (reach, then views, when a platform has no impressions).
  - `followers` AnalyticsDashboardFollowers, required
    - `current` integer — Live follower count when the window includes today, otherwise the count the window ended on.
    - `gained` integer — Last minus first follower snapshot inside the window. Can be negative.
    - `byAccount` object[]
      - `accountId` string
      - `platform` string
      - `current` integer
      - `gained` integer
  - `previousFollowers` AnalyticsDashboardFollowers
    - `current` integer — Live follower count when the window includes today, otherwise the count the window ended on.
    - `gained` integer — Last minus first follower snapshot inside the window. Can be negative.
    - `byAccount` object[]
      - `accountId` string
      - `platform` string
      - `current` integer
      - `gained` integer
  - `daily` object[], required — One entry per day of the window, days without data included as zeros.
    - `date` string, date
    - `impressions` integer
    - `reach` integer
    - `engagement` integer — Likes, comments, shares and saves received that day.
    - `views` integer
    - `followersGained` integer — Net follower change against the previous snapshot. Can be negative.
  - `topPosts` AnalyticsDashboardPost[], required
    - `postId` string
    - `platform` string
    - `publishedAt` string, date-time
    - `metrics` object — Lifetime metrics of the post on this platform.
      - `impressions` integer
      - `reach` integer
      - `likes` integer
      - `comments` integer
      - `shares` integer
      - `saves` integer
      - `clicks` integer
      - `views` integer
      - `engagementRate` number
  - `recentPosts` AnalyticsDashboardPost[], required
    - `postId` string
    - `platform` string
    - `publishedAt` string, date-time
    - `metrics` object — Lifetime metrics of the post on this platform.
      - `impressions` integer
      - `reach` integer
      - `likes` integer
      - `comments` integer
      - `shares` integer
      - `saves` integer
      - `clicks` integer
      - `views` integer
      - `engagementRate` number
  - `dataAsOf` string, date-time, nullable, required — When the most recently synced account in scope was last synced. Null if none has synced yet.

## Other responses

- `400` — Invalid request
- `401` — Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `402` — Analytics access required. Legacy plans need the Analytics add-on; included by default on usage-based plans.
- `403` — The profile is not accessible, or is beyond your plan's profile limit (PROFILE_OVER_LIMIT).
- `404` — Profile not found or not accessible with this API key.

## Changes

- **2026-10-02** `d556591af3f6` — 8 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
  - …4 more
- **2026-10-02** `42a5a2dd988a` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/analytics/dashboard/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/3eea42782f09?raw)
