How to Schedule Posts on Bluesky (No App Password Needed)

Bluesky has drafts but no scheduling. How to schedule Bluesky posts and threads with PostBoost, from the composer, the REST API or an AI assistant.

A Bluesky post card next to a calendar with one time slot highlighted and a clock icon

Guide 路 By PostBoost team 路 路 Markdown

Short answer: you can't schedule posts inside Bluesky. The app has had drafts since February 2026, but a draft only goes out when you open the app and press Post. To publish at a set time, connect Bluesky to a scheduler. In PostBoost that takes one sign-in on Bluesky's own page (no app password), then you pick a date and time in the composer and click Schedule. Before you do, paste the text into the free social media character counter to check it fits Bluesky's 300 characters.

What Bluesky can and can't do on its own

Bluesky app A scheduler like PostBoost
Save a post for later Yes, Drafts button in the composer Yes, drafts and a calendar
Publish at a set time No Yes
Publish while you're offline No Yes
Schedule a thread No Yes
Post the same update to other networks No Yes, one post to all your accounts

Bluesky's drafts announcement says it plainly: "Not ready to hit post? Keep your best ideas in Drafts until the timing is just right." Bluesky is still the one who has to hit Post when the timing is right.

Why changing the post date doesn't work

Every Bluesky post carries a createdAt date that the posting app fills in. It is tempting to think a future date would hold the post back. It doesn't: the post appears the moment it is written, whatever the date says. Going the other way, the official app marks a post whose date is 24 hours or more before the moment it was published with an "Archived from" label. Scheduling has to happen before the post is written, which is what a scheduler does. PostBoost writes the post at the time you chose and stamps it with that moment.

App password or OAuth: how schedulers connect to Bluesky

Many guides on this topic start with "create an app password in Bluesky's settings and paste it into the tool". That works, but the tool then holds a password-like string for your account, and you revoke it by finding and deleting that password in Bluesky's settings.

Bluesky also supports OAuth (the AT Protocol's sign-in standard), and that is how PostBoost connects:

  • You sign in on Bluesky's own page, not in PostBoost, and approve the connection there. PostBoost never sees your password.
  • PostBoost asks for the standard posting access Bluesky offers to apps (the transition:generic level in the AT Protocol OAuth spec). That level does not include changing your handle or email, deleting or deactivating the account, or reading direct messages.
  • The connection refreshes itself; there is no expiry date to track. If the access is ever revoked, the next scheduled post shows as failed instead of vanishing, and connection health explains how to reconnect.

Schedule a Bluesky post in PostBoost

1. Connect your Bluesky account

  1. In the sidebar, open Accounts (under Configuration; you need to be a workspace admin).
  2. Click Connect account and choose Bluesky.
  3. Under Choose your server, keep Bluesky (bsky.social). If you run your own server, pick Custom and enter its full address, such as https://pds.example.com.
  4. Click Next. Bluesky's sign-in page opens; log in and approve. You land back in PostBoost with the account connected.

2. Write the post

Open a new post and select the Bluesky account. The composer checks Bluesky's rules as you type:

  • 300 characters, counted the way Bluesky counts: an emoji is 1, and a link costs only its short form (the domain and a few characters), not the full URL. The Bluesky character limit guide explains the counting.
  • Up to 4 images, 1 video or 1 GIF, not mixed. The composer reminds you when an image has no alt text, which Bluesky reads out to people using screen readers.
  • Mentions and hashtags become real links. Type @handle.bsky.social or #topic and PostBoost turns them into a working mention and a tappable tag when it publishes.
  • Link cards. A post with no images gets a preview card for its first link, as long as the linked page has a title.

3. Pick the time and schedule

  1. Click Schedule and choose a date and time. The time zone is shown next to the time; to change it, click the icon beside it, which opens your profile settings.
  2. Click Done, then Schedule.

The post shows up in the calendar and goes out at that time. Prefer a fixed rhythm? Add to Queue puts the post into the account's next free slot of your posting schedule.

The Schedule panel also has a Best times to post section. Its recommendations appear once the account has at least 10 published posts with imported statistics, and they are based on how your own Bluesky posts performed. Posting to several networks at once? Set a time per account gives each account its own time.

Schedule a Bluesky thread

A thought longer than 300 characters belongs in a thread. Click Add Post in the composer to add the next post. Each part is checked against the 300 on its own (an error names the part, such as "Post #2"), and PostBoost publishes the parts as replies, in order, at the scheduled time. The free thread maker splits a long text into Bluesky-sized posts without cutting a word or a link; paste the parts into the composer.

If the same post also goes to Facebook or Instagram, the button reads Add first comment instead; create a version for the Bluesky account and add the thread parts there.

Schedule Bluesky posts with the API

Bluesky's own API can only post now. PostBoost's REST API takes a date and time. Find the Bluesky account's id with GET /{workspaceUuid}/accounts, then create the post. This one is a two-part thread scheduled for 9:30 New York time:

curl -s -X POST "https://postboost.co/app/api/$WORKSPACE_UUID/posts" \
  -H "Authorization: Bearer $POSTBOOST_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": [31],
    "schedule": true,
    "date": "2026-10-28",
    "time": "09:30",
    "timezone": "America/New_York",
    "versions": [{
      "account_id": 0,
      "is_original": true,
      "content": [
        { "body": "We cut our weekly report from 40 minutes to 5. Here is the setup 馃У" },
        { "body": "Step 1: one saved filter per client, exported every Monday at 8:00." }
      ]
    }]
  }'

