No developer app, no use-case review, no licence fee - a handle and an app password are the whole credential. The only thing between you and a published post is the AT Protocol itself.
✓ No developer app to register ✓ No review queue ✓ 1,666 new records/hour, the ceiling Bluesky sets
Building an agent instead of an app? The same account works with our Bluesky MCP server.
curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "content": "hello from the API 🦋 read more at https://outstand.so", "accounts": ["YOUR_BLUESKY_ACCOUNT_ID"] }'Links, @mentions and #hashtags become clickable automatically. Add images, or containers[] for a thread.
With no app to submit, the work is all protocol: authenticate against the user's PDS, resolve their DID, and createRecord with byte-indexed facets for every link, mention and hashtag. Set that against Instagram's app review, where the plumbing is easy and the approval is the wait.
Every content type available on Bluesky via Outstand today.
Plus automatic rich-text facets. Reading or replying to replies is not yet exposed.
The same accounts array also fans out to X, Threads and LinkedIn - one request, many platforms.
# No client ID, no client secret, no approved app - a handle and an app
# password from bsky.app/settings/app-passwords are the whole credential.
curl https://bsky.social/xrpc/com.atproto.server.createSession \
-H "Content-Type: application/json" \
-d '{ "identifier": "you.bsky.social", "password": "'"$BLUESKY_APP_PASSWORD"'" }'
# → { "did": "did:plc:...", "accessJwt": "...", "refreshJwt": "..." }
# accessJwt lasts ~2 hours; refreshJwt renews it.curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "launch day 📸",
"accounts": ["YOUR_BLUESKY_ACCOUNT_ID"],
"media": [
{ "url": "https://media.outstand.so/1.jpg", "filename": "1.jpg" },
{ "url": "https://media.outstand.so/2.jpg", "filename": "2.jpg" }
]
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"accounts": ["YOUR_BLUESKY_ACCOUNT_ID"],
"containers": [
{ "content": "a thread on building in the open 🧵" },
{ "content": "1/ share early" },
{ "content": "2/ listen, then ship" }
]
}'curl https://api.outstand.so/v1/posts/ \
-H "Authorization: Bearer $OUTSTAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "content": "going live Friday ⏰", "accounts": ["YOUR_BLUESKY_ACCOUNT_ID"], "scheduledAt": "2026-07-03T16:00:00Z" }'curl https://api.outstand.so/v1/posts/{id}/analytics \
-H "Authorization: Bearer $OUTSTAND_API_KEY"
# → likes, reposts, replies, quotesFrom signup to your first Bluesky post in about five minutes.
Your user pastes a handle and an app password from bsky.app/settings/app-passwords. No developer app, no review.
Send text and media with accounts: ["YOUR_BLUESKY_ACCOUNT_ID"]. Use containers[] for a thread, or scheduledAt to schedule.
Session, DID, facets, blob upload, reply refs and retries - returned with the published post URI.
The shortest access section on this site, because there is almost nothing to tell you: Bluesky charges nothing and approves nobody. What is left is rate limits, and they are published.
https URL serving a public JSON metadata file, with no client secret shared at all. Set against Instagram's app review, that is publishing a file versus waiting on a verdict.So why pay us for Bluesky at all? On its own, you would not - going direct is a weekend of work and costs nothing, and we would rather say so. What you buy is the other 11 platforms, the ones with the audits and the review queues, reached through the request you already wrote for Bluesky.
One integration that grows with everything you ship next.
One request publishes to Bluesky and 11 more networks. Same JSON shape everywhere - learn one API, ship them all.
Bluesky has no OAuth app for us to get approved, so there is no managed-credential advantage to buy here. Your user brings their own app password and owns it.
Intelligent rate limiting, automatic token refresh, webhook events and media processing.
$19/mo includes 3,000 posts, then from $0.007/post. No seats, no annual lock-in.
Same endpoints, same data shapes - pick what you ship.
Let your users queue and auto-publish Bluesky content from your app.
Give Claude or GPT a tool to post to Bluesky. MCP server included.
Pull Bluesky reach and engagement alongside every other platform.
Run Bluesky posting for clients under your own brand and app.
The questions developers ask before they build.
Yes - the open AT Protocol. There is no central endpoint, though: every account lives on a PDS, and writes go to that account’s own host.
Yes. No licence fee, no paid tier, no per-call charge. The rate limits are the only ceiling, and they are the same ones any account has.
No. No developer app, no use-case form, no review queue. atproto registers OAuth clients from a public JSON file served at your client ID URL, with no client secret at all - and the app-password route needs not even that.
For Outstand, yes - created at bsky.app/settings/app-passwords and pasted in. Bluesky has no OAuth app for us to register on your behalf, so unlike every other network we connect there is no managed OAuth shortcut here, and no app review to skip either.
A points budget on writes: 5,000 points an hour and 35,000 a day per account, at 3 points per create - so 1,666 new records an hour at most. Plus 3,000 requests per 5 minutes per IP. Over the line is an HTTP 429, and Outstand queues and retries underneath it.
Yes - up to 10 images, or one video, per post. Outstand uploads each as a blob and embeds it in the post record.
Yes. The AT Protocol needs byte-indexed facets for that; Outstand computes them, so @handles and #hashtags just work.
Yes. Send a containers[] array - the first is the root post, each one after is a reply with the right root and parent refs.
Yes. Add a scheduledAt ISO-8601 timestamp up to 30 days ahead - no cron or queue on your side.
Yes. Bluesky supports deleting records, and Outstand exposes it through DELETE /v1/posts/{id}/remote.
Grab an API key and publish your first Bluesky post in the next five minutes. 3,000 posts included, then $0.007/post.
Read the Bluesky setup guide , or see how the same request works on every other platform.