/api/v4/social/posts/{postId}/insightsGet post insights and comments
Returns the platform's own engagement payload and comments for one published post on one connected channel.
Parameters
Path
| Name | Type | Required | Description |
|---|---|---|---|
| postId | string | required | Post UUID, the `socialPostId` returned by POST /social/posts. |
Query
| Name | Type | Required | Description | Default |
|---|---|---|---|---|
| socialConnectedChannelId | string | required | UUID of the connection to read insights for, the `id` of a row from the brand's connections list. Insights are per channel, so this is required even when the post targeted one platform. Note the name: this endpoint takes `socialConnectedChannelId`, while disconnect takes `socialProfileConnectedChannelId` for the same ID. | — |
Responses
200The platform's engagement payload and comments. Both fields are JSON strings whose keys are set by the platform, not by Listings API: parse them before reading.
{ "data": { "getPostInsightsAndCommentsForSocialChannel": { "insights": "{\"impressions\": 4820, \"reach\": 3915, \"likes\": 212, \"comments\": 18, \"saved\": 44, \"shares\": 9, \"profile_visits\": 61}", "comments": "[{\"id\": \"17912345678901234\", \"username\": \"marta.builds\", \"text\": \"That oak finish is beautiful. Do you ship?\", \"like_count\": 3, \"timestamp\": \"2026-10-02T15:12:44+0000\"}, {\"id\": \"17912345678905678\", \"username\": \"eastsidehome\", \"text\": \"Stopping by Saturday!\", \"like_count\": 0, \"timestamp\": \"2026-10-02T18:40:02+0000\"}]" } }}401Unauthenticated, missing or invalid API key.
404No post with that ID on this account, or the connection does not belong to the post's brand (`SY95052`).
Returns what the platform reports about one published post on one channel: its engagement metrics and the comments left on it.
Use case: a per-post engagement panel. When a customer opens a published post
in your UI, call GET /social/posts/{postId} for
the channel list, then call this endpoint once per channel with that channel's
id. Parse insights, render the metrics you recognise, and ignore the rest —
that way a platform adding a field never breaks your page.
Use case: surfacing comments that need a reply. Poll this for recently
published posts and route new entries from the parsed comments array into your
own inbox. Note that this endpoint is read-only: replying to a comment is done on
the platform, not through the Listings API.
Notes.
socialConnectedChannelIdis required, and it is the connection's Synupidfrom the brand's connections — not the platform'sreferenceId. Insights are always scoped to one channel, because the numbers come from that platform's API.- The channel must belong to the same brand as the post. Pairing a post with
another brand's connection returns
SY95052. - Only published posts have insights. A post that is still
SCHEDULED, or that failed on this channel, returns empty payloads rather than an error, so checkconnectedChannels[].statuson the post before drawing conclusions. - Metrics are as fresh as the platform makes them, which for most platforms means
a lag of minutes to a few hours after publishing. Poll on a timer rather than
expecting numbers immediately after
connectedChannels[].statusflips toSUCCESS. - Comment volume is capped by what the platform returns in one page; this endpoint does not paginate beyond it.
curl -X GET 'https://listingsapi.com/api/v4/social/posts/<postId>/insights?socialConnectedChannelId=<socialConnectedChannelId>' \ -H "Authorization: API $LISTINGSAPI_KEY"