Comments

Get one comment

One comment, with its post and its private reply resolved.

comment_id is Meta's comment id — the same value POST /comments/{comment_id}/private-reply takes, the same value the comment.received webhook delivers, and the same value that appears on the outbound reply message as meta.comment_id. Our own comment id is accepted too.

That is what makes this endpoint the message → comment direction of the reply linkage: a conversation showing a private reply holds only meta.comment_id, and this turns it into the comment text, author, state and post permalink needed to render "↩ replying to …".

🔐 Required Scopes: messages:read

get/api/v1/comments/{comment_id}

Request

  • Base URL: https://api.sendseven.com
  • URL: https://api.sendseven.com/api/v1/comments/{comment_id}
  • Auth: HTTP bearer

Path parameters

comment_idstring required

Meta's comment id (Instagram: numeric; Facebook: {post_id}_{comment_id}), or our own comment id.

Query parameters

include_replyboolean

Hydrate the private-reply message into private_reply.

Response

Successful Response

created_atstring required

When the resource was created (UTC)

updated_atstring nullable

When the resource was last updated (UTC)

idstring required

Unique identifier (UUID)

tenant_idstring required

Tenant this resource belongs to

social_post_idstring required

Our id for the post it was left on.

channel_idstring required

Channel the post belongs to.

external_comment_idstring required

Meta's comment id. This is the value to pass to POST /comments/{comment_id}/private-reply, and the value that appears on the reply message as meta.comment_id.

parent_external_comment_idstring nullable

Meta's id of the comment this one replies to. Null for a top-level comment.

is_replyboolean

True when this comment is a threaded reply to another comment (parent_external_comment_id is set).

author_external_idstring required

The commenter's platform-scoped id (Instagram IGSID / Facebook PSID).

author_usernamestring nullable

The commenter's username/handle, when Meta supplied one.

is_from_ownerboolean

True when the comment is from the connected account itself — most often our own public reply, which Meta echoes back as an ordinary comment. Such comments never count as unanswered and are hidden from listings unless include_owner=true.

contact_idstring nullable

The commenter as a contact in your workspace. Null until they are resolved — which happens the first time we message them.

textstring nullable

The comment text. Null for a media-only comment.

attachment_urlstring nullable

URL of the comment's media, for a photo/sticker/video comment (these carry no text). A Facebook feature — Instagram comments cannot contain media. May be a signed CDN URL that expires.

attachment_typestring nullable

Kind of attachment_url: image (photos and stickers) or video. Null when the comment has no media.

statestring required

pending (unanswered) · auto_replied (a rule or flow answered it) · replied (an agent answered it) · handled (cleared without a private reply) · ignored (our own comment, or dismissed).

commented_atstring required

Meta's timestamp for the comment — the business time.

replied_atstring nullable

When the private reply was sent.

replied_by_user_idstring nullable

The agent who replied, or who marked the comment handled. Null for an automated reply and for API-token callers.

handled_atstring nullable

When the comment was marked handled or ignored.

private_reply_window_expires_atstring nullable

End of Meta's 7-day private-reply window, measured from commented_at. Null when Meta gave no reliable comment timestamp.

private_reply_availableboolean

Whether a private reply can still be sent right now. False is the normal end state of most comments, not an error — see private_reply_unavailable_reason for which one applies.

private_reply_unavailable_reasonstring nullable

Why private_reply_available is false, so the UI can say it rather than just grey out a button:

  • already_replied — a private reply was already sent. Meta permits exactly one per comment, forever. Permanent.
  • window_expired — the 7-day window closed. Permanent.
  • window_unknown — Meta gave no reliable comment timestamp, so we cannot prove the window is open; we fail closed rather than offer a reply that Meta would reject.
  • marked_handled — an agent cleared it without replying. Reversible: reopen it with PATCH /comments/{comment_id}.
  • ignored — our own comment, or dismissed by a rule. Also reversible.

Null when a private reply IS available.

private_reply_message_idstring nullable

messages.id of the private reply that answered this comment — the link from a comment to its reply. Set for a reply we sent ourselves; null for a flow hand-off, where the flow's Send node owns the outbound message.

public_reply_idstring nullable

Meta's comment id of our public reply, when one was posted. Reserved: public replies are not part of the current release.

Changes

No recorded changes to this operation across all 3 revisions of this API.