Blog

Social Media Comments API: Read, Reply, Hide, and Delete Comments Across Every Platform (2026)

Erwan Prost

Erwan Prost

· 11 min read

On this page

A social media comments API reads, answers, hides, and deletes the comments under your posts through one request shape instead of one integration per network. Underneath, every platform exposes its own edges: Instagram's GET /{ig-media-id}/comments, Facebook's GET /{post-id}/comments, YouTube's commentThreads.list, LinkedIn's /rest/socialActions/{urn}/comments, and on X a search query, because X ships no replies endpoint at all. SocialAPI.ai puts all of them behind GET /v1/inbox/comments/{postId} and a single POST to reply.

The HTTP is the easy part. What costs weeks is discovering what each network withholds: Facebook strips commenter names unless your app holds a specific Meta feature, YouTube bills a reply at 50 quota units, X charges per read, and TikTok keeps its comment endpoints behind portal approval. This post lists those gaps first, then the endpoints, so you can plan around them before you write the client that calls POST.

Which platforms expose comments through an API

The support matrix below comes from SocialAPI.ai's platform support page, the source of truth each connector page is kept in sync with. Read it column by column. The read column is the one most vendors quote; the like and private-reply columns are where the surprises live.

PlatformReadReplyHideLikeDeletePrivate reply
InstagramYesYesYesNoYesYes
FacebookYesYesYesYesYesYes
ThreadsYesYesConditionalNoConditionalNo
YouTubeYesYesYesNoYesNo
X / TwitterYesYesYesNoConditionalNo
LinkedIn Page (organization)BetaBetaNoBetaBetaNo
LinkedIn (personal profile)NoNoNoNoNoNo
BlueskyYesYesYesNoConditionalNo
TikTokNoNoNoNoNoNo
Google Business ProfileNoNoNoNoNoNo
PinterestNoNoNoNoNoNo
SnapchatNoNoNoNoNoNo

Conditional has a precise meaning per row. On Threads, hide works on replies you did not write and delete on replies you did, and hide stays beta until Meta grants threads_manage_replies. On X and Bluesky, delete applies to your own replies only. LinkedIn Page comments are live in beta on the organization connector, and personal profiles return nothing, because LinkedIn marks r_member_social_feed as Restricted and grants it to select developers only (LinkedIn Comments API, accessed 11 September 2026).

Hide and delete semantics per platform, including what a hidden comment looks like to the person who wrote it, are covered in the comment moderation API post. This one stays on the read and reply side, and on the gaps.

What each platform's comments API withholds

Facebook redacts the commenter. Meta's Business Asset User Profile Access feature is what "allows your app to read the User Fields for users engaging with your business assets such as id, ids_for_business, name, and picture", and it requires App Review and Business Verification (Meta feature reference, accessed 11 September 2026). Without it, in SocialAPI.ai's production data, comments by anyone who is not a Page admin arrive with no from, so author_id and author_name are empty on those rows. Instagram is the opposite: from carries id and username on every comment.

Instagram flattens threads. Meta's reference states that you can only reply to top-level comments, and that replies to a reply are added to the top-level comment (IG Comment replies, accessed 11 September 2026). Comment likes are missing on Instagram Login entirely: the instagram_manage_engagement permission that unlocks them is available to Facebook Login apps only. A private reply to a comment is allowed once per comment, within 7 days, and does not open the usual 24-hour messaging window.

YouTube meters every write. Google's quota table charges 1 unit for commentThreads.list, 50 for comments.insert, 50 for comments.delete, and 50 for comments.setModerationStatus, against a default of 10,000 units per day shared by every endpoint other than search.list and videos.insert (YouTube Data API quota costs, accessed 11 September 2026). Do the division. A project that does nothing else gets 200 replies a day, and every hide or delete costs the same as a reply.

X has no replies endpoint and bills per read. Replies to a post are found by searching the conversation, and recent search covers the last 7 days (X search introduction, accessed 11 September 2026). On pay-per-use, a post read costs $0.005, a post create $0.015, and an interaction deletion $0.010, with post reads capped at 3 million per billing cycle (X API pricing, accessed 11 September 2026). Polling a busy thread is a line item on an invoice.

LinkedIn, TikTok, and Google gate or lack the feature. Organization comments on LinkedIn need r_organization_social_feed and w_organization_social_feed; reading is limited to members holding an ADMINISTRATOR or DIRECT_SPONSORED_CONTENT_POSTER role on the Page, and writing also admits RECRUITING_POSTER. TikTok's comment endpoints exist in its Business API only and require portal approval, so SocialAPI.ai does not expose TikTok comments today. Google discontinued the My Business Q&A API on 3 November 2025 (sunset dates, accessed 11 September 2026); reviews remain, and they are a different resource.

