Platforms / Threads
LivePlatform integration
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 →
{
"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.
Threads OAuth on threads.net. Standalone, not bundled with Facebook. Live the day Meta App Review clears for this surface.
CONNECT THREADS →Content types
Every Threads surface, one shape.
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
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
Good to know
Notes from the integration.
Standalone Threads OAuth on threads.net. Not Facebook Login. One platform per credential.
500-grapheme posts. Image, video, or 2–20-child carousels (mixed media OK).
60-day expiry. We refresh 7 days early. token.expiring webhook fires 5 days before.
Threads containers expire after 24h. We track TTL and recreate transparently.
BYO Meta App with Threads surface enabled to skip our review queue. Same publisher code.
READY FOR THREADS?
Standalone OAuth, two-step publish, 2–20 carousels — all abstracted into one POST. Live the day Meta approval clears.