Docs
Docs/Platforms/Threads (after Meta approval)

Threads

Posting to Threads through Octopost: 500 characters, images and carousels, reply chains. Opens to customers after Meta approves the Octopost app.

Status: available after Meta approval. Threads publishing works, but Meta has not yet approved the Octopost app, so customers can't connect a Threads account yet. This page describes how it will work.

Threads supports text posts, images, videos, carousels, and multi-post reply threads. Octopost handles Meta's two-step container publishing, processing status polling, and reply threading automatically: you just send us your content.

Content Limits#

ConstraintLimit
Post text500 characters
Carousel items10 images or videos
Image formatsJPEG, PNG
Video formatsMP4, MOV
Media URLsMust be publicly accessible

Good to Know#

  • URLs count toward the 500-character limit. Plan your text length accordingly. URLs in post text will render as link previews.
  • No editing after publish. Once a post goes live on Threads, it cannot be edited via the API. Double-check your content before sending.
  • Unpublished containers expire after 24 hours. This is a Meta-side constraint. If Octopost encounters a publishing delay, it will retry well within this window.
  • Media must be at a public URL. Threads fetches images and videos from the URL you provide. If the URL is behind auth or a CDN that blocks Meta's servers, the post will fail.
  • Instagram Business or Creator account required. Users connect their Threads account through Octopost's account settings. A personal Instagram account won't work: they'll need to upgrade to Business or Creator first.

Platform-Specific Features#

Reply Threads#

Send multiple posts as a thread. Octopost publishes them in sequence, linking each reply to the previous post:

{
  "thread": [
    { "content": "Starting a thread on Threads..." },
    { "content": "Here's the second part." },
    { "content": "And the conclusion." }
  ],
  "platforms": ["threads"]
}

Octopost creates each post and wires up the reply_to_id chain for you.

Carousels#

Include up to 10 images or videos. Octopost assembles the individual item containers and the parent carousel container behind the scenes:

{
  "content": "Photo dump from the weekend",
  "platforms": ["threads"],
  "media": {
    "images": [
      "https://example.com/photo1.jpg",
      "https://example.com/photo2.jpg",
      "https://example.com/photo3.jpg"
    ]
  }
}

Threads (yes, threads on Threads)#

Put the main post in content and any replies in segments. Octopost publishes them in order using Threads' native reply_to_id reply chain, so they appear as a connected thread:

{
  "content": "Shipping a thing today.",
  "platforms": ["threads"],
  "segments": [
    { "content": "https://example.com" }
  ]
}

Threads' native API requires a two-step publish (create container, then publish) for each segment, so threads with many segments take a few seconds per post. The link-in-reply pattern works well here too: Threads prefers posts without URLs in the main body. See Threaded Posts for the full guide.

Rate Limits#

Meta does not publish specific rate limits for the Threads API. Octopost tracks request volume and uses conservative pacing to keep your account safe.

Things Octopost Handles for You#

You don't need to worry about any of this, but in case you're curious:

  • Meta OAuth flow. Threads authentication goes through Meta's OAuth system with threads_basic, threads_content_publish, and threads_manage_replies scopes. Octopost manages the entire connection and token lifecycle.
  • Two-step container publishing. Threads requires you to first create a media container, then publish it in a separate API call. Octopost does both steps and handles any failures between them.
  • Container processing status polling. After creating a container, Threads may need time to process media before it can be published. Octopost polls the container status and only publishes once processing is complete.
  • Reply threading via reply_to_id. When you send a multi-post thread, Octopost publishes the first post, captures its ID, then uses it as the reply_to_id for the next post, chaining the entire thread together.
  • Carousel container assembly. Each carousel item must be created as its own container, then a parent carousel container is created referencing all of them. Octopost handles this multi-step process from a single request.
  • Content validation. Octopost validates the 500-character limit before sending anything to Meta, so you get an immediate error instead of a delayed API failure.
  • Error reporting. If something goes wrong: media URL not accessible, account not properly connected, container creation fails: Octopost reports a clear error describing what happened and why.

Example#

{
  "content": "Hello from Octopost!",
  "platforms": ["threads"],
  "media": {
    "images": ["https://example.com/photo.jpg"]
  }
}

That's it. Octopost takes care of the rest.