Threads Scheduler

Threads scheduler for text-first posting next to Instagram

Schedule Threads posts and carousels across every account your product or your team publishes for, with the Meta permission chain and the 500-character cap validated per account before publish.

Last updated: July 2026

One API key. No per-account fees. 15 platforms.

API key authScheduled publishing15 platforms
Quick start
API request
1await fetch("https://api.bundle.social/api/v1/post", {2  method: "POST",3  headers: {4    "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY,5    "Content-Type": "application/json"6  },7  body: JSON.stringify({8    teamId: "team_123",9    title: "Threads campaign",10    postDate: "2026-05-14T10:00:00.000Z",11    status: "SCHEDULED",12    socialAccountTypes: ["THREADS"],13    data: {14      THREADS: { text: "Scheduled from bundle.social." }15    }16  })17});
Official APIs500k+ connected accountsDirect engineer support

What native Threads publishing leaves to your team

Threads is tied to Meta's account and permission model, so reliable publishing still needs media handling, scheduling, and status tracking.

What bundle.social handles

Add Threads to your publishing calendar without separating it from Instagram, Facebook, LinkedIn, Reddit, and Bluesky.

Keep Threads in the same workflow as every other channel

Threads is Meta's shiny new toy, but your campaign doesn't care which network is trending. Keep it in the same workflow as Instagram and everything else.

Workflow

How it works

Connect accounts once, then create and schedule posts with channel-specific fields from one API.

01

Create an API key

Generate an organization API key in the dashboard and use it with the x-api-key header.

02

Connect accounts

Connect each social account once. bundle.social keeps the account mapping ready for future posts.

03

We run the Threads container flow

Threads follows the Meta container model: create a media container, wait for processing, then publish. Carousels need a container per item plus a parent. You send one request; bundle.social sequences the containers and reports one outcome.

Product architecture

Build social media workflows without rebuilding every platform

Threads scheduler for teams already publishing to Instagram

If a product already ships Instagram, Threads is less a new channel than an extension of the Meta workflow it has, and that is exactly how SaaS products, agencies, and brand teams plan it: short text posts, images, videos, carousels, and replies riding on the same accounts and the same permission model.

bundle.social schedules Threads in the same calendar as Instagram and every other channel. Draft and schedule content, attach media, review before publishing, and follow delivery status without a second Meta workflow to maintain.

Threads is short, conversational, and tied to Meta accounts

Threads posts are capped at 500 characters and read as conversation rather than announcement, so copy written for LinkedIn or a blog rarely transfers unchanged. Publishing also inherits Meta's account and permission model, which means a lapsed permission can affect Instagram and Threads at the same time.

bundle.social validates length before publishing and treats a Meta permission problem as a reconnect rather than a content failure. Because Threads accounts sit on the same account graph as Instagram, one reconnect usually restores both channels for that account.

The same thought ships to Threads, X, and Bluesky differently

Threads content usually has siblings. The same thought often ships as an X post, a Bluesky post, and an Instagram caption, each with a different length and a different audience, and teams want to plan them together instead of duplicating them by hand.

Those text-first channels share one calendar with per-channel copy, shared media, approvals, and delivery status. Threads reply and moderation workflows depend on what Meta exposes, so availability stays visible rather than assumed.

Let your own users connect their Threads accounts

Threads accounts hang off the same Meta account graph as Instagram. A lapsed permission usually breaks both channels for that account, and one reconnect fixes both.

You generate a hosted portal link, your user connects their own Threads account through it, and bundle.social stores and refreshes the token. The link carries your branding, expires on a window you set between 5 minutes and 48 hours, and means you never implement Threads API OAuth yourself. Publishing from your own code instead of the dashboard uses the same connected accounts.

Capabilities

Threads scheduling for conversation-led campaigns

Plan text posts, media, Meta account constraints, and launch timing alongside Instagram and other social channels.

Threads in your cross-platform calendar

Plan and schedule Threads content alongside Instagram, LinkedIn, X, TikTok, and every other channel without switching between native dashboards.

Channel-specific field control

Threads content still uses the options and fields the platform supports. No generic template that loses native capabilities.

Team review and approvals

Marketing teams can draft, review, and approve Threads content in the shared calendar before anything publishes.

Media library for campaigns

Upload visuals, videos, and documents once and attach them to Threads posts using upload IDs across your content plan.

Post status tracking

See whether each Threads post is scheduled, processing, posted, or failed without checking the native platform dashboard.

Analytics where available

Pull Threads performance data and import post history for connected accounts where the platform API and permissions allow it.

Developer example

Schedule Threads content

Examples use bundle.social's public API shape: API key authentication, a post date, selected social account types, and platform-specific data.

TypeScript
API request
1await fetch("https://api.bundle.social/api/v1/post", {2  method: "POST",3  headers: {4    "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY,5    "Content-Type": "application/json"6  },7  body: JSON.stringify({8    teamId: "team_123",9    title: "Threads campaign",10    postDate: "2026-05-14T10:00:00.000Z",11    status: "SCHEDULED",12    socialAccountTypes: ["THREADS"],13    data: {14      THREADS: { text: "Scheduled from bundle.social." }15    }16  })17});

Supported content

TextImagesVideosCarouselsReplies where supported

Honest limitations

  • Threads API capabilities are owned-account focused and controlled by Meta.

Guarantees

Developer-first infrastructure

Visible post status

Track scheduled, processing, posted, retrying, and error states per post.

Verbose errors

When native APIs fail, we return human-readable error messages and actionable recovery steps.

Flat pricing

No per-post counting. Predictable pricing for teams managing many users, workspaces, and connected accounts.

Same-day support

Direct access to the engineers building the API. We respond to technical issues the same day, sometimes the same hour.

FAQ

Questions developers ask before building

If we already publish to Instagram, what does adding Threads cost us?

Little, structurally. Threads shares Meta's account graph and permission model with Instagram, so the accounts are related, the permission failures look alike, and one reconnect usually fixes both channels for an account. What does not carry over is the content: Threads caps posts at 500 characters and has no Reels-style video semantics, so Instagram captions usually need rewriting rather than reposting.

Why did a Threads post fail with no obvious problem in our payload?

The two usual causes are outside the payload. Meta fetches media from a URL, so an expiring signed link, a login wall, or bot filtering surfaces as a publish failure with nothing wrong in your own logs. The other is account state: a restricted or checkpointed account rejects publishing regardless of payload, and only a user action fixes it.

Is 500 characters a hard limit?

Yes. bundle.social validates against it before the request reaches Meta, so an over-length caption fails as a validation error you can show the user rather than as a platform rejection after the fact.

Why use bundle.social for Threads instead of adding it to an existing Meta integration?

Because Threads looks like a text field and behaves like a Meta container flow, with a container per carousel item plus a parent, each with its own processing state. It also inherits Meta account restrictions that no retry fixes. bundle.social sequences the containers, validates the 500-character cap before the request reaches Meta, and separates a media fetch failure from an account restriction, which need opposite handling.

Can our own users connect their own Threads accounts?

Yes. You generate a hosted portal link carrying your own branding, and bundle.social stores and refreshes the Threads token, so a reconnect is something your user can do without a support ticket.

Can Threads run in the same calendar as our other channels?

Yes, and the per-platform differences stay per platform. One scheduled post can target several channels at once, with a THREADS object carrying only the fields Threads needs.