Platform GuidesHow to Schedule Bluesky Posts via API
How to Schedule Bluesky Posts via API
Schedule Bluesky posts programmatically with the SocialRails API. Covers character limits, AT Protocol details, media support, rate limits, and code examples for automated Bluesky posting.
Schedule Bluesky posts programmatically using the SocialRails API. This guide covers character limits, AT Protocol details, media support, code examples, and best practices for automated Bluesky posting.
Character Limits
- Posts: 300 characters (counted as grapheme clusters, not bytes)
- Alt text: 2,000 characters per image
- Display name: 64 characters
- Bio: 256 characters
Supported Content Types
API Example
# Schedule a Bluesky post
curl -X POST https://socialrails.com/api/v1/posts \
-H "Authorization: Bearer sr_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Just shipped a new feature! Check out our API docs at socialrails.com/documentation",
"platform": "bluesky",
"scheduled_for": "2026-03-15T14:00:00Z"
}'# Schedule a Bluesky post with images
curl -X POST https://socialrails.com/api/v1/media/upload \
-H "Authorization: Bearer sr_live_YOUR_KEY" \
-F "file=@screenshot.png"
curl -X POST https://socialrails.com/api/v1/posts \
-H "Authorization: Bearer sr_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Here is a sneak peek at the new dashboard",
"platform": "bluesky",
"media": ["MEDIA_KEY_FROM_UPLOAD"],
"scheduled_for": "2026-03-15T14:00:00Z"
}'AT Protocol Notes
Bluesky is built on the AT Protocol (Authenticated Transfer Protocol), a decentralized social networking protocol. Here is what you need to know:
- SocialRails handles all protocol details: You don't need to understand the AT Protocol to post via the SocialRails API. Simply set the platform to
"bluesky"and SocialRails handles record creation, blob uploads, and facet detection. - No special platform_settings required: Unlike some platforms, Bluesky does not require additional platform-specific configuration. Standard post fields (content, media, scheduled_for) work out of the box.
- Link detection: URLs, mentions (@handle.bsky.social), and hashtags in your content are automatically detected and converted to AT Protocol facets.
- Decentralized identity: Your Bluesky handle is a domain-based identifier. SocialRails manages authentication and token refresh automatically.
Best Practices
- Engage with replies: Bluesky's algorithm favors conversational posts, reply to comments to boost visibility
- Alt text: Always include alt text on images for accessibility, Bluesky's community values this highly
- Quote posts: Use quote posts for engagement, they perform well on the platform
- Optimal posting times: Still developing as the platform grows, experiment with your audience
- Concise content: With a 300-character limit, every word counts, make posts punchy and clear
- Be an early adopter, growing platforms reward consistent posters with higher visibility
Rate Limits
AT Protocol rate limits apply in addition to SocialRails rate limits:
- 1,667 posts per day (creates)
- 11,667 actions per hour (creates)
- Blob uploads: 1,000 per day
SocialRails handles these limits automatically and will retry failed posts.
Frequently Asked Questions
What is the character limit for Bluesky posts?
Bluesky posts are limited to 300 characters. Characters are counted as grapheme clusters, not bytes, so emoji and special characters count as single characters. Alt text on images can be up to 2,000 characters.
Can I upload images to Bluesky via API?
Yes. You can attach up to 4 images per Bluesky post. Upload images first via the /api/v1/media/upload endpoint, then include the media keys when creating your post. SocialRails handles the AT Protocol blob upload process automatically.
What is the AT Protocol and do I need to understand it?
The AT Protocol (Authenticated Transfer Protocol) is the decentralized protocol that powers Bluesky. You do not need to understand it to use the SocialRails API. SocialRails handles all protocol details including record creation, blob uploads, and facet detection for links and mentions.
Does Bluesky support threading via API?
Yes. You can create threads on Bluesky using the thread array field, the same way you would on Twitter. Each item in the thread array becomes a separate post, published as replies in sequence. See the Threading API reference for details.