Bluesky · Open network

The Bluesky API, live today, no review

Post to Bluesky right now. Create an app password, connect, and PostMyIsh creates the record over the AT Protocol — no developer app, no review, real post today.

Live nowApp passwordRich text300 chars
Live now · no reviewup to 300 charsAT Protocol
curl https://postmyish.com/api/v1/posts \
  -H "Authorization: Bearer $POSTMYISH_KEY" \
  -H "Content-Type: application/json" \
  -d '{"caption":"hello from the atmosphere 🦋","platforms":["bluesky"]}'
201 · { id: "9f2c8b1e…", status: "published" }JSON
Why not raw?

AT Protocol is powerful — and painful

The official API can do this. It just makes you do a lot first. Here's what raw Bluesky publishing costs you, and what PostMyIsh absorbs.

Raw Bluesky API
With PostMyIsh
Setup
Learn the AT Protocol: createSession, then createRecord
We run both; you send a caption
Auth
Handle + app password, session tokens to manage
One encrypted app password; sessions handled
Review
None — but you still write the lexicon record by hand
We build the app.bsky.feed.post record for you
Reach
Self-host a PDS if you want; more moving parts
Point us at any PDS host and we adapt
Capabilities

Everything Bluesky supports, one endpoint

Post types, limits, and scheduling — all through the same POST /v1/posts call, formatted the way Bluesky expects.

Posts today

createRecord over the AT Protocol — genuinely live now.

App password

The user makes one in Bluesky settings; no OAuth app to register.

Any PDS

Works with bsky.social or a self-hosted PDS you point us at.

Fan-out

The same post also lands on X and Threads.

Copy, paste, ship

Real calls, not pseudocode

Every snippet hits the live API — same base URL, Bearer auth, plain JSON. Add your key and it runs.

Publish to Bluesky now

One POST fans out to Bluesky. The response carries the id and status the moment it ships.

curl https://postmyish.com/api/v1/posts \
  -H "Authorization: Bearer $POSTMYISH_KEY" \
  -H "Content-Type: application/json" \
  -d '{"caption":"hello from the atmosphere 🦋","platforms":["bluesky"]}'
How it works

Live in three steps, not three weeks

Connect Bluesky, call one endpoint, and we run the AT Protocol plumbing behind it.

Step 01

Connect the account

Link it once from the Accounts page through its official login. The credential is stored encrypted.

Step 02

POST /v1/posts

Send one caption and the platform id. Add schedule_at to queue it, or media for a URL.

Step 03

We handle the rest

Container flows, token refresh, rate limits, and the real post id — all on our side.

Straight talk: Fully live with no app review — an app password is all it takes. This is the fastest way to see the whole connect → publish pipeline work end to end.

One API, eleven more

Bluesky is one entry in the same array

Add another id to platforms and the identical call posts there too. One request already covers Bluesky, X, and Threads — no second integration.

See all twelve networks
Bluesky API FAQ

The honest answers

What's real, what needs review, and what Bluesky itself requires — no hand-waving.

Is this really live?

Yes. Bluesky needs no app registration or review — connect an app password and a publish appears in your feed immediately, with the record uri stored.

How do I connect?

Create an app password in Bluesky → Settings → App Passwords, then connect with your handle and that password. We never see your real password.

What's the limit?

300 characters per post, matching the Bluesky client.

Can I use my own PDS?

Yes — pass your PDS host when connecting and we authenticate there instead of bsky.social.

Ready to post your ish everywhere?

Connect your accounts, write one caption, and be live on every feed in minutes. The free plan is genuinely free.