First comments & threads

PostFuze has no dedicated “first comment” field. Instead, first comments and threads are expressed through the same containers[] array you use for the main post. The first container is the root post; every container after it is published as a native reply to the root once it lands. This single mechanism covers both the “link in the first comment” pattern and full multi-post threads.

How containers map to roles

When you create a post, PostFuze assigns each container a role based on its position. You never set the role yourself — it is derived from order.

PositionRoleWhat it becomes
0mainThe root post.
1first_commentPublished as the first reply on the root post, right after it goes live.
2+threadChained as further replies, each one replying to the previous container, in order.

Each container is a { content, media[] } object, so comments and thread posts support media exactly like the root — you can attach images to a reply just as you would to the main post. A post may have up to 10 containers.

A first comment

The classic use case: keep external links out of the main post (where they can dampen reach) and drop them in the first comment instead. Provide two containers — the second one becomes the first comment.

curl
curl https://api.postfuze.com/api/v1/posts \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": ["acct_linkedin_org", "acct_ig_brand"],
    "containers": [
      { "content": "We just shipped the unified publishing API. Three years of platform quirks, gone. 🧵" },
      { "content": "Full write-up and docs here → https://postfuze.com/blog/launch" }
    ]
  }'

The response echoes both containers with their derived roles. The first_comment container publishes only after the main target lands, using the returned platform_post_id as the reply parent.

201 Created
{
  "id": "post_a91c…",
  "status": "queued",
  "containers": [
    { "id": "ctr_0", "position": 0, "role": "main", "content": "We just shipped the unified publishing API. Three years of platform quirks, gone. 🧵" },
    { "id": "ctr_1", "position": 1, "role": "first_comment", "content": "Full write-up and docs here → https://postfuze.com/blog/launch" }
  ],
  "targets": [
    { "id": "tgt_li", "social_account_id": "acct_linkedin_org", "platform": "linkedin", "status": "queued" },
    { "id": "tgt_ig", "social_account_id": "acct_ig_brand", "platform": "instagram", "status": "queued" }
  ]
}

A thread

Add a third or more container and those become thread posts, each replying to the previous one. This is how you publish an X thread or a Threads chain from a single request — including media on individual thread posts.

curl
curl https://api.postfuze.com/api/v1/posts \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": ["acct_x_main"],
    "containers": [
      { "content": "A thread on how PostFuze publishes a 4-tweet thread from one API call 🧵 (1/4)" },
      { "content": "Container 0 is the root. We publish it, capture the platform_post_id, and reply to it. (2/4)" },
      { "content": "Container 1 replies to the root, container 2 replies to container 1, and so on. (3/4)", "media": [{ "id": "media_diagram" }] },
      { "content": "Every container can carry its own text and media. Up to 10 per post. (4/4)" }
    ]
  }'
201 Created
{
  "id": "post_b73f…",
  "status": "queued",
  "containers": [
    { "id": "ctr_0", "position": 0, "role": "main", "content": "A thread on how PostFuze publishes a 4-tweet thread from one API call 🧵 (1/4)" },
    { "id": "ctr_1", "position": 1, "role": "first_comment", "content": "Container 0 is the root. We publish it, capture the platform_post_id, and reply to it. (2/4)" },
    { "id": "ctr_2", "position": 2, "role": "thread", "content": "Container 1 replies to the root, container 2 replies to container 1, and so on. (3/4)" },
    { "id": "ctr_3", "position": 3, "role": "thread", "content": "Every container can carry its own text and media. Up to 10 per post. (4/4)" }
  ],
  "targets": [
    { "id": "tgt_x", "social_account_id": "acct_x_main", "platform": "x", "status": "queued" }
  ]
}

Note that position 1 is always labelled first_comment even inside a thread — it is the first reply to the root. Positions 2+ are thread. The chaining behaviour is identical either way.

Per-platform support

First comments and threads run per-target, so each account uses its own platform's native reply mechanism. Support depends on whether the platform exposes a comments/replies API.

PlatformFirst commentThreadNotes
X (Twitter)YesYesReplies chain into a native thread.
LinkedInYesNoPosted as a comment on the share.
InstagramYesNoRequires the manage_comments permission on the connected business account.
FacebookYesNoComment on the Page post.
ThreadsYesYesReply-threads are native to the platform.
TikTokNoNoNo publish-time comment API.
YouTubeNoNoNot supported for uploads.
PinterestNoNoNo comments API.
BlueskyYesYesReplies chain as a thread.
Google BusinessNoNoNo comments API.
RedditYesNoPosts a top-level comment on the submission; threads are not supported.

When a target is on a platform that does not support extra containers, the root post still publishes normally — the unsupported containers are simply skipped for that account. Because targets are independent, the same post can publish a full thread on X while posting only the root on Pinterest.

Posting a reply after the fact

Containers cover replies you know about at publish time. To reply to an already-published post later, use the replies endpoint — see Replies.