The comments API you buy is only as complete as the permissions the vendor's app has cleared. Ask which Meta features the app holds before you ask about price.

How to read and reply to comments with one endpoint

SocialAPI.ai's inbox guide lists ten comment routes. Two of them do most of the work: one GET for the comments on a post, one POST to answer. The rest are moderation verbs on a single comment.

MethodPathWhat it does
GET/v1/inbox/commentsList posts that received comments, across every connected account
GET/v1/inbox/comments/:postIdList comments on one post
GET/v1/inbox/comments/:postId/:commentId/repliesList replies to one comment
POST/v1/inbox/comments/:postIdReply to a comment on a post (top-level when comment_id is omitted)
DELETE/v1/inbox/comments/:postId/:commentIdDelete a comment
POST / DELETE/v1/inbox/comments/:postId/:commentId/hideHide or unhide a comment
POST / DELETE/v1/inbox/comments/:postId/:commentId/likeLike or unlike (Facebook and LinkedIn Page only)
POST/v1/inbox/comments/:postId/:commentId/private-replySend a DM in reply to a comment (Instagram and Facebook)
bash
# List comments on one post (postId is the platform's post id; account_id is required)
curl "https://api.social-api.ai/v1/inbox/comments/17895695668004550?account_id=acc_01HZ9X3Q4R5M6N7P8V2K0W1J&limit=10" \
  -H "Authorization: Bearer $SOCAPI_KEY"
json
{
  "data": [
    {
      "id": "sapi_cmt_TT974YVQH4RAHNN2HY2DJSNY9111D7LMTP1XXPCVQVL",
      "platform_id": "17895695668004550",
      "platform": "instagram",
      "parent_id": null,
      "text": "Love this!",
      "created_at": "2026-09-10T14:02:11Z",
      "author_id": "17841400000000000",
      "author_name": "Jane Doe",
      "author_username": "janedoe",
      "author_picture": "https://scontent.cdninstagram.com/v/t51.../profile.jpg",
      "is_owner": false,
      "like_count": 3,
      "reply_count": 1,
      "has_replies": true,
      "liked_by_viewer": false,
      "is_hidden": false,
      "capabilities": {
        "can_reply": true,
        "can_delete": true,
        "can_hide": true,
        "can_like": false,
        "can_private_reply": true
      }
    }
  ],
  "pagination": {
    "has_more": false,
    "next_cursor": ""
  }
}

Two id rules keep this simple. :postId is the platform's own post id, the same value you get back from publishing or from GET /v1/posts. :commentId is a SocialAPI.ai interaction id with the sapi_cmt_ prefix; its payload (32 characters or more) encodes platform:platformID in a custom base-33 alphabet and is reversible, so the API recovers the native id with no database lookup (interaction IDs).

bash
# Public reply to a specific comment (account_id is required)
curl -X POST "https://api.social-api.ai/v1/inbox/comments/17895695668004550" \
  -H "Authorization: Bearer $SOCAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "acc_01HZ9X3Q4R5M6N7P8V2K0W1J",
    "comment_id": "sapi_cmt_TT974YVQH4RAHNN2HY2DJSNY9111D7LMTP1XXPCVQVL",
    "text": "Thanks, glad it helped!"
  }'

# Private reply: sends a DM to the commenter instead (Instagram and Facebook)
curl -X POST "https://api.social-api.ai/v1/inbox/comments/17895695668004550/sapi_cmt_TT974YVQH4RAHNN2HY2DJSNY9111D7LMTP1XXPCVQVL/private-reply" \
  -H "Authorization: Bearer $SOCAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"account_id": "acc_01HZ9X3Q4R5M6N7P8V2K0W1J", "text": "Sending you the details by DM."}'

The capabilities block on every comment is the part to wire into your UI. can_like is true on Facebook and LinkedIn Page only. Instagram, YouTube, Threads, and Bluesky answer the like route with 501 and code resource.not_supported; X forwards the call and returns X's own refusal. can_private_reply is true on Instagram and Facebook. The flags are per platform, not per item: ownership conditions on Threads, X, and Bluesky are not reflected row by row, so a hide on someone else's reply can still be refused upstream.

Webhooks or polling for new comments

Polling means calling GET /v1/inbox/comments on a schedule and paging through the posts that received comments since your last cursor. It works, and it spends the upstream platform's budget every time, which matters on YouTube's 10,000 units and X's per-read billing. The rate limits post covers those budgets network by network.

