letmepost / platforms / Threads

Ship Your Integration
In Minutes, Not Weeks.

Threads has its own OAuth (not Facebook Login) and its own quirky two-step async publish. letmepost abstracts both: standalone OAuth handled, container creation + finalize hidden from the caller, mixed-media carousels treated as a single POST.

In review · Threads Graph · read the docs →
POST /v1/posts ·
{
  "targets": [{ "platform": "threads" }],
  "accountId": "acc_th_xyz",
  "text": "Hello Threads. From letmepost."
}

Why letmepost vs Threads Graph direct?

Threads Direct

  • Threads has its own OAuth at threads.net (not Facebook Login)
  • You implement the two-step async publish (create container → finalize)
  • You poll the container status for media-bearing posts
  • You build carousel child handling for 2–20 children
  • You wrestle with 60-day token expiry
  • Containers expire after 24h, you handle re-creation

letmepost API

  • Standalone Threads OAuth handled in the browser
  • Two-step publish abstracted into one POST
  • Container status polled internally; you get a single webhook
  • Carousels with 2–20 mixed-media children as one call
  • Token refresh runs on a 7-day-before-expiry schedule
  • Container TTL tracked; we recreate on next publish if expired

✓ Standalone OAuth, not Facebook Login

Threads has its own developer portal and its own OAuth flow at threads.net. Connecting a Threads account does NOT also connect Facebook or Instagram. One platform, one credential, one consent.


PLAYGROUND

connect, configure, post
▸ Connect▸ Configure▸ Execute

Threads OAuth on threads.net. Standalone, not bundled with Facebook. Live the day Meta App Review clears for this surface.

CONNECT THREADS →
Approval-gated. META REVIEW · DAY 24 / ~56

CONTENT TYPES

every threads surface, one shape
Text post · 500 graphemes
Image
Video
Carousel · 2–20 mixed
Reply

HOW IT WORKS

three steps · under two minutes

Get your API key

Sign up at dashboard.letmepost.dev.

Connect a Threads account

Standalone OAuth at threads.net. Not Facebook Login. Token + refresh stored encrypted.

Publish a thread

One POST /v1/posts with platform: "threads". We create the container, finalize, fire the webhook when it lands.


FEATURES

what we built so you don't

Two-step publish abstracted

Threads requires create-container + finalize for media posts. We run the dance, poll status, fire one post.published webhook.

2–20 mixed-media carousels

Carousel children can mix images and video. Pass an array of mediaId references; we handle the per-child container creation.

60-day token, auto-refreshed

Threads tokens expire in 60 days. We refresh on a 7-day pre-expiry schedule. token.expiring webhook fires 5 days before, just in case.

Container TTL tracking

Containers expire after 24h. We track the TTL; if you publish to a stale container, we recreate transparently. No silent loss.


CODE EXAMPLE

publish a carousel · typescript
publish-threads.ts ·
import { Letmepost } from '@letmepost/sdk';
const lmp = new Letmepost({ apiKey: process.env.LMP_API_KEY });

const result = await lmp.posts.create({
  targets: [{ platform: 'threads', accountId: 'acc_th_xyz' }],
  text: 'A 3-photo carousel via letmepost. One POST.',
  media: [
    { type: 'image', mediaId: 'med_001' },
    { type: 'image', mediaId: 'med_002' },
    { type: 'image', mediaId: 'med_003' },
  ],
});

COMMON QUESTIONS

about threads publishing

When does Threads go live?

Publisher is shipped, waiting on Meta App Review for the Threads surface. Typical timeline 4–8 weeks. Self-host with your own Meta app to use it today.

Does Threads use Facebook Login?

No. Threads has its own standalone OAuth at threads.net. Connecting Threads does NOT connect Instagram or Facebook.

How do carousels work?

Pass an array of mediaId references (2–20 children, mixed image + video allowed). We create per-child containers and finalize the parent.

What about reply chains?

Pass inReplyTo: "". The reply is published as a top-level thread connected to the parent.

Token expiry?

60 days. We refresh 7 days before expiry. token.expiring webhook fires 5 days before — your audit logs catch this either way.


ONE API · 8 PLATFORMS

threads is just one of them

LEARN MORE


READY FOR THREADS?

Standalone OAuth, two-step publish, 2–20 carousels — all abstracted into one POST. Live the day Meta approval clears.

* * * THREADS GRAPH · STANDALONE * * *
PLAT · THREADS · META REVIEW
→ START FREE