REST APIGET

Post Analytics

Per-post views, likes, comments, shares, saves, reach and engagement for every post published in a window, sortable by any metric, plus the posts AdaptlyPost found on your accounts but did not publish.

Permission: analytics.read. See Roles and permissions.

Post analytics answer "how did this post do" and "which posts did best". They cover posts published through AdaptlyPost and posts discovered on the connected accounts, so a post made in the native app still shows up with its numbers.

This is performance, not delivery. Post Results tells you whether a post reached each platform; this endpoint tells you what happened after it did.

GET /api/v1/analytics/posts

GET /api/v1/analytics/posts?from=2026-08-01&to=2026-08-31&sortBy=VIEWS&page=1&limit=20
ParameterDescription
from, toThe window, ISO 8601. Posts are selected by publish date. Required
platformsRestrict to these platforms. Repeat the key per value
connectionIdsRestrict to these accounts, by their id from Social Accounts. Repeat the key per value
sortByVIEWS, LIKES, COMMENTS, SHARES, SAVES, CLICKS, IMPRESSIONS, ENGAGEMENT_RATE or PUBLISHED_AT (default). Descending
pagePage number, from 1
limitPosts per page, 1 to 100, default 20
{
  "posts": [
    {
      "id": "ap_01j9xk4",
      "postId": "cmm0z0k3q0000i0r5mxn0hfhs",
      "postPlatformId": "cmm0z0k3u0001i0r5dlbfa440",
      "platform": "INSTAGRAM",
      "connectionId": "conn_ig_001",
      "publishedAt": "2026-08-14T10:00:12.000Z",
      "title": "Plan a week of posts in one sitting",
      "thumbnailUrl": "https://cdn.adaptlypost.com/...",
      "permalink": "https://www.instagram.com/p/...",
      "accountName": "adaptlypost",
      "metrics": {
        "views": 9120,
        "likes": 410,
        "comments": 38,
        "shares": 22,
        "saves": 61,
        "clicks": null,
        "impressions": 10230,
        "reach": 8540,
        "engagementRate": 5.15
      }
    }
  ],
  "total": 42,
  "page": 1,
  "limit": 20,
  "hasMore": true
}
FieldDescription
idAnalytics record id. The only id every tracked post has
postIdThe AdaptlyPost post id, usable with Get Post. Null for a post discovered on the account
postPlatformIdThe platformId from Post Results. Null for discovered posts
connectionIdThe account the post belongs to: its id from Social Accounts
accountNameDisplay name of that account, on every platform
permalinkPublic URL of the post on the platform, when known
metricsLatest captured counters. A metric the platform does not report is null

Google Business Profile posts are listed with null metrics: Google Business Profile reports impressions for the location only, not per post.

GET /api/v1/analytics/top-posts

GET /api/v1/analytics/top-posts?from=2026-08-01&to=2026-08-31&sortBy=ENGAGEMENT_RATE&limit=5

The same rows without pagination: the top limit posts (1 to 50, default 10) ordered by sortBy (default VIEWS). Returns { "posts": [...] }. It takes the same platforms and connectionIds filters.

GET /api/v1/analytics/discovered-posts

GET /api/v1/analytics/discovered-posts?from=2026-08-01&to=2026-08-31&limit=200

Posts found on the connected accounts that AdaptlyPost did not publish, for a read-only calendar. Their metrics are in /analytics/posts; this endpoint returns the post itself.

{
  "posts": [
    {
      "id": "ap_01j9xk9",
      "platform": "TIKTOK",
      "connectionId": "conn_tt_001",
      "publishedAt": "2026-08-20T17:30:00.000Z",
      "text": "Behind the scenes of our launch week",
      "thumbnailUrl": "https://cdn.adaptlypost.com/...",
      "permalink": "https://www.tiktok.com/@adaptlypost/video/...",
      "accountName": "adaptlypost"
    }
  ]
}

limit accepts 1 to 1000 and defaults to 200. Filter it with platforms and connectionIds the same way.

How far back

Connecting an account imports its posts from the last 180 days, and analytics are kept from then on while the account stays connected. A post keeps refreshing for 180 days after it is published, then holds its last numbers. Some platforms expose less history for a given account; Analytics Sync reports the exact horizon per account.