Skip building AT Protocol OAuth
Bluesky sign-in happens on the server a user's account lives on, which isn't always bsky.social. Adeli runs that flow for you, including for accounts on self-hosted servers, behind one API key.
Adeli connects your users' Bluesky accounts with AT Protocol OAuth, then publishes text, images, video, and threads through one API key. Bluesky's API is free, so there's no per-post fee on top of the connected account.
Bluesky sign-in happens on the server a user's account lives on, which isn't always bsky.social. Adeli runs that flow for you, including for accounts on self-hosted servers, behind one API key.
Bluesky posts images at 2 MB or less. Send images up to 20 MB and Adeli resizes the ones that need it, then tells you which in the response.
The same POST /v1/posts call that publishes to Instagram, Facebook, TikTok, YouTube, and X publishes to Bluesky. Set platform to "bluesky" instead of adding an AT Protocol SDK to your stack.
Send your users through Adeli's connect flow and they authorize their Bluesky account directly. Pass a handle for accounts hosted outside bsky.social.
Publish up to 300 characters with up to 4 images or one MP4 video up to 100 MB, with alt text. The response is the finished post, with its AT URI and bsky.app link.
Send up to 24 more posts in thread and Adeli publishes them in order, each a reply to the one before.
List the 10 most recent top-level posts per Bluesky account with engagement counts. Reposts come back as shares.
Remove a Bluesky post by its record key or AT URI through the same API you published it with.
Bluesky's API is free, so posting costs nothing beyond the connected account. Your first 3 connected accounts are free.
Same endpoint as every other connected network. Set platform to "bluesky" and pass the account.
const res = await fetch("https://app.tryadeli.com/api/v1/posts", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
platform: "bluesky",
accountId,
text: "We shipped it. A thread:",
thread: [{ text: "Here's what changed." }],
}),
});Your server starts a connect session and sends your user to the URL it returns. They sign in with AT Protocol OAuth on their account's own server, and Adeli stores the connection, so you never handle a Bluesky token. Your user can revoke Adeli in the Bluesky app's settings at any time.
Yes. Pass your user's handle (or their DID) when you start the connect, and sign-in starts at the server their account lives on. Leave it out for accounts hosted on Bluesky itself, which sign in at bsky.social.
Text up to 300 characters, with up to 4 images (JPEG, PNG, or WebP) or one MP4 video up to 100 MB. Images can be up to 20 MB going in; anything over 2 MB is resized to fit Bluesky's limit. Links, @mentions, and #hashtags in the text become links. Send a thread of up to 24 more posts and Adeli publishes each as a reply to the one before.
Yes. Listing returns the 10 most recent top-level posts per account, without replies or reposts, with engagement counts; reposts come back as shares. You can delete a post by its record key or full AT URI. Deleting can't be undone.
Bluesky's API is free, so Adeli charges nothing per post. One Bluesky account is one connected account on Adeli's pricing, and your first 3 connected accounts are free.
Bluesky accounts are one part of it — see how the social media posting API works across every connected network, or check pricing.
Sign in, create your API key, and start publishing to Blueskytoday.
Start for free