Quick reference
Connect an account
OAuth 2.0 against threads.net. Start atPOST /v1/accounts/connect/threads, send the user through the redirect, and the callback completes the handshake.
Scopes
The publisher uses neither replies scope — Threads supports replying via
replyToId on the request body, which is a write and needs no extra scope.
Token lifecycle
Threads issues long-lived tokens (~60 days, refreshable after the first 24 h). The publisher refreshes ahead of expiry; subscribe totoken.expiring to know when a user-prompt re-auth is on the horizon.
Post types
Text post
text.json
Single image
single-image.json
Single video
single-video.json
Carousel (mixed)
Threads accepts 2 – 20 items per carousel, and unlike most platforms it allows mixed image + video in a single carousel.carousel.json
Reply
Replies to an existing thread under the same account.reply.json
Wisdom (platform-specific things that bite)
Common errors
What you can’t do (yet)
- First comment (Threads has no comment-as-author surface distinct from a reply).
- Quote posts, polls, edits.
- Reading replies / engagement (would require
threads_read_replies+ the inbox feature, neither in v1). - DMs — Threads has no DM API.
- Cross-posting fan-out to Instagram in a single call; Threads and Instagram are separate connects.
API reference
POST /v1/posts— primary publish.POST /v1/media— upload images/videos formediaIdreferences.POST /v1/accounts/connect/threads— start a Threads OAuth flow.

