Threads

Threads scheduling that does not stop at the opener.

Meta did ship a scheduler inside Threads, and it is genuinely decent: free, 75 days out, mobile and web. It just refuses to put a reply on a timer, which is an odd hole on the platform where the reply chain is the native unit of thought. OctoSpark connects the Threads profile, carries reply control and topic tags on the scheduled post, and paces the queue against the per-profile API allowance.

  • Threads queues posts 75 days ahead, and will not queue a single reply
  • Reply control, topic tags, and quote targets carried on the post itself
  • Text, image, and video Threads posts publish through the Threads Graph API
octospark.ai / calendar
The OctoSpark calendar view

The honest answer

Does Threads have a built-in scheduler?

Yes, and it is free. Threads added scheduling in January 2025: open the three-dot menu while drafting, pick a time up to 75 days out, and the post waits in your drafts folder. The gap is replies. Threads will not put a single reply on a timer, so chains stay manual.

the three-dot menu in the top-left of the Threads composer, on the app and on threads.com. Pick Schedule, set a date and time, and the item drops into the drafts folder next to your unscheduled drafts.

Replies cannot be scheduled at all

The one restriction Meta stated plainly at launch, and it is the expensive one. Threads rewards a chained argument, but only the opening post can be given a time. Every follow-up has to be typed live against a post that is already collecting replies, so the chain you planned is hostage to whenever you next pick up your phone.

The queue is a drafts folder, not a calendar

Scheduled items sit in the same drafts list as things you simply have not finished writing, ordered by time and nothing else. There is no week view, no set of recurring posting slots to drop a draft into, and no way to shift an afternoon of posts by an hour without opening each one.

Seventy-five days and then it declines

Generous next to most in-app schedulers, and still a wall. A launch, a conference, or a seasonal run planned further out than that cannot be loaded now, and there is no setting anywhere to push the horizon back.

Interactive posts have to be fired by hand

Polls and the other interactive attachments are excluded from scheduling and must be published in the moment from the app. Anything where a clock starts running when the post lands is therefore something you have to be awake for.

One profile per signed-in session

The drafts folder belongs to whichever Threads profile the app or browser is currently on. A personal profile and a brand profile mean two folders and a round of account switching to see what either one has queued.

Anything automated meters against a per-profile ceiling

Scheduling through the Threads API rather than the app draws on a rolling 24 hour allowance, currently 250 published posts, 1,000 replies, and 100 deletions per profile. Replies are counted separately from posts, which matters a lot once chains are involved. Meta exposes the current usage through a publishing-limit endpoint, so a queue can be paced against real headroom rather than guesswork.

Threads post scheduling, with the Meta Business Suite planner alongside it vs OctoSpark.

CapabilityThreads post scheduling, with the Meta Business Suite planner alongside itOctoSpark
Putting a reply chain on a timerThreads schedules the opening post only. Replies are explicitly excluded, so a chain is typed live.Chains are the one shape we do not cover, and we would rather say so. The Threads API builds one as separate containers linked by reply_to_id, and that orchestration stays deferred while the single-post path accumulates live evidence. Scheduled first comments and engagement-triggered replies land ahead of full chains.
Seeing what is queued across profilesA drafts folder scoped to the signed-in profile, mixing scheduled items with unfinished drafts.Every connected Threads profile lands on one calendar beside the other channels in the workspace, so a queued Thread moves by dragging it rather than by reopening and retyping it.
Pushing a Thread onto Instagram at publish timeCross-sharing is a decision made in the moment on the post, not an attribute you can set on something scheduled 60 days out.The Threads container takes a crossreshare_to_ig parameter, and our descriptor for it sits in contracts. It stays hidden from the composer until it has been proven against a live Threads profile, so what reaches you first is the plumbing rather than an untested reshare switch.
Deciding who can reply, ahead of timeReply permissions are chosen against the post you are writing at that moment in the composer.Reply control, topic tag, and a quote target are stored on the scheduled post and passed to the Threads container at publish time, so a Thread that fires at 6am carries the settings you picked when you were awake.
Pacing a queue against the API allowanceThe in-app scheduler has no notion of an API budget, and the app gives no visibility into one.Publishing runs through the Threads Graph API, which turns the rolling per-profile allowance into something the queue is planned against instead of a ceiling discovered by a failed publish.
Getting media accepted before the moment arrivesMedia is attached in the composer and the container is built when you post, so a problem file surfaces at publish.Threads builds a container and reports a processing status before anything is published. Our publish path polls that status first, so a scheduled Threads slot is not spent on a video the platform has not finished ingesting.
Turning a long piece into a Threads-length postNothing native. You paste, discover it is over the ceiling, and cut it down by hand in the composer.Drafting runs against the same 500 character counter the Threads composer enforces, so a long source is cut down to something publishable before it reaches a slot rather than after it fails one.
Scheduling from a script or an agentThe composer and the Business Suite planner are both human surfaces with no callable equivalent.Threads is one more account id on the existing CLI, REST, and MCP surface, so an agent queues to it with the verb it already uses everywhere else.

