Overview
Schedule and automate Bluesky posts with text, images, video, threads, quotes, and link cards with App Password authentication.
Schedule and automate Bluesky posts with text, images, video, threads, quotes, and link cards with App Password authentication.
Quick Reference
| Property | Value |
|---|---|
| Character limit | 300 (hard limit, graphemes) |
| Images per post | 4 |
| Videos per post | 1 |
| Image formats | JPEG, PNG, WebP, GIF |
| Image max size | 2 MB per image |
| Video format | MP4 only |
| Video max size | 100 MB |
| Post types | Text, Image, Video, Thread |
| Scheduling | Yes, with IANA timezone |
| Inbox | Yes (text only) |
| Comments | Yes |
| Analytics | Limited (likes, comments, reposts, quotes, bookmarks) |
Before You Start
Bluesky has a hard 300 character limit per post. This is the #1 cause of failed posts. If you are cross-posting from other platforms, pass a shorter Bluesky-specific version as per-destination text (see Platform Settings).
Additional requirements:
- Uses App Passwords, not OAuth. Create one in Bluesky Settings → App Passwords
- The 300 character limit applies to every post and each thread segment
- Images are limited to 2 MB per image
- Video is limited to 100 MB, MP4 only, max 60 seconds
Connect
Bluesky uses App Passwords instead of OAuth.
alice.bsky.social or email). Custom domain handles work too.For programmatic connects see Connection → Bluesky.
If you later get a TOKEN_INVALID error, create a new App Password and reconnect.
Authentication
| Detail | Value |
|---|---|
| Method | Handle + App Password (AT Protocol session) |
| Session token | ~2 hours, refreshed automatically by Onepostly |
| Refresh token | Managed automatically. Reconnect after revoking the App Password |
Rich Text
Onepostly auto-detects and converts text to AT Protocol facets. No special formatting is needed:
@handle.bsky.socialbecomes a clickable profile link#hashtagbecomes a clickable hashtag- URLs become clickable links with preview cards
Capabilities
| Action | Supported | Notes |
|---|---|---|
| Text-only post | Yes | Max 300 characters (graphemes) |
| Image post | Yes | Up to 4 images, 2 MB each |
| Video post | Yes | Single MP4 up to 100 MB |
| Thread (reply chain) | Yes | Root post plus 1 to 25 replies via threadItems with per-reply media up to 4 images or one video |
| Quote | Yes | Quote another Bluesky post via quoteTweetId |
| Link card | Yes | Add a link to show a preview |
| Reply to post | Yes | Via replyToId with an at:// URI |
| Schedule | Yes | Cancel any time before it publishes |
| Remote delete | Yes | Deletes the post record |
| Comments | Yes | List, create, delete |
| Like / unlike | Yes | Via engagement endpoints |
| Repost / unrepost | Yes | Via engagement endpoints |
| Bookmark / unbookmark | Yes | Via engagement endpoints |
| Analytics | Limited | Likes, replies, reposts, quotes, bookmarks |
| Account stats | Yes | Followers, following, post count |
What You Can't Do
These features are not available through Bluesky's API:
- Create lists, starter packs, or custom feeds
- Pin posts to profile
- Add content warnings or labels
- Send message attachments (Bluesky's Chat API does not support media)
- See impressions, reach, or view counts
Known limitations
- Text is limited to 300 characters per post or thread segment, counted in graphemes (emoji count as one)
- Media URLs must be publicly accessible HTTPS links
- No impressions, reach, or plays. Only interaction counts