Bluesky
The AT Protocol network. App passwords, the 300-character cap, and the open ATProto trade-offs.
Bluesky publishes through the AT Protocol — the open social protocol they built. The API is the most permissive of any network we support, but the auth model is different: app passwords, not OAuth.
What you can post
| Type | Supported | Notes |
|---|---|---|
| Text post | ✓ | Up to 300 characters |
| Single image | ✓ | JPG / PNG / WebP, up to 1 MB |
| Carousel | ✓ | 2-4 images |
| Video | ✓ | MP4, up to 100 MB, 1 min |
| Reply chain | ✓ | No depth limit, but use sparingly |
| Quote post | ✓ | Pass the parent post URI in the editor |
| Poll | — | Not in the protocol |
App password setup
Bluesky doesn't have OAuth for third-party apps yet. To connect:
- Go to bsky.app/settings/app-passwords.
- Click Add App Password, name it "Post Mate".
- Copy the password Bluesky shows (you only see it once).
- Paste it into Post Mate's Bluesky connect screen.
The app password is revocable from Bluesky's settings without touching your main password. We recommend creating a separate app password per tool you use — that way revoking one tool doesn't break the others.
Caption rules
- Max length: 300 characters (the strictest of any network we support after X)
- Links count as 23 characters when wrapped (same as X auto-shortening)
- @-mentions render as clickable handles
- Hashtags work but aren't a primary discovery mechanism on Bluesky
Media specs
Bluesky's images are tightly constrained:
- Format: JPG, PNG, or WebP
- Max size: 1 MB per image (not a typo — 1 MB)
- Recommended: 1000×1000 or smaller, JPEG quality ~85
Most phone photos blow past the 1 MB cap. We auto-compress JPEGs on upload to stay under the limit while maintaining visual quality. PNG and WebP files larger than 1 MB are rejected with a clear error.
Per-post settings we expose
- Reply restrictions — anyone, mentioned only, or no replies
- Labels — Bluesky's content-warning tags (nudity, gore, etc.) for moderation labeling
Common rejection reasons
InvalidRequest: Image too large— image over 1 MB. Compress or use a smaller original.AuthExpired— the app password was revoked or your account changed its main password and Bluesky cascaded the invalidation. Generate a new app password and reconnect.RateLimitExceeded— Bluesky's per-account rate limit. The limits aren't documented but are generous (~hundreds of posts/day). If you hit it, wait an hour.