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:

  1. Go to bsky.app/settings/app-passwords
  2. Click Add App Password and give it a name you will recognise later (for example, Outstand)
  3. Copy the generated password immediately - Bluesky shows it only once
  4. 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

Images

RequirementSpecification
Maximum size2,000,000 bytes (~2 MB) per image (raised from 1 MB in April 2026)
Maximum dimensions4,000 x 4,000 pixels
Items per postUp to 4 images
Alt textEvery image carries an alt field (empty string if none); each image can specify its own aspect ratio

Video

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.

WindowPoints budgetEffective post creations
Per hour5,000 pointsUp to ~1,666 records
Per day35,000 pointsUp 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 applyWrites count each individual record write.

Next Steps