Blueskyready

Posting to Bluesky through the API

Where a lot of tech and indie audiences moved. The request shape is the same one every network here uses — only the limits on this page change.

Bluesky publishes for anyone today. Connect an account and the request below works as written.

Connecting a Bluesky account

Handle + app password. Free, no developer app needed. Once connected, we hold the credential and keep it alive; your code only ever sends the API key.

The limits we enforce before publishing

Caption

300 characters. Over the limit comes back as a 422 before anything publishes.

Media

Up to 4 per post. Media optional.

Video

No video — a video attachment fails pre-flight.

Cadence

20 posts a day per account — the ceiling that stays under Bluesky's spam heuristics.

What pre-flight rejects, verbatim

A request that breaks a Bluesky rule comes back as a 422 naming the network and the number — before anything is scheduled, not after the other networks published. The error strings are these:

  • 432 chars — Bluesky allows 300.
  • 6 attachments — Bluesky allows 4.
  • Bluesky does not accept video.

The request

curl -X POST https://attentionpilot.com/api/v1/posts \
  -H "Authorization: Bearer $PILOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "caption": "Written for Bluesky, under 300 characters.",
    "accounts": ["bluesky"]
  }'

Omit schedule for the next free queue slot, send "now" to publish immediately, or send an ISO timestamp.

When Bluesky fails

Each network is delivered on its own. A revoked token or a rejected upload on Bluesky never blocks your other targets: the post returns "partial", the Bluesky target carries the error text, and you can retry just this delivery.

Worth knowing

  • 300 characters
  • Connect with an app password — no OAuth app needed
  • Up to 4 images

The same call reaches the rest

Posting to Bluesky is an API call.

Start free

One account free. No card.