Post to Threads via MCP
Quick navigation: Which path should I use? · Multi-platform example · Recovery playbook · All 9 platforms at a glance
Prerequisites: VoxBurst MCP server configured. See MCP Server setup.
Threads requires an Instagram Business or Creator account to be connected. The Threads account is linked to your Instagram account via Meta — you cannot connect Threads independently.
The complete flow
Find the Threads account ID
list_accounts()Look for "platform": "threads". Ensure you also have a connected Instagram Business or Creator account — Threads auth flows through it.
Optionally validate content first
validate_content(
content: "Your Threads post text",
platforms: ["THREADS"]
)Create the post
See post type examples below.
Check the result
get_post(postId: "post_abc123"){
"id": "post_abc123",
"status": "published",
"platforms": [
{
"platform": "threads",
"status": "published",
"platformPostUrl": "https://www.threads.net/@mybrand/post/ABC123",
"publishedAt": "2026-06-01T11:00:03Z",
"error": null
}
]
}What type of post do you want?
| I want to post… | contentType | Media required? | Notes |
|---|---|---|---|
| Text only | TEXT | No | Max 500 chars |
| Image(s) | IMAGE | Yes — 1–10 images | |
| A video | VIDEO | Yes — 1 video | Max 5 min |
Threads does not support first comments, carousels (as a contentType), Reels, or Stories.
Media input options:
mediaUrls— public HTTPS image/video URLs (auto-registered)mediaIds— VoxBurst media IDs from prior uploads
Post type examples
Text post
create_post(
content: "Shipping is the best marketing. What did your team ship this week?",
accountIds: ["acc_threads_abc123"],
contentType: "TEXT"
)Image post
create_post(
content: "New office. Same mission. 🏢",
accountIds: ["acc_threads_abc123"],
contentType: "IMAGE",
mediaUrls: ["https://cdn.example.com/new-office.jpg"]
)Multiple images
create_post(
content: "Three things we learned from 100 customer interviews →",
accountIds: ["acc_threads_abc123"],
contentType: "IMAGE",
mediaUrls: [
"https://cdn.example.com/insight-1.jpg",
"https://cdn.example.com/insight-2.jpg",
"https://cdn.example.com/insight-3.jpg"
]
)Video post
create_post(
content: "60-second product tour. Tell us what you think.",
accountIds: ["acc_threads_abc123"],
contentType: "VIDEO",
mediaUrls: ["https://cdn.example.com/product-tour.mp4"]
)Scheduled post
create_post(
content: "Big news dropping at 9 AM tomorrow. Follow to be first to know.",
accountIds: ["acc_threads_abc123"],
contentType: "TEXT",
scheduledFor: "2026-06-02T09:00:00Z"
)Tell your AI agent this
Text post, post now:
Post to Threads account
[acc_id]. Content:[your text — max 500 chars]. Post now.
Image, scheduled:
Post to Threads account
[acc_id]. Content:[text]. Attach image:[https://...]. Schedule for[ISO timestamp].
Validate first:
Validate this Threads post before creating it:
[text]. Check it is under 500 characters.
Failure cookbook
| Error | Cause | Fix |
|---|---|---|
INSTAGRAM_ACCOUNT_REQUIRED | No Instagram Business/Creator account connected | Connect an Instagram Business or Creator account first; Threads auth flows through it |
CONTENT_TOO_LONG | Over 500 characters | Shorten the text |
OAUTH_TOKEN_EXPIRED | Meta token expired | Re-connect the Threads account in VoxBurst |
MEDIA_REJECTED | Unsupported image or video format | Use JPEG/PNG for images; H.264 MP4 for video |
VIDEO_TOO_LONG | Video over 5 minutes | Trim the video |
Post status failed | Various Meta API errors | Read platforms[].error; call retry_post for transient failures |
Account requirements
| Requirement | Detail |
|---|---|
| Account type | Threads account linked to Instagram Business or Creator |
| Auth method | OAuth 2.0 via Meta (flows through Instagram) |
| Key precondition | An Instagram Business or Creator account must be connected first — Threads auth depends on it |
| Re-connect trigger | Token expires; re-connect the Threads account in VoxBurst Settings |
When Threads is a poor fit
- First comment CTAs — Threads does not support first comments; use text at the end of your caption instead
- Link-preview-dependent content — Threads does not always show link previews reliably; the URL appears as plain text
- Long-form content — 500-character limit; use LinkedIn for articles
- Carousel posts —
CAROUSELis not a supported contentType for Threads
Cross-platform override example
Threads and Instagram share a Meta relationship but need different captions. Override each independently:
create_post(
content: "New feature shipping today.",
accountIds: ["acc_threads_mno", "acc_instagram_abc", "acc_twitter_def"],
contentType: "IMAGE",
mediaUrls: ["https://cdn.example.com/feature-shot.jpg"],
platformOverrides: {
"THREADS": {
"content": "New feature out today. Building in public is the only way to build. What do you think?"
},
"INSTAGRAM": {
"content": "New feature dropping today 🙌 What do you want to see next? Drop it in the comments."
},
"TWITTER": {
"content": "Shipped: new feature live now 🚀 #buildinpublic"
}
}
)See the same post across all platforms guide for a full 8-platform example.
Benchmark checklist
Last updated: 2026-05-31 — Added JSON tool-call examples and benchmark checklist.
| Supported content types | TEXT, IMAGE (1–10), VIDEO |
| Unsupported content types | CAROUSEL, REEL, STORY; first comments not supported |
| Validation gotcha | 500 character limit |
| Media gotcha | H.264 MP4 for video |
| Account gotcha | Requires Instagram Business or Creator account — Threads auth flows through it |
| Example prompt | ”Post to Threads account acc_id. Content: text. Post now.” |
| Example tool call | create_post(content: "...", accountIds: ["acc_threads_abc"], contentType: "TEXT") |
| Example response | { "status": "published", "platforms": [{ "platform": "threads", "platformPostUrl": "https://www.threads.net/..." }] } |
| Recovery path | retry_post for transient errors; connect Instagram Business account if INSTAGRAM_ACCOUNT_REQUIRED |