Skip to Content
GuidesPost to Threads via MCP

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…contentTypeMedia required?Notes
Text onlyTEXTNoMax 500 chars
Image(s)IMAGEYes — 1–10 images
A videoVIDEOYes — 1 videoMax 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

ErrorCauseFix
INSTAGRAM_ACCOUNT_REQUIREDNo Instagram Business/Creator account connectedConnect an Instagram Business or Creator account first; Threads auth flows through it
CONTENT_TOO_LONGOver 500 charactersShorten the text
OAUTH_TOKEN_EXPIREDMeta token expiredRe-connect the Threads account in VoxBurst
MEDIA_REJECTEDUnsupported image or video formatUse JPEG/PNG for images; H.264 MP4 for video
VIDEO_TOO_LONGVideo over 5 minutesTrim the video
Post status failedVarious Meta API errorsRead platforms[].error; call retry_post for transient failures

Account requirements

RequirementDetail
Account typeThreads account linked to Instagram Business or Creator
Auth methodOAuth 2.0 via Meta (flows through Instagram)
Key preconditionAn Instagram Business or Creator account must be connected first — Threads auth depends on it
Re-connect triggerToken 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 postsCAROUSEL is 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 typesTEXT, IMAGE (1–10), VIDEO
Unsupported content typesCAROUSEL, REEL, STORY; first comments not supported
Validation gotcha500 character limit
Media gotchaH.264 MP4 for video
Account gotchaRequires Instagram Business or Creator account — Threads auth flows through it
Example prompt”Post to Threads account acc_id. Content: text. Post now.”
Example tool callcreate_post(content: "...", accountIds: ["acc_threads_abc"], contentType: "TEXT")
Example response{ "status": "published", "platforms": [{ "platform": "threads", "platformPostUrl": "https://www.threads.net/..." }] }
Recovery pathretry_post for transient errors; connect Instagram Business account if INSTAGRAM_ACCOUNT_REQUIRED
Last updated on