What you can schedule on Threads.

Text post

Supported

The default unit on Threads, and the one the platform is actually built around. Links inside the copy are tappable, which is a meaningful difference from Instagram and shapes how much work a single post can do.

A plain text container, and the first shape the adapter was built against. Threads also runs a separate text-attachment surface with a far longer ceiling than an ordinary post; our text validator does not model that surface, so it is not something we claim.

Single image post

Supported

One still alongside optional copy, published as an image container. Threads wants JPEG or PNG within a fairly tight width band and refuses anything more elongated than a ten to one ratio.

Published as an image container. The container is created and its status polled before the publish call goes out, so a still that falls outside the Threads width band or the ten to one ratio is caught in advance of the scheduled minute.

Single video post

Supported

A native upload capped around five minutes, MOV or MP4, happiest in a vertical frame. It plays in the feed rather than bouncing the reader somewhere else.

Published as a video container. Video is where the processing poll earns its keep, because a five minute Threads upload is exactly the thing that would otherwise still be ingesting when its slot comes round.

Carousel post

Planned

Between two and twenty images or videos inside one post, assembled as child containers and then a parent carousel container. Useful, and structurally quite different from attaching several files to a single post.

Not covered, and the backend rejects it on purpose. Multi-attachment Threads posts are declined before they can reach a provider publish, so the outcome is a clear message rather than a broken post. Parent and child container orchestration follows once the single-media Threads path has more live evidence.

Reply chain

Planned

A run of posts each replying to the one before it, which on Threads is less a formatting choice than the normal way a longer idea gets expressed under a short post ceiling.

Rejected before publish rather than half-supported. Threads builds a chain from containers linked by reply_to_id, and we would rather add that once the single-post path is proven than have a chain break in the middle with three posts already public.

Quote post

Planned

A new post wrapping an existing Threads post so your commentary sits above the thing you are responding to, without it becoming a reply buried under the original.

A quote target is one of the publish settings described in contracts, set against the post and applied when the Threads container is built, so the quote is assembled at publish time rather than pasted as a link.

Which Threads accounts work.

  • Threads profile linked to an Instagram account

    The usual path, and in most countries the only one. Threads was built on top of Instagram identity, so the profile is created from an existing Instagram login and the two stay tied together. This is the account shape our OAuth flow authorizes.

  • Standalone Threads profile with no Instagram login

    Available in the EU, the UK, Switzerland, and a widening set of regions where the Digital Markets Act pushed Meta to decouple sign-up. You can create one with an email address or phone number alone. Worth knowing before you rely on it: a standalone profile cannot share across to Instagram, which removes the cross-posting angle entirely.

  • Professional or creator Threads profile

    Threads does not gate scheduling behind a professional profile the way some platforms gate it behind a business account, so the in-app scheduler is there on an ordinary profile too. What the professional profile changes is the depth of insights available, which is the half that matters once posts are being published on a schedule.

  • A Threads profile several people post from

    Threads has no seat model, no roles, and no approval step of its own, so shared access natively means shared credentials. Here one authorized profile sits behind normal workspace roles, which is the only version of this that survives someone leaving the team.

Before you connect

  • Nothing to register yourself. Threads puts publishing, deletion, and insights behind separately reviewed Meta permissions, and those are held at our app level, so no part of this needs your own Threads developer app.
  • A Threads profile you can sign into through threads.net long enough to complete the OAuth authorization.
  • Consent covering basic profile access, content publishing, reply management, insights, and deletion. Reply management is what makes a scheduled first comment possible, and deletion is what lets a takedown actually remove the post rather than hide it locally.
  • A long-lived Threads token. Threads refreshes by exchanging the current long-lived token rather than holding a separate refresh credential, so an unused connection has to be kept alive rather than merely stored.
  • In most regions, the Instagram account underneath the profile. Deleting that account takes the Threads profile with it, so it is worth treating as shared infrastructure rather than a detail.

Threads publishing rules, in one table.

Read straight from the same capability matrix the product runs on, so this table cannot drift from what actually happens at publish time.

