Bluesky API
APIOpen 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
- Read public data from public.api.bsky.app with no auth
- To post, create an app password in your Bluesky settings
- 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