---
title: "List comments on a LinkedIn post"
method: GET
path: "/v1/posts/{postId}/comments"
tags: ["Posts"]
---

# List comments on a LinkedIn post

`GET /v1/posts/{postId}/comments`

## Request

- Base URL: `https://api.postzen.dev`
- URL: `https://api.postzen.dev/v1/posts/{postId}/comments`
- Auth: HTTP bearer

Returns the comments LinkedIn holds for a post published through PostZen. LinkedIn only, and organization (company page) posts only. The post's LinkedIn connection must hold `r_organization_social_feed`, which LinkedIn ships with its Community Management API product. Not available yet: company-page posting is waiting on LinkedIn's approval of PostZen's Community Management API access, and until then this endpoint returns `403 orgScopesDisabled`. A personal (member) post always returns `403 personalPostUnsupported`: reading a member's own comments and reactions needs `r_member_social_feed`, which LinkedIn grants to select developers only. Read-only and read-write API keys are accepted.

## Query parameters

- `accountId` string
- `cursor` string
- `limit` integer

## Response `200`

Comments returned.

- LinkedInCommentsResponse
  - `comments` LinkedInComment[], required
    - `id` string, required: LinkedIn's numeric comment id, unique within its thread.
    - `commentUrn` string: Composite comment URN — `urn:li:comment:(<threadUrn>,<id>)` — which every comment-scoped LinkedIn endpoint takes as its path parameter. Absent when LinkedIn omits it.
    - `text` string, required: Comment body as plain text.
    - `authorUrn` string, required: URN of the member or organization that wrote the comment.
    - `authorName` string: Display name of the author, when LinkedIn returns one.
    - `createdAt` string, date-time, required: When the comment was created.
    - `likeCount` integer: Likes on the comment, when LinkedIn returns a count.
    - `replyCount` integer: Replies to the comment, when LinkedIn returns a count.
  - `nextCursor` string: Present when more comments are available. Pass it back as `cursor` to fetch the next page.

## Other responses

- `400`: Invalid request.
- `401`: Missing or invalid API key.
- `403`: The post was authored by a member rather than a company page (`personalPostUnsupported`), the API key cannot access every profile the post targets (`forbidden`), organization engagement reads are disabled on the deployment (`orgScopesDisabled`), or the connection is missing `r_organization_social_feed` (`platformCapabilityMissing`).
- `404`: No post exists with the given id, it is not visible to this API key, or it has no LinkedIn target.
- `409`: The post's LinkedIn target has not published yet, so it has no URN to read engagement for.
- `424`: The LinkedIn account behind the post is no longer connected.
- `429`: LinkedIn rate limited the upstream request. PostZen's own per-account rate limiter also returns `429`, with `{"error":"rate_limited"}` and a `Retry-After` header.
- `500`: Unexpected server error.
- `502`: LinkedIn could not answer the request.

---

[API](https://skmtc.dev/postzen/apis/postzen-public-api.md) · [All operations](https://skmtc.dev/postzen/apis/postzen-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/postzen/apis/postzen-public-api/revisions/40863e3710ec?raw)
