Bluesky API

API

Open AT Protocol API for reading and publishing Bluesky posts

Price
Free
Access
None to read; app password to post

About

Bluesky's API runs on the open AT Protocol. Public profiles, posts and feeds can be read with no auth; posting needs a login session with an app password. An account can create about 1,666 records an hour, and the whole network can be streamed through the firehose or Jetstream.

What you can do with it

  • Read public profiles, posts and feeds without an API key
  • Publish posts, likes and reposts from a bot or app account
  • Stream new posts from the whole network via Jetstream or the firehose

Get started

  1. Read public data from public.api.bsky.app with no auth
  2. To post, create an app password in your Bluesky settings
  3. Create a session, then call createRecord with the access JWT

Example

# Read public posts (no auth)
curl "https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=bsky.app&limit=5"
# Post: create a session with an app password, then write a record
curl -X POST $PDSHOST/xrpc/com.atproto.server.createSession \
  -H "Content-Type: application/json" \
  -d '{"identifier": "'"$BLUESKY_HANDLE"'", "password": "'"$BLUESKY_PASSWORD"'"}'
curl -X POST $PDSHOST/xrpc/com.atproto.repo.createRecord \
  -H "Authorization: Bearer $ACCESS_JWT" \
  -H "Content-Type: application/json" \
  -d "{\"repo\": \"$BLUESKY_HANDLE\", \"collection\": \"app.bsky.feed.post\", \"record\": {\"text\": \"Hello from the API\", \"createdAt\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}}"

Details

Hosting
Hosted service, Self-hosted
Available in
Worldwide
Official SDKs
JavaScript/TypeScript, Go
MCP server
None
Works with
Bluesky

Tasks

Alternatives

Other tools for the same tasks.

Last checked on .