Item 0 of content is the post; every later item is the next post of the thread. If a part breaks a Bluesky rule, such as 301 characters, the call is refused with 422 and nothing is created. To check a post without creating it, send the same body to validatePost. See createPost for every field.

Two limits to know when a script schedules for you: the API accepts up to 100 Bluesky posts per account per UTC day (half on the free plan), and it refuses a post that repeats one created for the same account in the last 24 hours unless you set allow_duplicate. Both are in the guardrails docs.

Schedule Bluesky posts from Claude or ChatGPT

With the PostBoost connector added to your AI assistant, you can schedule in plain language:

Write a two-post Bluesky thread announcing our new Monday report template, keep each post under 300 characters, and schedule it for Tuesday at 9:30 New York time.

The assistant finds the account with list-accounts, then calls create-post with the two thread parts, schedule set to scheduled, a scheduled_at such as 2026-10-27 09:30 and the timezone America/New_York. Ask it to run validate-post first if you want the rules checked before anything is saved. Schedule social media posts with Claude walks through the setup.

Before you hit Schedule

Do this in PostBoost

Free tools for this guide

FAQ

Can you schedule posts on Bluesky?

Not in the Bluesky app. Since February 2026 it can save drafts, but a draft waits until you open the app and press Post. To publish at a set time you need a scheduler that posts for you, such as PostBoost.

Do I need a Bluesky app password to schedule posts?

Not with PostBoost. It connects through Bluesky's own sign-in page (AT Protocol OAuth): you log in on Bluesky, approve the connection, and PostBoost never sees your password. Many schedulers still ask you to create an app password and paste it in.

What can PostBoost do on my Bluesky account?

It asks for the standard posting access Bluesky offers to apps. That access does not include changing your handle or email, deleting or deactivating the account, or reading your direct messages.

Can I schedule a Bluesky thread?

Yes. In the composer, click Add Post to add the next post of the thread. Each part gets its own 300 characters, and PostBoost publishes the parts as replies, in order, at the scheduled time.

Can I change the date on a Bluesky post to schedule it?

No. A post's date (createdAt) is set by the app that writes it, but the post appears as soon as it is written, whatever the date says. The Bluesky app labels a post whose date is 24 hours or more before it was published with "Archived from" and the date.

Does PostBoost work with self-hosted Bluesky servers?

Yes. When you connect, pick Custom instead of Bluesky and enter your server's full address, for example https://pds.example.com. PostBoost signs in through that server.

Sources

Related guides

Try PostBoost free

API, webhooks and MCP on every plan, including Free. No credit card required.