The Threads Reply Management API allows you manage replies to users' own Threads by hiding replies, controlling who can reply, and using reply approvals.
Use the /manage_reply endpoint to hide/unhide any top-level replies. This will automatically hide/unhide all the nested replies. Note: Replies nested deeper than the top-level reply cannot be targeted in isolation to be hidden/unhidden.
curl -X POST \
-F "hide={true | false}" \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.threads.net/v1.0/<THREADS_REPLY_ID>/manage_reply"
{
"success": true
}
Use the reply_control parameter to specify who can reply to a post being created for publishing. This parameter accepts one of the five options: everyone, accounts_you_follow, mentioned_only, parent_post_author_only, and followers_only.
curl -X POST \ -F "media_type=<MEDIA_TYPE>" \ -F "text=<TEXT>" \ -F "reply_control=accounts_you_follow" \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.threads.net/v1.0/me/threads"
{
"id": "1234567890"
}
Use the POST /{threads-user-id}/threads_publish endpoint to publish the media container ID returned in the previous step. It is recommended to wait on average 30 seconds before publishing a Threads media container to give our server enough time to fully process the upload. See the media container status endpoint for more details.
creation_id — Identifier of the Threads media container created from the /threads endpoint.curl -i -X POST \ "https://graph.threads.net/v1.0/<THREADS_USER_ID>/threads_publish?creation_id=<MEDIA_CONTAINER_ID>&access_token=<ACCESS_TOKEN>"
{
"id": "1234567" // Threads Media ID
}
You can create posts with reply approvals enabled using the Threads API. Replies to these posts must be approved to get published and are hidden until then.
You can enable reply approvals on a post by making a request to the POST /{threads-user-id}/threads endpoint to create a media container with the enable_reply_approvals parameter set to true.
curl -i -X POST \ -d "media_type=TEXT" \ -d "text=<TEXT>" \ -d "access_token=<ACCESS_TOKEN>" \ -d "enable_reply_approvals=true" \ "https://graph.threads.net/v1.0/<THREADS_USER_ID>/threads"
{
"id": "<MEDIA_CONTAINER_ID>"
}
Use the returned Threads media container ID to publish your Threads post with reply approvals enabled.
Make a request to the GET /{threads-media-id}/pending_replies endpoint to fetch a paginated list of all pending replies.
The default behavior will return all pending and ignored replies. The approval_status parameter can be used to filter which replies get returned.
| Name | Description |
|---|---|
Boolean | Optional.
|
string | Optional.
Note: The default is to show all replies. |
All the existing fields from existing replies endpoints apply with a new field to fetch pending reply approval status.
| Name | Description |
|---|---|
| Approval status of a pending reply. |
curl -s -X GET \
-d "fields=id,text,topic_tag,timestamp,media_product_type,media_type,media_url,shortcode,thumbnail_url,children,has_replies,root_post,replied_to,is_reply,hide_status,reply_approval_status" \
-d "reverse=false" \
-d "access_token=<ACCESS_TOKEN>"
"https://graph.threads.net/v1.0/<MEDIA_ID>/pending_replies"
{
"data": [
{
"id": "<MEDIA_ID>",
"text": "ignored reply",
"timestamp": "<TIMESTAMP>",
"media_product_type": "THREADS",
"media_type": "TEXT_POST",
"shortcode": "<SHORT_CODE>",
"has_replies": false,
"is_reply": true,
"hide_status": "NOT_HUSHED",
"reply_approval_status": "ignored"
},
{
"id": "<MEDIA_ID>",
"text": "pending reply",
"timestamp": "<TIMESTAMP>",
"media_product_type": "THREADS",
"media_type": "TEXT_POST",
"shortcode": "<SHORT_CODE>",
"has_replies": false,
"is_reply": true,
"hide_status": "NOT_HUSHED",
"reply_approval_status": "pending"
}
],
"paging": {
"cursors": {
"before": "<BEFORE_CURSOR>",
"after": "<AFTER_CURSOR>"
}
}
}
Use the /manage_pending_reply endpoint to approve/ignore any pending replies.
Note: Ignored replies can still be approved.
curl -X POST \
-F "approve={true|false}" \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.threads.net/v1.0/<THREADS_REPLY_ID>/manage_pending_reply"
{
"success": true
}