Character limit500The composer counts down against this as you type, and warns you before a post can be scheduled over the limit.
Delete a published postSupportedRemove a live post from OctoSpark and it is deleted on the platform too, not just hidden in your queue.
Edit a published postNot supportedNo platform supports editing through the API here, so we surface delete and repost rather than pretending an edit worked.
Scheduled first commentSupportedQueue the first comment with the post and it lands automatically once the post is live, which is where links usually belong.
Repost / reshareSupportedReshare an existing post on a schedule without duplicating the original.
Engagement analyticsSupportedWe poll the platform after publish and pull real engagement back onto the post, so reporting is measured rather than estimated.
Tracked short linksSupportedInline links are rewritten for click tracking, and you can turn this off per post.
Native publish settings3 availableSet them per post before it goes out, including Reply control, Topic tag, Quote post ID. These are the platform's own options, passed straight through at publish time.

How to schedule a Threads post.

  1. 1

    Use the native scheduler for what it is good at

    Draft in Threads, open the three-dot menu at the top left, choose Schedule, and set a time inside the 75 day window. For a single post going out at a sane hour this is free and sufficient, and there is no honest reason to reach for anything else.

  2. 2

    Work out where it stops for you

    The wall is usually one of three things: you wanted the replies queued too, you are running more than one profile, or you needed the plan to sit next to the rest of your channels. If none of those bite, you do not have a scheduling problem to solve.

  3. 3

    Check the drafts folder, because that is the queue

    Open drafts to confirm the post is genuinely queued rather than merely saved, since Threads keeps both in the one list. It is also where a time gets moved, one post at a time, and where you will notice an interactive attachment the scheduler has refused to take.

  4. 4

    Plan the chain even while the tooling catches up

    Reply chains are schedulable neither in Threads nor here, so the opener takes a slot and the follow-ups get written by a human. Drafting the whole chain in advance still turns a live typing session into a paste, which is most of the benefit.

Agent native

Schedule Threads from your terminal, an MCP client, or any agent.

The interesting thing about this call is how little of it is Threads-specific. The account id changes and the reply control arrives as a typed flag rather than a platform-shaped detour, so an agent already filling a queue picks the channel up without learning anything new. Drop the dry-run flag and the same command writes the scheduled Thread.

octospark posts schedule pst_4b92 --account-id acct_threads_brand --at 2026-10-14T08:15:00Z --reply-control accounts_you_follow --dry-run

Threads scheduling, answered.

Yes. Meta shipped it in January 2025 and it costs nothing. Draft a post, open the three-dot menu at the top left, choose Schedule, and pick a time up to 75 days ahead. It is a real feature, not a token one, and for a single post it is perfectly adequate.

Seventy-five days, and multiple posts per day within that. It is a more generous horizon than most in-app schedulers offer. The ceiling only becomes a problem when you are planning a launch or a season further out than roughly two and a half months.

No, and this is the one real hole in the native tool. Threads schedules the opening post but explicitly refuses to schedule replies, so every follow-up in a chain has to be typed live. OctoSpark does not queue chains either: Threads assembles them from containers linked by reply_to_id, and that orchestration follows the single-post path rather than leading it.

In most countries, yes. Threads is built on Instagram identity and the profile is created from an Instagram login. In the EU, the UK, Switzerland, and a growing list of other regions you can now sign up standalone with just an email or phone number, though a standalone profile gives up sharing across to Instagram.

Through the app, no meaningful one. Through the API, yes: a rolling 24 hour window per profile currently allowing 250 published posts, 1,000 replies, and 100 deletions. Replies are metered separately from posts, and a carousel counts as one post rather than as its individual items.

Meta supports it, and unusually the Threads API exposes it as a parameter on the post container rather than as something you can only tap in the moment. Our descriptor for it exists in contracts but is deliberately hidden from the composer until it has been proven against a live account. A standalone Threads profile with no Instagram behind it cannot do this at all.

There is no documented penalty for scheduling, which makes sense given Meta built the scheduler itself. What genuinely costs you on Threads is not being present for the replies, since the platform weighs conversation heavily. That is an argument for scheduling the opener and showing up for the thread, not for posting manually.

Yes on both, natively and here. Threads takes one image or one video per post as its own container type, with a roughly five minute video cap and a preference for vertical framing. Interactive attachments such as polls are the exception: those cannot be scheduled and must be published live.

Business Suite has grown Threads support and shows scheduled Threads content in its planner alongside Facebook and Instagram. It is not feature complete: reply management and anything past basic metrics are still missing, so it solves the calendar problem without solving the conversation problem underneath it.

Yes. Authorize the Threads profile through Meta OAuth, and text, single image, and single video posts queue on the same calendar as your other channels, carrying reply control, topic tag, and quote target through to the container at publish time. Carousels and reply chains are the two shapes still declined before publish rather than half-supported.

Yes, and it is the one Meta ships. If a single profile and single posts describe your situation, the in-app scheduler is free and you should use it. Paying for tooling starts making sense at several profiles, a shared calendar across channels, first comments queued with the post, or programmatic access.

Queue the Threads opener, stay for the replies.

Start scheduling free