Bluesky API

The Bluesky API for posts, cards & quotes

Publish to Bluesky with images, video, link cards and quote posts, plus tags and content labels, from the same request you use for every other network.

What you can publish

Every Bluesky format, one endpoint

The same request that posts everywhere else, with the fields Bluesky needs and nothing it doesn't.

Images & video

Up to 4 images or videos per post, with long-form alt text on video.

uploadIds

Link cards

Attach a rich card with your own URL, title and description.

externalUrl

Quote posts

Quote another post by its URI and add your take.

quoteUri

Tags & labels

Up to 8 tags, and self-applied content labels for sensitive media.

labels
Beyond publishing

More than a way to post to Bluesky

Everything around the post — when it goes out, how it performs, where else it lands — through the same API.

Scheduling

Schedule Bluesky posts to the minute

Give a post a time and Bulkit publishes it then. Queue a week — or a quarter — of Bluesky content in one go, and let retries and rate limits take care of themselves.

  • Any time zone
  • Retries built in
  • Rate limits handled
Analytics

Bluesky analytics, in one schema

Post engagement, with impressions calculated from it, plus followers and post count. Same response shape as every other network, so there's nothing to reconcile.

  • Likes
  • Replies
  • Reposts
  • Quotes
  • Followers
Cross-posting

Bluesky and 11 more networks in one call

Add targets to the same request and one payload fans out everywhere, with each network getting the fields it needs. Upload media once and reuse it on every channel.

  • One API key
  • One schema
  • No per-network fees
AI agents

Let your AI agent post to Bluesky

Bulkit's MCP server gives Claude, Cursor or any MCP-compatible agent real tools to publish and schedule to Bluesky — the same actions your code calls.

  • Claude & Cursor
  • Scoped API keys
  • Every call logged
Bluesky at a glance

The Bluesky API's sharp edges, filed down

Bluesky limits and capabilities
SpecBluesky
FormatsText, images, video, link card, quote post
Post textUp to 300 characters
MediaUp to 4 images or videos
TagsUp to 8, 64 characters each
Link cardTitle 300 · description 1,000 characters
AnalyticsPost engagement; followers and post count

Link cards you control

Bluesky doesn't scrape links for you. Set externalUrl, externalTitle and externalDescription and the card renders the way you meant.

Content labels

Self-label sensitive media with labels such as graphic-media or nudity, or hide a post from logged-out viewers.

Quote posts

Point quoteUri at any post to quote it. No record-building against the AT Protocol by hand.

Engagement, calculated

Bluesky has no impression counts, so impressions are the sum of likes, replies, reposts and quotes — and labelled as such.

Bluesky is one of 12 channels

Add a target and the same post goes out everywhere else too — one key, one schema, no per-network fees.

FAQ

Bluesky API: common questions

  • Does Bluesky have a posting API?

    Yes, via the AT Protocol. Bulkit wraps it so a Bluesky post uses the same request as every other network.

  • Can I add link previews to Bluesky posts?

    Yes. Set externalUrl, externalTitle and externalDescription to attach a link card.

  • Can I schedule Bluesky posts?

    Yes. Give the post a postDate and Bulkit publishes it at that time.

  • What analytics are available for Bluesky?

    Post likes, replies, reposts and quotes, with impressions calculated as their sum, and followers, following and post count at profile level.

  • How much does it cost?

    $4.99/month with 500 actions included, then $0.01 per action. Bluesky is included with every other network.

Your first Bluesky post is one request away

$4.99/mo with 500 actions included, then $0.01 each. Bluesky and every other network on the same key.