Quick reference
Before you start
Required scopes:threads_basic— read profile.threads_content_publish— publish threads.threads_manage_replies+threads_read_replies— first-comment + inbox replies.threads_manage_insights— analytics.
Quick start
Workspace is inferred from your API key — noworkspaceId argument.
Use the flat shape (content + platforms) for the common case
— it defaults to a text post when you skip mediaItems.
SDK
mediaItems vs mediaIds.
Content types
Text-only
kind: "TEXT". Uses the auto_publish_text=true single-step flow on Threads. No media.
Single image
kind: "IMAGE" with one image attached via mediaIds (or one entry in mediaItems).
Single video
kind: "VIDEO" with one video. Up to 5 minutes, 1 GB. Threads polls processing status; Postbreeze waits ~30s before declaring success.
Carousel (2–20 items, mixed media)
kind: "CAROUSEL" with 2–20 media items. Threads is one of the few platforms that allows mixed image + video in a single carousel — feel free to combine.
Multi-post threads (threadParts)
Threads on Threads. Pass threadParts on platformOptions and Postbreeze
publishes the root caption first, then chains each entry as a text-only
reply via reply_to_id. The first thread part becomes the second post in
the chain; the next part replies to that, and so on.
Constraints
- Each part ≤ 500 characters. The root caption and every follow-up share the same Threads cap — there’s no “See more” fold to lean on.
- Up to 25 follow-ups.
threadParts.lengthis capped at 25; for longer chains, split into multiple posts. - Follow-ups are text-only. Media (images, videos, carousels) stays on the root post. Thread parts cannot carry attachments.
firstCommentreplies to the root, not the last part. If you set boththreadPartsandfirstComment, the first comment is posted as a reply to the root post (alongsidethreadParts[0]), not chained at the end of the thread.- Thread follow-ups count toward the reply quota. Threads enforces 1,000 replies / 24h per account; a 25-part thread burns 25 of those.
platformOptions schema.
Media requirements
Images
Videos
See Media uploads for upload strategies (URL ingest vs presigned upload).
Platform-specific fields
Threads has no other publish-time settings.
First comment
PassfirstComment on the platform entry. Postbreeze posts it as a reply to the root post using the same reply_to_id flow Threads uses for thread replies.
threadParts, the first comment still attaches to the root — not to the final thread part.
Analytics
Refresh cadence: every 14 days.
Common errors
What you can’t do
- ❌ Quote-post via API (Threads doesn’t expose this surface)
- ❌ Reply target in compose (Postbreeze v1 only reply-to-incoming; cold-start reply is deferred)
- ❌ Attach media to
threadPartsfollow-ups (text-only by design — media stays on the root) - ❌ Schedule via Threads’ native scheduler
- ❌ Edit a post after publish
- ❌ Polls
- ❌ Stories
- ❌ Webhook subscriptions (polling-only for now in Postbreeze)
Full control: nested shape
The nested shape (caption + targets + socialAccountId + scheduledAt)
is the alternative request envelope. Functionally equivalent to the flat
shape — pick whichever maps cleaner to your call site.
Node.js