Skip to main content
A private reply is a DM sent in response to a public comment. The classic use case: someone comments “price?” under your post and you answer in their inbox instead of in public. Want to answer the comment publicly instead? That’s the Comments API (POST /api/v1/comment with fetchedParentCommentId). Want either to happen on its own? That’s Automations. Endpoint: POST /api/v1/conversations/private-reply
fetchedCommentId is the id of a comment you got from the Comments API (GET /api/v1/comment/import/comments). Works for Facebook and Instagram comments. Meta has strict rules here, and we follow them:
  • One private reply per comment. If the first reply went out, sending again returns it with conflict: true instead of messaging the person twice. If the first attempt is still in progress or its outcome is unknown, you get 429 (see Errors). If the platform rejected it, sending again really tries again.
  • Text only. No attachments, buttons, quick replies, or carousels in a private reply.
  • The comment must be recent. Meta accepts private replies up to 7 days after the comment was posted. We check this before sending on Facebook; on Instagram, Meta rejects late replies itself.
  • Facebook: top-level comments only. On Facebook you can’t send a private reply to a reply inside a comment thread.
  • Follow-ups wait for the person. If the reply starts a new conversation, it has platformData.canReply: false: you can send more messages only after they answer, and then the usual 24-hour rule applies. If you already had an open conversation with that person, it keeps its reply window.
Private replies count toward your monthly message limit like any other message. On Instagram they use the account’s comment permissions, so the account needs those in addition to messaging. In the message list, a private reply has source: "PRIVATE_REPLY" and a privateReplyContext telling you which comment and post it was about, so your inbox can show “replied to your comment on…” like Instagram does.