Trusted by 2,000+ developers

Ship Your Bluesky Integration In Minutes, Not Months

Stop wrestling with the AT Protocol, session tokens, and rich-text facets. PostZen publishes to Bluesky through one simple endpoint - so you can focus on building your product.

No credit card required

import PostZen from '@postzen/node';

const postzen = new PostZen();

await postzen.posts.createPost({
  body: {
    content: 'Hello from Bluesky!',
    publishNow: true,
    platforms: [{
      platform: 'bluesky',
      accountId: 'your-bluesky-account-id',
    }],
  },
});

WHY POSTZEN?

PostZen vs. AT Protocol

AT Protocol brings its own authentication, rate limits, media rules, and maintenance. PostZen replaces it with one predictable integration.

PostZen

2.3M+ posts

2,000+ developers
  • Simple API key authentication - no OAuth complexity
  • We handle rate limits automatically with smart queuing and retries
  • Upload media directly to us - we host and optimize it for you
  • Zero maintenance - we handle all API changes behind the scenes
  • One integration for 10 social platforms with identical patterns

Bluesky AT Protocol Direct

  • Create an app password and manage AT Protocol sessions yourself
  • Build rich-text facets by byte-indexing links, mentions, and hashtags
  • Resolve handles to DIDs and PDS endpoints before every post
  • Upload image blobs and construct link-card embeds by hand
  • Build separate integrations per platform

FEATURES

Bluesky API — Everything Included

One complete API for Bluesky formats, controls, and scheduled publishing

Text Posts

Publish Bluesky posts through one REST call with length validation before sending.

Images & Alt Text

Attach up to four images and preserve accessible alt text for every image.

Rich Link Preview Cards

Turn destination links into native preview cards without manually building embeds.

Mentions & Hashtag Facets

PostZen detects handles, hashtags, and links and creates clickable rich-text facets.

Cross-Platform Publishing

Send a Bluesky variant alongside X, LinkedIn, Threads, and other networks in one call.

Schedule & Queue

Choose a future publish time or add Bluesky posts to your automatic queue.

HOW IT WORKS

Start Posting to Bluesky in Minutes

Three steps to integrate the Bluesky Upload API

  1. 01. Create your account

    Sign up for PostZen and grab your API key from the dashboard.

  2. 02. Connect Bluesky

    Authorize your Bluesky account once. We manage OAuth, permissions, and publishing access for you.

  3. 03. Upload programmatically

    POST to /v1/posts with Bluesky selected and your content or media. Done.

CODE EXAMPLE

Create a Post on Bluesky via API

One POST request to /v1/post — send a file or a public URL

const response = await fetch("https://api.postzen.dev/v1/posts", {
  method: "POST",
  headers: {
    "Authorization": "Bearer POSTZEN_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    platforms: [{ platform: "bluesky", accountId: "your-bluesky-account-id" }],
    content: "Now publishing to Bluesky from PostZen 🦋",
    mediaItems: [{ url: "https://cdn.example.com/launch-image.jpg", title: "Launch day dashboard" }],
    scheduledFor: "2026-06-15T19:00:00Z",
    tags: ["launch", "bluesky"]
  })
});

const result = await response.json();
console.log("Scheduled successfully:", result.post._id);

Frequently asked questions

Still have questions?

Do I need a Bluesky developer account?

No. Bluesky has no developer portal or API approval process. You connect with your Bluesky handle and an app password created in your Bluesky settings, and PostZen publishes through the AT Protocol for you.

How do I connect a Bluesky account?

In Bluesky, open Settings → Privacy and Security → App Passwords and create one. Add it to PostZen with your handle and you're connected - no OAuth flow to approve.

What's the character limit for Bluesky posts?

Bluesky allows 300 characters per post. PostZen validates length before publishing and warns if content is too long. Links, @mentions, and #hashtags become clickable rich-text facets automatically.

Does PostZen support Bluesky video?

Not yet. PostZen supports text and up to 4 images with alt text per Bluesky post today. Video upload is on our roadmap.

Are app passwords safe to use with PostZen?

Yes. App passwords are separate, revocable credentials that never expose your main Bluesky login. Revoke one in Bluesky settings anytime to disconnect PostZen, and the rest of your account is unaffected.

Can I schedule Bluesky posts in advance?

Yes. Set a scheduledFor timestamp and PostZen publishes at the exact time. You can also cross-post to X, Threads, LinkedIn, and other supported platforms in the same API call.

Ready to Ship Your Bluesky Integration?

Join the 2,000+ developers who chose PostZen over building around disconnected platform tools. Same reliability, 10x less code.