Skip to main content
GET
/
social
/
post
/
{post_id}
/
comments
Get Social Post Comments
curl --request GET \
  --url https://api.example.com/social/post/{post_id}/comments
Returns comments for a published social post with a fixed normalized shape. Responses are bounded so they are safe to consume from agents and automation jobs. Use the post_id returned by POST /social/post. Comments and nested replies are sorted by created_at descending. Comments without created_at are returned after comments with timestamps. Ties are ordered by platform, then comment_id, then platform_comment_id. Top-level comments are sorted before pagination.

Request

curl -X GET "https://api.mosaic.so/social/post/2d8ca860-f8e0-4f3f-9f2c-337ead6ed91e/comments" \
  -H "Authorization: Bearer mk_your_api_key"

Query Parameters

FieldTypeRequiredDescription
social_connection_idstring (uuid)NoGet comments using one specific connected account. Useful when a post targets multiple accounts on the same platform.
limitintegerNoMaximum comments to return. Defaults to 100; maximum is 1000.
cursorstringNoCursor returned by the previous response.

Platform Support

Comments are supported for x, linkedin, instagram, facebook, tiktok, and youtube.

Comment Object

Every item in comments and every item in comments[].replies has exactly these normalized fields:
FieldTypeDescription
comment_idstring or nullMosaic-normalized comment ID.
platform_comment_idstring or nullNative comment ID from the destination platform.
platformstring or nullOne of x, linkedin, instagram, facebook, tiktok, youtube.
social_connection_idstring or nullConnected account used for the lookup.
textstring or nullComment text.
created_atstring or nullCreation timestamp. null if the source response does not include it.
comment_urlstring or nullDirect comment URL. null if the source response does not include it.
like_countnumber or nullLike count. null if the source response does not include it.
reply_countnumber or nullReply count. null if the source response does not include it.
parent_comment_idstring or nullParent comment ID for replies. null for top-level comments or when the source response does not include it.
authorobject or nullFixed author object. null if the source response does not include author metadata.
mediaarrayMedia attachments on the comment. Always an array.
repliesarrayNested comments. Always an array.
rawobject or nullUnnormalized platform-specific comment payload.
When author is not null, it has exactly these fields: id, name, username, profile_url, and profile_image_url. Each value is a string or null. Every item in media has exactly these fields: type, url, thumbnail_url, mime_type, alt_text, and raw. type is one of image, video, gif, audio, document, or unknown.

Response

{
  "post_id": "2d8ca860-f8e0-4f3f-9f2c-337ead6ed91e",
  "platform": "linkedin",
  "social_connection_id": "7f9388af-26e8-4e68-a52b-6b9a0ef3a017",
  "comments": [
    {
      "comment_id": "comment_123",
      "platform_comment_id": "urn:li:comment:123",
      "platform": "linkedin",
      "social_connection_id": "7f9388af-26e8-4e68-a52b-6b9a0ef3a017",
      "text": "Looks great.",
      "created_at": "2026-03-10T17:12:00Z",
      "comment_url": "https://www.linkedin.com/feed/update/urn:li:activity:7351291821454032896?commentUrn=...",
      "like_count": 12,
      "reply_count": 2,
      "parent_comment_id": null,
      "author": {
        "id": null,
        "name": "Mosaic",
        "username": "mosaic-so",
        "profile_url": "https://www.linkedin.com/company/mosaic-so",
        "profile_image_url": null
      },
      "media": [
        {
          "type": "image",
          "url": "https://media.example.com/comment-image.jpg",
          "thumbnail_url": null,
          "mime_type": null,
          "alt_text": null,
          "raw": {
            "type": "image",
            "url": "https://media.example.com/comment-image.jpg"
          }
        }
      ],
      "replies": [
        {
          "comment_id": "comment_reply_456",
          "platform_comment_id": "urn:li:comment:456",
          "platform": "linkedin",
          "social_connection_id": "7f9388af-26e8-4e68-a52b-6b9a0ef3a017",
          "text": "Thanks!",
          "created_at": "2026-03-10T17:20:00Z",
          "comment_url": null,
          "like_count": null,
          "reply_count": null,
          "parent_comment_id": "comment_123",
          "author": null,
          "media": [],
          "replies": [],
          "raw": {
            "comment": "Thanks!",
            "created": "2026-03-10T17:20:00Z"
          }
        }
      ],
      "raw": {
        "comment": "Looks great.",
        "commentUrn": "urn:li:comment:123",
        "created": "2026-03-10T17:12:00Z",
        "likeCount": 12
      }
    }
  ],
  "pagination": {
    "limit": 100,
    "returned": 1,
    "total_available": 1,
    "has_more": false,
    "next_cursor": null,
    "sort": "created_at_desc"
  },
  "metadata": {
    "status": "success"
  }
}

Pagination

  • Comments are available after the post is published.
  • Normalized comment fields are fixed. Platform-specific fields are only returned inside raw.
  • Image, video, and other comment attachments are normalized into media; the original attachment payload remains in media[].raw.
  • Pagination cursors are based on the sorted response window.
  • This endpoint paginates the comments available in the current response window. It is not a guaranteed complete historical archive for posts with very high comment volume.
  • Some platforms return only a recent comments window, and comment data can update asynchronously.
  • This endpoint reads comments. It does not create, reply to, hide, or delete comments.