Bluesky
Bluesky is covered by Managed Keys - no developer portal, no app review. Connecting uses a Bluesky app password instead of OAuth.
Bluesky is supported in Outstand and lets you connect your accounts and post content through Outstand's unified social media API.
Managed Keys are included with your subscription and cover Bluesky. There is no developer portal to register with and no app review to pass. Bluesky is the one exception to one-click connect: it has no OAuth, so instead of approving a consent screen you create an app password in your own Bluesky settings and paste it in. That takes a minute or two, not a developer-portal registration. Contact support@outstand.so if you have questions about your Managed Keys setup.
Create your app password
You do this in Bluesky, not in a developer portal:
- Go to bsky.app/settings/app-passwords
- Click Add App Password and give it a name you will recognise later (for example,
Outstand) - Copy the generated password immediately - Bluesky shows it only once
- Enter it in Outstand together with your Bluesky handle when you connect the account
Use an app password, never your main account password. You can revoke an app password from that same settings page at any time without changing your Bluesky login.
Authentication flow (no OAuth)
Bluesky uses app passwords, not OAuth. When you call the get authentication URL endpoint for Bluesky, you receive a URL on https://www.outstand.so (not api.outstand.so). Redirect the user's browser to that URL exactly as returned. The user will land on a page where they enter their Bluesky handle and app password; they are not sent to Bluesky's OAuth. Dummy client_key/client_secret are acceptable when configuring Bluesky since they are not used in this flow.
Registering the network over the API
Most customers never need this - Managed Keys already covers Bluesky. If you are driving Outstand programmatically and want to register the bluesky network on your account yourself, POST it like any other network. As noted above, the client_key and client_secret fields are required by the endpoint but are not used in Bluesky's app-password flow, so placeholder values are acceptable:
curl -X POST https://api.outstand.so/v1/social-networks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"network": "bluesky",
"client_key": "YOUR_CLIENT_KEY_HERE",
"client_secret": "YOUR_CLIENT_SECRET_HERE"
}'Media Requirements
Bluesky posts are records in the AT Protocol, and media is attached as blobs. The following limits come from the app.bsky.embed.images lexicon, the official Bluesky posts guide and the AT Protocol blob spec. Where the posts guide and the lexicon disagree, the lexicon is authoritative - it is what the server validates against.
Text
- Post length: 300 graphemes (Unicode grapheme clusters, not bytes). See Bluesky posts guide.
Images
| Requirement | Specification |
|---|---|
| Maximum size | 2,000,000 bytes (~2 MB) per image (raised from 1 MB in April 2026) |
| Maximum dimensions | 4,000 x 4,000 pixels |
| Items per post | Up to 4 images |
| Alt text | Every image carries an alt field (empty string if none); each image can specify its own aspect ratio |
Video
- Videos are uploaded through the same
uploadBlobmechanism (com.atproto.repo.uploadBlob). - The account email must be verified to post video.
- Per-account video size, duration, and daily-count limits are returned dynamically by the
app.bsky.video.getUploadLimitsendpoint rather than being published as fixed values. See the video tutorial.
Blob upload cap
- The Personal Data Server (PDS) accepts blobs up to 52,428,800 bytes (50 MB) per individual blob. Note the image embed cap above (~2 MB per image) is stricter than the raw blob cap.
Publishing Rate Limits
Bluesky rate-limits record-creating actions (including posts) using a points system, applied per account (DID). See the official rate limits guide.
| Window | Points budget | Effective post creations |
|---|---|---|
| Per hour | 5,000 points | Up to ~1,666 records |
| Per day | 35,000 points | Up to ~11,666 records |
- Point costs per operation: CREATE = 3, UPDATE = 2, DELETE = 1. Since creating a post costs 3 points, the effective ceilings are 5,000 / 3 and 35,000 / 3.
- These limits apply on top of standard HTTP request rate limits. Batch writes via
applyWritescount each individual record write.
Next Steps
- Create your app password and connect your Bluesky account
- Review the Managed Keys vs BYOK split to see which networks need your own credentials
- Contact support@outstand.so if anything above does not match what you see