One of the cleanest fits for UniPost: short-form text, image and video support, and multi-post threading all map cleanly into the standard publish model.
Short-form text with images, video, and native threads.
At a glance
Publishing
Supported
Scheduling
Supported
Analytics
Limited
Inbox
Not supported
Connection
Handle + app password — no OAuth
Feature matrix
Feature
Support
Notes
Text posts
✓
Up to 300 graphemes
Image posts
✓
Up to 4 images
Video posts
✓
Exactly 1 video
Threads
✓
Use thread_position
Scheduling
✓
Use scheduled_at
Text-only posts
✓
Media is optional
First comment
X
Use threads instead
Inbox / DMs
X
Not part of the UniPost inbox today
Known constraints
Limitation
Why
Daily safety cap
50 publishes/day per connected Bluesky account (UTC reset). Failed posts do not count toward the cap.
No OAuth
Authentication is via app password — generate one in Bluesky settings
Engagement only in analytics
Bluesky API does not expose impressions, reach, or views
No inbox surface
Replies are not synced into UniPost inbox today
Publishing
Ready to publish?Use the shared Publishing guide for hosted URLs, local file uploads, preflight validation, and async publish status. Then use the Bluesky examples below for platform-specific payload shape.
Publish examples by surface
Each example calls POST/v1/posts with Bearer auth. Swap the account_ids for your own, then copy the snippet for your language.
Text post
Image post
Thread
Media & field requirements
Field
Required
Limits
Notes
caption
Optional
300 graphemes
Validate catches overages before publish
media_urls or media_ids
Optional
1-4 images OR 1 video
Use media_urls for hosted assets or media_ids for local files uploaded via POST/v1/media. Do not mix image and video.
thread_position
Optional
1-indexed
Preferred way to create multi-post flows
first_comment
Rejected
n/a
Use thread_position instead
Hosted URLs: pass the public URL in media_urls. Local files: reserve an upload with POST/v1/media, PUT the bytes to the returned upload_url, then publish with media_ids. Full flow in the Publishing guide.
Media specifications
Per-surface limits for text, images, and video. These are the source of truth UniPost uses for preflight validation and media optimization — treat hard-limit values as enforced and "recommended" values as platform guidance.
Bluesky is grapheme-counted (not UTF-16 code units). URLs and mentions consume the 300-grapheme budget.
Type
Requirement
Value
Text
Character limit
300 graphemes (hard limit)
Text
Per thread entry
300 graphemes each
Image
Formats
JPEG, PNG, WebP
Image
Max per post
4
Image
Max file size
~1 MB per image after server compression (strict)
Image
Max dimensions
2,000 × 2,000 px
Image
Aspect ratio
Any; 16:9 (1,200 × 675), 1:1, 4:5 common
Video
Formats
MP4, MOV (H.264 + AAC)
Video
Max per post
1
Video
Max file size
50 MB
Video
Max duration
60 sec
Video
Max dimensions
1,920 × 1,080 px
Video
Aspect ratio
16:9 or 1:1 recommended
Video
Frame rate
30 fps recommended
Video
Audio
AAC
Analytics
Metric
Support
Notes
Likes
✓
Supported
Comments / replies
✓
Supported
Shares / reposts
✓
Supported
Impressions
X
Not exposed by Bluesky
Reach
X
Not exposed by Bluesky
Saves
X
Not exposed by Bluesky
Video views
X
Not exposed by Bluesky
Connection modes
Pick the setup that matches how the account is owned. Quickstart is fastest when you publish to your own accounts; White-label is required when your customers bring their own accounts through a branded flow. Full setup details in Quickstart and White-label.
Mode
Best for
App / credentials
Availability
Quickstart
Paste Bluesky handle + app password — no OAuth
None required
Free
Credentials
Paste handle + app password (no OAuth)
Bluesky app password
Free
White-label
Not applicable — Bluesky does not use OAuth apps
—
—
Validation errors
Code
What it means
caption_too_long
Caption exceeds 300 graphemes
first_comment_unsupported
Bluesky uses threads instead of first-comment publishing