App-password auth
Skip the AT Protocol login dance — pass a handle and app password, we keep the session fresh.
Publish to Bluesky via one API — and send direct messages from the same integration. Postproxy handles the AT Protocol, app-password auth, link cards, and image embeds for you.
One request for feed posts, threads, and text direct messages.
Free plan · No credit card · Live in under 5 minutes
Skip the AT Protocol login dance — pass a handle and app password, we keep the session fresh.
Posts that include a URL get an automatic link card with the OG image and metadata.
Sequential replies via the same threads API used for X and Threads.
Plain-text @handles, #tags, and URLs are linkified server-side with proper facets.
Send and receive text DMs over the AT Protocol chat service
$
View full documentation for all platform-specific features for Bluesky
One curl against a sandbox account is the easy part. Production Bluesky publishing means session refresh, blob uploads under the 1 MB cap, AT Protocol facets for mentions and links, OG-fetched link cards, and a permanent on-call rotation for "why didn't this one go through this time?"
No need to read up on lexicons, facets, blob uploads, or session refresh — Postproxy translates a standard post body into the right XRPC calls.
Publish the same post body to Bluesky alongside Instagram, LinkedIn, X, and more in a single API call.
Postproxy fetches the OG image and metadata for the URL in your post and uploads it as a Bluesky link card embed.
Automatic retries and clear status for every post — plus text direct messages through the same API, with webhooks for inbound DMs.
Bluesky runs on the AT Protocol — a federated network where every action is a typed record (a lexicon) written to your data repo. Posting means uploading any media as blobs, then creating an app.bsky.feed.post record with text plus optional embeds. Postproxy handles the session, blob uploads, facet extraction, and record creation — you send a normal post body and we translate it into the right XRPC calls.
Bluesky doesn't auto-linkify plain text — it expects pre-computed facets that mark byte ranges in your post as mentions, tags, or links. Postproxy extracts @handle, #tag, and URL patterns from your post body and resolves handles via the directory, so the same plain-text body you send to X works on Bluesky without extra markup.
When a post contains at least one URL and no media attachments, Postproxy fetches the Open Graph metadata, downloads the OG image (skipping anything past Bluesky's ~1 MB blob limit), and uploads it as an app.bsky.embed.external link card. If your post has any image or video attachments, those win at the embed level and the URL stays a clickable facet link — Bluesky doesn't allow both.
Bluesky's main account password won't work for API posting when 2FA is enabled — and even when it does work, the API will warn you off. Always issue an app password at bsky.app/settings/app-passwords. Postproxy stores the app password, keeps the session token refreshed, and surfaces a clear reconnect prompt if the user ever revokes it.
Postproxy supports text-only direct messages through the Bluesky chat service over the AT Protocol. Create or find a chat by the recipient's DID, send messages, and archive (mute) conversations. Inbound messages are polled every ~5 minutes and delivered via webhooks. The app password used when connecting the profile must have "Allow access to your direct messages" enabled.
Common questions about Bluesky integration
Ask your favorite LLM what it thinks about us, then decide.
Start with our free plan and scale as your needs grow. No credit card required.