Works with all AI agents

Connect your AI agent

Choose your assistant and connect in seconds.

Add to Claude

Works on every Claude plan, including free. Full Claude guide

  1. 1

    Add to Claude

    One click from Claude’s connector directory.

  2. 2

    Sign up or sign in

    Takes seconds, then you’re sent straight back.

  3. 3

    Ask Claude

    “Plan and schedule my posts for next week.”

PostEverywhere Bluesky API Guide

PostEverywhere API reference for Bluesky: request fields, media rules and examples for text posts, images, video and threads.

Publish text posts, image posts, video posts, and threads to Bluesky (the AT Protocol network). PostEverywhere handles the AT Protocol session, rich-text facets, and media attachments through a single call. For a general overview of all supported platforms, see the Introduction.

Connect your Bluesky account to PostEverywhere

Bluesky uses an app password, not OAuth. In your PostEverywhere dashboard, go to Accounts → Connect Bluesky and enter:

Use an app password, never your main account password. You can revoke it from Bluesky at any time without affecting your login.

What you can post to Bluesky

Content Type Media Required Description
Text post None Plain text post, up to 300 characters.
Image post Image(s) Post with up to 4 attached images.
Video post Video (MP4) Post with a single video attachment.
Thread None / media A chain of connected posts (each up to 300 characters).

Bluesky is short-form: posts are capped at 300 characters. Links, @mentions, and #hashtags in your text are detected automatically and turned into rich-text facets: you don't need to format them. URLs become clickable link facets; PostEverywhere does not currently attach an external link-preview card.

Bluesky limits: characters, media and video

Requirement Limit
Post text length 300 characters (Unicode grapheme-aware)
Images per post Up to 4
Image formats JPEG, PNG, WebP (GIF and HEIC are accepted but re-encoded as a static JPEG)
Image handling Automatically recompressed to ≤ 2 MB per image if needed
Video format MP4 (H.264)
Video max file size 100 MB
Video duration Up to 3 minutes
Links Auto-detected and made clickable (no preview card is attached)
Mentions / hashtags Auto-detected from @handle / #tag in text

Publish to Bluesky: a working request

Schedule a Bluesky Text Post

curl -X POST https://app.posteverywhere.ai/api/v1/posts \
  -H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Cross-posting from PostEverywhere — links like https://posteverywhere.ai and #hashtags are detected automatically.",
    "account_ids": [2295],
    "scheduled_for": "2026-06-01T12:00:00Z",
    "timezone": "UTC"
  }'

Schedule a Bluesky Post with Images

Upload your images first (see Upload Media), then attach the returned IDs:

curl -X POST https://app.posteverywhere.ai/api/v1/posts \
  -H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Four shots from launch day 🦋",
    "account_ids": [2295],
    "media_ids": [
      "11111111-1111-1111-1111-111111111111",
      "22222222-2222-2222-2222-222222222222",
      "33333333-3333-3333-3333-333333333333",
      "44444444-4444-4444-4444-444444444444"
    ]
  }'

Post a Thread

Use thread_posts to publish a connected chain. Each entry becomes a reply to the one before it:

curl -X POST https://app.posteverywhere.ai/api/v1/posts \
  -H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "A short thread on why we built a unified posting API 🧵",
    "account_ids": [2295],
    "thread_posts": [
      "1/ Managing every social platform by hand does not scale.",
      "2/ One API call fans out to all of them, with per-platform overrides.",
      "3/ Bluesky is one of them. Try it: https://posteverywhere.ai"
    ]
  }'

Getting better results on Bluesky

  • Keep it under 300 characters. Bluesky counts by Unicode grapheme, so emoji and combined characters count as one. If you need more room, use a thread.
  • Don't pre-shorten links or build markdown. Link, @mention and #hashtag facets are generated automatically from the raw text: paste the URL or handle directly.
  • Images are recompressed for you. Each uploaded image blob is capped at 2 MB; PostEverywhere downsizes large images automatically so you can send full-resolution files.

Common questions about posting to Bluesky

How do I connect a Bluesky account?

Bluesky uses an app password rather than OAuth. Create one at bsky.app → Settings → App Passwords, then add your handle and that app password under Accounts → Connect Bluesky in the PostEverywhere dashboard.

What is the character limit for Bluesky posts?

300 characters, counted by Unicode grapheme. Emoji and combined characters count as a single character. For longer content, split it across a thread using thread_posts.

Can I attach images or video to a Bluesky post?

Yes. Upload your media and pass the returned UUIDs in media_ids. Bluesky supports up to 4 images (JPEG, PNG or WebP; GIFs are converted to a static JPEG) or a single MP4 video up to 100 MB and 3 minutes. Large images are automatically recompressed to fit Bluesky's per-blob size limit.

No. Include the raw URL, @handle, or #hashtag in your content and PostEverywhere generates the correct AT Protocol rich-text facets automatically (links are clickable; no preview card is attached).

Can I edit a Bluesky post after it's published?

No. The AT Protocol does not expose a post-edit operation: Bluesky's official model is delete-and-repost. PATCH /v1/posts/:id only accepts posts in scheduled or draft status. To change a published Bluesky post, delete it (in the Bluesky app or via repository tooling) and recreate it from PostEverywhere.

Other platforms you can publish to

  • X (Twitter): similar short-form text and threading model
  • Threads: short-form conversational posts by Meta
  • LinkedIn: longer-form posts with PDF/document support

Related: Bluesky media requirements · connecting a Bluesky account · testing posts safely · how to post to Bluesky programmatically · the PostEverywhere social media API · the Discord guide