PublishQPublishQ

Bluesky

Post text, images, and videos to Bluesky through the PublishQ API.

What you can post

TypeSupportedMax mediaNotes
Text only0Up to 300 characters
Image post4JPEG, PNG, WebP. Max 1 MB per image
Video1MP4 only. Max 100 MB, up to 3 minutes

Limitations

  • 300 character limit. Emojis count as their UTF-8 byte length, not as 1 character. A single emoji like 🚀 uses 4 bytes, so heavy emoji use reduces your effective limit.
  • 1 MB per image. Images larger than 1 MB will be rejected by Bluesky.
  • GIF files are not supported. Bluesky only displays the first frame of a GIF as a static image. Convert animated GIFs to MP4 and post as video instead.
  • You cannot mix images and video in the same post. A post is either up to 4 images or a single video.

Posting to Bluesky alongside other platforms

Bluesky has a 300-character limit, but platforms like Facebook or LinkedIn allow much longer content. You don't need to create a separate post — use postOverrides on the Bluesky account entry to provide shorter content just for Bluesky while keeping the full text for other platforms.

{
  "content": "Your long-form content for Facebook, LinkedIn, etc...",
  "accounts": [
    { "accountId": "facebook-account-id" },
    { "accountId": "linkedin-account-id" },
    {
      "accountId": "bluesky-account-id",
      "postOverrides": {
        "content": "Short version for Bluesky 🦋"
      }
    }
  ],
  "publishNow": true
}

Quick start

Post text

Mentions (@handle.bsky.social), links, and hashtags in your content are detected and rendered as rich text automatically. If you mention a handle that doesn't exist, it renders as plain text — no error.

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Hello from PublishQ! Check out @bsky.app 🦋",
    "accounts": [
      { "accountId": "your-bluesky-account-id-on-publishq" }
    ],
    "publishNow": true
  }'

Post an image

Up to 4 images per post. Text is optional — you can post images with no caption.

Get your media ready

curl -X POST https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..." \
  -F "[email protected]"

Repeat for each file (up to 4 images).

curl https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..."

Pick the id of each media item you want to use from the response.

Create the post

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Photo dump from the weekend 📸",
    "mediaIds": ["media-id-1", "media-id-2", "media-id-3", "media-id-4"],
    "accounts": [
      { "accountId": "your-bluesky-account-id-on-publishq" }
    ],
    "publishNow": true
  }'

Post a video

A single MP4 video per post. Text is optional. The video is preprocessed by Bluesky's video service before the post goes live, so there's no loading delay for your followers — the video is ready to play immediately.

Bluesky requires email verification on the connected account before video uploads.

Get your media ready

curl -X POST https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..." \
  -F "[email protected]"
curl https://publishq.com/api/v1/media \
  -H "Authorization: Bearer pq_live_..."

Pick the id of the video you want to use from the response.

Create the post

curl -X POST https://publishq.com/api/v1/posts \
  -H "Authorization: Bearer pq_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Check this out 🎬",
    "mediaIds": ["media-id-from-step-1"],
    "accounts": [
      { "accountId": "your-bluesky-account-id-on-publishq" }
    ],
    "publishNow": true
  }'

Media specs

Images

SpecValue
FormatsJPEG, PNG, WebP
Max file size1 MB per image
Max per post4

Aspect ratios are detected automatically and embedded in the post record.

Video

SpecValue
FormatMP4
Max file size100 MB (increased from 50 MB)
Max duration3 minutes (increased from 60 seconds)

Not yet supported

  • GIF attachments — Bluesky renders GIFs as static images. Convert to MP4 for animation.
  • Video captions — VTT subtitle files for accessibility.

On this page