The alternative is the comment.received webhook: SocialAPI.ai POSTs a signed payload to your endpoint when a new comment arrives on any connected account, and its data object is the Interaction shape that GET /v1/accounts/{id}/comments returns, with nested author, content, and metadata, not the flat rows of GET /v1/inbox/comments/{postId}, so budget a second parser (webhooks guide). Instagram events carry a best-effort permalink to the post. platform_post_id is present on Instagram and Facebook events and absent on Threads replies, which carry parent_id inside metadata instead. Treat the field as optional.

Deliveries are signed and retried, so your consumer has to deduplicate on the interaction id. The consumer side, from signature check to idempotent insert, is walked through in the social listening webhooks post.

To be exact about what ships: comments on Instagram, Facebook, Threads, YouTube, X, and Bluesky are live on every plan, LinkedIn Page comments are in beta, and TikTok comments are absent. The managed Meta app already holds instagram_business_manage_comments, so an Instagram integration needs no app review of your own (how that works). Plan limits and pricing live on the unified inbox API page rather than here.

Questions developers ask about comments APIs

Is there a social media comments API that covers Instagram, Facebook, TikTok, and YouTube?
Three of the four, through one endpoint. SocialAPI.ai reads and replies to comments on Instagram, Facebook, and YouTube, plus Threads, X, Bluesky, and LinkedIn Pages in beta, behind GET and POST /v1/inbox/comments/{postId}. TikTok is the exception: its comment endpoints live in the TikTok Business API behind portal approval, and SocialAPI.ai does not expose them today. Any vendor claiming TikTok comment replies on a self-serve plan should be asked which TikTok approval their app holds and when it was granted.
Does the Instagram comments API let me like a comment?
Not on Instagram Login. The permission that unlocks comment likes, instagram_manage_engagement, is available to Facebook Login apps only, so an app connected through Instagram Login has no route to it. SocialAPI.ai therefore returns can_like: false on Instagram comments and answers the like route with 501 resource.not_supported. Facebook Page comments and LinkedIn Page comments do support likes through the same route, and the capabilities object on each comment tells you which case you are in.
How do I get YouTube comments through an API without burning the quota?
Read cheaply, write deliberately. commentThreads.list and comments.list cost 1 unit each, while comments.insert, comments.delete, and comments.setModerationStatus cost 50 each against the 10,000-unit daily default in Google's quota table. List with allThreadsRelatedToChannelId rather than one call per video, page forward with the cursor instead of re-reading, and batch moderation decisions so a rejected comment costs one call. If your product replies at volume, request a quota extension from Google before launch rather than after the first quotaExceeded error.
Why are Facebook comment authors empty in the API response?
Because Meta withholds them server-side. Meta's Business Asset User Profile Access feature governs reading the id, name, and picture of users who engage with your business assets, and Meta grants it only after App Review and Business Verification. In SocialAPI.ai's production data, comments by anyone who is not a Page admin arrive with no author while the Page's own comments keep theirs. The fix sits on the app, so reconnecting the Page or verifying the Page owner's business changes nothing. Instagram comments carry id and username on every row.
Can I build comment moderation into my own platform with an API?
Yes. Hide, unhide, and delete are single calls on /v1/inbox/comments/{postId}/{commentId}, and each comment carries the platform's supported actions in its capabilities object. Instagram, Facebook, and YouTube support hide and delete; Threads, X, and Bluesky support them under conditions; LinkedIn Pages support delete only. The comment moderation API post on this blog covers what a hidden comment looks like to its author on each network and how to pair hiding with a private reply.

Reading comments through one endpoint takes an API key and one GET. Sign up free, or start with the inbox guide. If a platform fact on this page is wrong, tell us and it gets corrected.

Every platform claim above traces to the platform's own documentation, each accessed 11 September 2026. Where a platform does not document something, this post says so instead of substituting a third-party estimate. SocialAPI.ai inbox guide (comment routes) · SocialAPI.ai platform support matrix · SocialAPI.ai interaction IDs · SocialAPI.ai webhooks guide · Meta, Business Asset User Profile Access (feature reference) · Meta, IG Comment replies reference · Google, YouTube Data API quota costs · Google, Business Profile APIs sunset dates · X, API pricing (pay-per-use) · X, search Posts introduction · LinkedIn, Comments API (permissions)

Get started today

Ready to unify your social interactions?

Free tier available · No credit card required · Ships with MCP server

We use essential cookies for security, and analytics cookies with your consent. Privacy Policy.