postmatic

Metrics and comments

Post and account metrics straight from Meta, and comment management for published posts. Requires extra permissions on the connected account.

Everything on this page is read live from Meta, with a 5-minute cache. Postmatic stores nothing.

Permissions

Accounts need to have been connected with instagram_business_manage_insights (metrics) and instagram_business_manage_comments (comments). Accounts connected before these permissions existed answer 403 PERMISSION_REQUIRED with details.scope: ask the user to reconnect through the same flow as Accounts. GET /v1/connect/integrations shows the permissions in scopes.

Post metrics

GET /v1/analytics?postId=…
curl "https://api.uat.postmatic.dev/v1/analytics?postId=post_…" -H "x-access-key: pm_live_…"
json
{
  "success": true,
  "post": {
    "source": "postmatic", "postId": "post_…", "content": "Novidade no ar.", "publishedAt": "2026-09-09T12:00:00.000Z",
    "aggregated": { "impressions": null, "reach": 80, "likes": 10, "comments": 2, "shares": 1, "saves": 3, "clicks": null, "views": 120, "engagementRate": null },
    "platforms": [{ "platform": "instagram", "accountId": "int_…", "platformPostId": "1790…", "platformPostUrl": "https://www.instagram.com/p/…/", "productType": "REELS",
      "metrics": { "likes": 10, "comments": 2, "shares": 1, "saves": 3, "reach": 80, "views": 120, "totalInteractions": 16, "avgWatchTimeMs": 4500, "totalWatchTimeMs": 540000 }, "fetchedAt": "…" }]
  }
}

impressions, clicks and engagementRate are always null on Instagram (Meta does not expose them). avgWatchTimeMs and totalWatchTimeMs only exist for Reels. force=true skips the cache.

Without postId, the response is a paginated posts (limit up to 20, offset) with the project's published posts. source=platform&accountId=int_… lists the account's recent media, including posts published outside Postmatic (postId: null).

Account metrics

RouteWhat it returns
GET /v1/analytics/instagram/follower-stats?accountId=Current currentFollowers and mediaCount; no history.
GET /v1/analytics/instagram/account-insights?accountId=&metrics=&since=&until=&metricType=reach, views, accounts_engaged, total_interactions (default) and others; up to 90 days; metricType=time_series returns the daily reach series.
GET /v1/analytics/instagram/demographics?accountId=&metric=&breakdown=&timeframe=Age, city, country and gender of the audience; Meta requires a minimum audience and can lag up to 48 h.

Likes

Meta does not expose who liked a post — only the count. There is no way to get that list through the API, with any permission.

Comments

GET /v1/posts/:id/comments
curl "https://api.uat.postmatic.dev/v1/posts/post_…/comments?limit=25" -H "x-access-key: pm_live_…"
json
{
  "success": true, "accountId": "int_…", "platformPostId": "1790…",
  "comments": [{ "id": "1795…", "text": "lindo!", "username": "ana", "timestamp": "2026-09-09T12:00:00+0000", "likeCount": 2, "hidden": false,
    "replies": [{ "id": "1796…", "text": "obrigado!", "username": "acme.brand", "timestamp": "…", "likeCount": 0 }] }],
  "nextCursor": "QVFIU…"
}

username is who wrote the comment. Pass cursor=<nextCursor> for the next page; nextCursor: null means the end. A post with more than one published target requires accountId in the query.

ActionRoute
CommentPOST /v1/posts/:id/comments with { "text": "…" }
ReplyPOST /v1/posts/:id/comments with { "text": "…", "replyToCommentId": "…" } (top-level comments only)
DeleteDELETE /v1/posts/:id/comments/:commentId
Hide / unhidePATCH /v1/posts/:id/comments/:commentId with { "hidden": true } or false

Comments only exist on published posts; in any other state the API answers 409. There is no webhook for new comments: poll the list when you need it.

Metrics and comments — Postmatic Documentation