# How to schedule X (Twitter) posts and threads

For one ordinary post, start with X's web composer. For a thread, choose a tool that explicitly supports X threads,
not just scheduled posts. For your own application, the X API creates posts when you call it; your application supplies
the clock and the queue.

**Checked on October 26, 2026.** X facts below come from its own help pages and API documentation, linked under
[Sources](#sources). X Help blocked direct retrieval, so its help-page claims were checked against indexed official
text, not a signed-in composer. API and scheduler documentation was read directly. Plan access and controls can change;
uncertainties are named below rather than filled in from third-party tutorials. No real post was scheduled or sent for
this guide.

## Which route should you use?

| Route | Access | Best fit | Check before committing |
|---|---|---|---|
| X's ordinary web composer | An X account; the help text checked does not establish its current free-versus-paid eligibility | One post without another publishing tool | Whether your composer offers the calendar, and whether your post type keeps it available |
| X Pro, formerly TweetDeck | X's current indexed Premium help places X Pro under Premium+ only | A column-based desk, including scheduled image or video posts | Do not assume Basic or the middle Premium tier includes X Pro |
| A scheduling tool | That tool's account and plan; its restrictions can differ from X's | Threads, a queue, multiple networks or team review | Explicit X-thread, poll and media support, not a generic scheduling claim |
| Your own X API integration | A developer app, user authorization and API credits | A publishing feature in software you operate | Durable scheduling, upload expiry, partial threads and uncertain results |

**Do you need X Premium to schedule a post?** Do not confuse X Pro's paid access with the ordinary web calendar.
The X Help text available for this check does not establish a current tier requirement for the ordinary composer, so
we cannot promise universal free-account access. Check for the calendar in your own web composer before buying a plan.
For X Pro, the [Premium tier list](https://help.x.com/en/using-x/x-premium) currently places access under **Premium+**;
older tutorials saying simply “Premium” may be out of date. Recheck that page before paying.

## Schedule one post on X's website

Use the website, not instructions written for the iOS or Android app. This is a web-composer checklist, not a claim
that every account or post type was tested:

1. Open the post composer on X's website and write the post. Check the account, text and any attachments.
2. If the calendar control is available, open it and choose the date and time. Read the displayed time zone rather
   than assuming it is your intended audience's zone.
3. Confirm the time, then complete the composer's **Schedule** action. A draft or a date selected without the final
   scheduling action is not a scheduled post.
4. Open the composer's scheduled-post list and confirm the saved content and time. If you edit it, check the saved
   schedule again.

If the calendar is absent, do not assume a subscription upgrade fixes it. Check the post type first. X's
[Premium how-to](https://help.x.com/en/using-x/x-premium-how-to) explicitly says **longer posts cannot yet be scheduled**.
A paid account's ability to write a longer post is not permission to schedule one.

X's [Media Studio help](https://help.x.com/en/using-x/media-studio-faqs) acknowledges that scheduled posts can be
modified on X.com, but Media Studio is a separate workflow. Likewise, X Ads scheduling instructions are for the Ads
dashboard, not proof of what the ordinary composer supports. This guide does not establish a current maximum advance
window for the ordinary composer.

## Schedule in X Pro

X's [advanced X Pro guide](https://help.x.com/en/using-x/advanced-xpro-features) explicitly documents this workflow:

1. Compose the post in X Pro. If needed, use **Add images or video** to attach the file.
2. Choose **Schedule post**, then select the date and time.
3. Finish the scheduling action and inspect it in a **Scheduled** column. Use that column to review or edit it.

That is evidence for scheduled image and video posts. It is not evidence for every media combination, longer posts,
polls or a whole thread. X Pro access also does not grant API credits or make your own API integration a scheduler;
those are separate products and workflows.

## What changes for threads, polls and media?

### Threads need a reply chain

A thread is not several independent posts set for the same minute. Part 2 must reply to part 1's actual post ID;
part 3 replies to part 2, and so on. X's [thread guide](https://help.x.com/en/using-x/create-a-thread) explains creating
a thread, but the official help text checked here does **not confirm scheduling a complete thread** in either the
ordinary web composer or X Pro. Do not assume the “add another post” button makes the whole chain schedulable.

Use a scheduler that explicitly offers X threads, and review the entire chain as one item. If you only need help
writing one, the free [X thread maker](/x-thread-maker) splits and previews the text without an account. It does not
schedule or publish anything.

### Poll creation is not poll scheduling

X's [poll help](https://help.x.com/en/using-x/x-polls) documents creating polls and says photos cannot be included in
one. The checked native scheduling help does not confirm scheduled polls. A poll button in a composer, or a tool's
ability to schedule text, is not proof that it schedules polls. Verify the exact route before planning a timed vote.

The X API does expose a `poll` object on post creation. A tool can build on that, but it must actually implement it:
Buffer, for example, explicitly says it does not create X polls.

### Media limits belong to the route you use

X Pro explicitly documents scheduled images and video. Third-party tools can have smaller file or duration allowances
than X's own website, and paid longer-video privileges do not automatically carry across to them. Check the tool's
current media rules, wait for the upload to finish, and review the crop, ordering and alt text before scheduling.

For an API integration, do not upload to X weeks ahead and assume the media ID will survive until publication. The
upload response gives `expires_after_secs`; upload close enough to the posting time, finish video processing, then
attach the returned ID. Keeping an original file in your scheduler is different from keeping an unexpired X upload.

## Scheduling tools: two available options and one waitlist

### Buffer: a documented thread scheduler, but no X polls

Buffer's [X guide](https://support.buffer.com/articles/using-xtwitter-with-buffer-nA84XnWtuU) explicitly supports threads
of up to 25 parts on its current Free, Essentials and Team plans. Free allows one scheduled thread at a time per
queue. Its guide says to create the thread on the web; check its current mobile documentation separately rather than
assuming the same controls are in every app.

Its [scheduling guide](https://support.buffer.com/en-us/articles/scheduling-posts-4Qdld7giAZ) describes **New Post**,
selecting the X channel, composing, and **Set Date and Time**, followed by **Schedule Post**. For a thread, its X guide
uses **Start Thread** to add parts. Inspect the saved queue and the channel's time zone afterwards.

Buffer supports photos, GIFs and video, but its X guide explicitly says **no X polls** and limits videos to 140 seconds
and 512 MB. Do not buy X Premium expecting that to extend Buffer's video allowance.

### Typefully: scheduled X publishing and an API

Typefully offers [X scheduling](https://typefully.com/) and an [API](https://typefully.com/docs/api) with a future
`publish_at` time. Its `plan_at` field is different: it plans a date without enabling automatic publication. Review
the current plan and format support before moving a queue; this guide does not certify its poll support or every media
combination. The [Typefully comparison](/docs/guides/flaghand-vs-typefully) covers its agent permissions and where it
may fit better than Flaghand.

### Flaghand: agent drafts, owner approval; sign-up is closed

Flaghand is an option for people whose own AI agent writes the posts. Its API, CLI and MCP let an agent draft, upload,
check and request approval. **No agent token can approve, schedule or post.** The owner approves the exact account,
content and proposed time in Flaghand with a passkey; changing posting content or the time needs a fresh approval.

It supports X threads as one draft, with 2 to 25 parts, and a poll on the opening part only. Polls cannot share that
part with media. Its upload allowance is 50 MB per file, not X's full long-video allowance. The
[drafts and media documentation](https://app.flaghand.com/docs/drafts-and-media) gives the current rules.

After publication, Flaghand reads X posts back and reports limited comparisons, not a guarantee of identical pixels,
media-file bytes or link destinations. [The safety guide](/docs/guides/let-an-ai-agent-post-safely) explains that boundary.

**Public sign-up is not open. [Join the Flaghand waitlist](/schedule).** There is no account-setup walkthrough here
that a new reader cannot complete. The account-dependent scheduling recipe remains unpublished until access opens.

## Schedule through the X API

The [create-post endpoint](https://docs.x.com/x-api/posts/create-post) is `POST /2/tweets`. Its documented request body
has no future publication-time field. Your application stores the content and intended time, then calls X when due.
An app-only bearer token cannot publish: use user-context authorization for the account that posts.

For a reliable implementation:

- Store the intended instant with an explicit UTC offset and display its local time zone for review. Decide how a
  recurring wall-clock time behaves at daylight-saving changes.
- Keep scheduling state durably; a sleeping browser tab or a process that loses its queue on restart is not enough.
- Upload media near the due time, add alt text and wait for successful processing before attaching it.
- For a thread, save each returned ID before sending the next reply. The API has no single atomic thread transaction:
  a failure can leave an opening segment live.
- After an uncertain response, reconcile before retrying. Blindly sending the same opening post again can duplicate it.
- Record success and the live links, or a clear failure that needs attention. A saved draft or accepted queue entry is
  not evidence of publication.

X's API is [pay per use](https://docs.x.com/x-api/getting-started/pricing), separately from a scheduling tool's plan.
Each thread part is a post-creation request; polls, uploads, metadata and read-back have their own endpoint behavior.
See [X API pricing](/docs/guides/x-api-pricing) and the
[threads, polls and media API guide](/docs/guides/x-api-threads-polls-media) before estimating costs or implementing the
requests. Buying a consumer subscription is not a substitute for setting up developer access and billing.

## Before you leave a post in the queue

Check the posting account, exact content, thread order, poll choices, attachments, alt text and displayed time zone.
Inspect the saved schedule, not just the draft. After the due time, check the result and open the live link; for a
thread, confirm the replies are actually connected. A scheduler can attempt the right thing and still meet an expired
login, a media-processing failure or a platform refusal.

## Sources

Checked on October 26, 2026. X Help references below were checked through indexed official text because direct
requests were blocked; native account eligibility and UI behavior were not independently exercised. X API, Buffer,
Typefully and Flaghand documentation was read directly. No real posting call, account change or purchase was made.

- X Help: [Premium tiers](https://help.x.com/en/using-x/x-premium),
  [Premium how-to and longer-post scheduling](https://help.x.com/en/using-x/x-premium-how-to),
  [advanced X Pro features](https://help.x.com/en/using-x/advanced-xpro-features),
  [Media Studio](https://help.x.com/en/using-x/media-studio-faqs),
  [threads](https://help.x.com/en/using-x/create-a-thread), [polls](https://help.x.com/en/using-x/x-polls)
- X API: [create a post](https://docs.x.com/x-api/posts/create-post),
  [media uploads](https://docs.x.com/x-api/media/quickstart/media-upload-chunked),
  [pricing](https://docs.x.com/x-api/getting-started/pricing)
- Buffer: [X formats, threads and restrictions](https://support.buffer.com/articles/using-xtwitter-with-buffer-nA84XnWtuU),
  [scheduling a post](https://support.buffer.com/en-us/articles/scheduling-posts-4Qdld7giAZ)
- Typefully: [publishing platform](https://typefully.com/), [API](https://typefully.com/docs/api)
- Flaghand: [drafts and media](https://app.flaghand.com/docs/drafts-and-media), [agents](https://app.flaghand.com/docs/agents)

[All guides](/docs/guides.md)
