Skip to content
postpeg

Threads API

Post to Threads and answer replies through one API

postpeg publishes to Threads through its official API, from the same request that posts to X, Bluesky and the others. Text goes up to 500 characters, and a post can carry up to 20 images and videos, mixed.

  • Publish
  • Schedule
  • Comments
  • Threads117/500

    Small thing we shipped today: cancelling a scheduled post is now one call, and it leaves anything already live alone.

    Ready

The example below, checked against Threads’s rules

Replies to your posts come back through the comments endpoints, so a product can show the conversation under a post and answer it without switching apps.

What you can do on Threads

  • Publish. Publish to Threads now with POST /v1/posts, alone or in the same request as any of the other networks. More on the Posting API.
  • Schedule. Schedule up to a year ahead with scheduled_at, and cancel with DELETE /v1/posts/{id} any time before it goes out. More on the Scheduling API.
  • Comments. List comments on your posts, reply to them, and hide the ones you don’t want shown, with /v1/posts/{id}/comments. More on the Comments API.

Not available on Threads: analytics and direct messages. The coverage table shows what each network supports.

Threads’s rules, checked before sending

A Threads post can have up to 500 characters, counted as people see them (an emoji is one). Media is optional: up to 20 images and videos, mixed. postpeg runs these checks on every request, so a post that won’t fit Threads is refused with a 400 before anything is published, on any network.

Threads limits as postpeg checks them
Max text500 characters
MediaOptional
Images20
Videos20
Images and video togetherYes
Required optionsNone
Connects withHosted OAuth

Connecting Threads accounts

Call POST /v1/accounts/connect with a profile and "platform": "threads", and send the account’s owner to the URL you get back. It’s valid for 15 minutes. They approve access on Threads’s own screen and land on your redirect_url with status=success and the new account_id.

The account owner connects Threads through the hosted OAuth screen. Threads doesn’t provide post analytics, so analytics requests for a Threads target come back as unavailable with the reason.

If Threads ever expires a login, the account turns reconnect_required so you can ask its owner to connect again. More in Profiles and accounts.

Example: a scheduled Threads post

One request, with an Idempotency-Key so a retry on your side never posts twice. To post to Threads and other networks together, add more ids to account_ids.

curl https://api.postpeg.com/v1/posts \
  -H "Authorization: Bearer $POSTPEG_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: threads-example-2026-10-01" \
  -d '{
    "account_ids": [
      "acc_mfz24f7z0x3c6v9b2n5m8q1w4e"
    ],
    "content": "Small thing we shipped today: cancelling a scheduled post is now one call, and it leaves anything already live alone.",
    "media": [],
    "scheduled_at": "2026-10-01T09:00:00Z",
    "platform_options": {}
  }'
Response · 201 Created
{
  "id": "post_mfz2k3v8q1w5e9r4t7y0u2i6o3",
  "content": "Small thing we shipped today: cancelling a scheduled post is now one call, and it leaves anything already live alone.",
  "media": [],
  "platform_options": {},
  "status": "scheduled",
  "scheduled_at": "2026-10-01T09:00:00.000Z",
  "targets": [
    {
      "account_id": "acc_mfz24f7z0x3c6v9b2n5m8q1w4e",
      "platform": "threads",
      "status": "pending",
      "platform_post_id": null,
      "url": null,
      "error": null,
      "attempts": 0,
      "published_at": null
    }
  ],
  "created_at": "2026-09-24T14:02:11.418Z"
}

From 09:00 the target moves through queued and publishing to published with the live url, or to failed with the reason in error. Temporary failures are retried, up to 5 attempts with growing waits. See Publishing for every status.

Questions

How do I schedule a Threads post?
Add scheduled_at (ISO 8601, up to a year ahead) to POST /v1/posts. The post waits as scheduled and goes out within a minute of that time. DELETE /v1/posts/{id} cancels it any time before.
What happens if a post breaks Threads’s rules?
postpeg checks the text (up to 500 characters), the media before anything is sent. A post that doesn’t fit comes back as a 400 with every problem listed in issues, and nothing is published on any network.
Which Threads features does postpeg support?
Publishing, scheduling, comments. Analytics and direct messages are not available on Threads; asking for them returns a 400 naming the feature.
Can I post text-only to Threads?
Yes. Media is optional on Threads. A post needs text, media, or both.
Can I hide replies on Threads?
Yes. POST /v1/posts/{id}/comments/{comment_id}/hide hides a reply, and "hidden": false shows it again.

The same request publishes to all ten networks. Often paired with Threads:

Or see all 10: X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Bluesky and Google Business, in the platform reference.

Send your first post in a few minutes

The 7-day trial has every feature and 3 connected accounts, with no card. The quickstart takes you from a key to a published post.