letmepost / platforms / Bluesky

Ship Your Integration
In Minutes, Not Weeks.

No developer-portal queue. No third-party OAuth review. No demo videos. letmepost gives you a single endpoint to publish text, images, video, reply chains, and quote posts. AT Proto handled, graphemes counted, facets resolved, federated PDSes supported.

Live · day-zero platform · read the docs →
POST /v1/posts ·
{
  "targets": [{ "platform": "bluesky" }],
  "accountId": "acc_bsky_xyz",
  "text": "Hello from letmepost. 300 graphemes safe."
}

Why letmepost vs AT Proto direct?

Bluesky Direct

  • You write the PDS resolver yourself
  • You implement the facet parser for @handles and #tags
  • You handle the graphemes AND bytes dual cap
  • You build the video transcoding pipeline
  • You manage app-password rotation per account
  • You hand-roll federation for custom PDSes

letmepost API

  • One endpoint, same shape as all other platforms
  • Facets auto-detected and resolved before publish
  • 80 preflight rules including grapheme + byte caps
  • Video routed through our transcoding service
  • App passwords stored encrypted, rotated transparently
  • Federation handled per-account
Bluesky was our day-zero platform. The reason letmepost shipped in four weeks instead of six months.

✓ No OAuth review required

AT Proto lets any user create an app password and authenticate with it directly. No third-party OAuth approval, no Meta-style App Review, no demo videos. The API is live the moment your user pastes an app password into our dashboard.


PLAYGROUND

connect, configure, post
▸ Connect▸ Configure▸ Execute

Generate an app password in Bluesky → Settings → Privacy & Security → App passwords. Paste into our dashboard. Post immediately.

CONNECT BLUESKY →
Live in ~12 seconds. NO OAUTH DANCE

CONTENT TYPES

every bluesky surface, one shape
Text · 300 graphemes
Photos · up to 4
Video · single MP4
Reply chains
Quote posts

HOW IT WORKS

three steps · under two minutes

Get your API key

Sign up at dashboard.letmepost.dev. 30 seconds. No credit card. Free tier covers 50 posts/mo across all platforms.

Connect a Bluesky account

Paste an app password from your Bluesky settings. No OAuth dance, no review queue, no app submission. Stored AES-256-GCM encrypted at rest.

Send a post

One POST /v1/posts with platform: "bluesky". We resolve facets, count graphemes + bytes, push to your PDS, fire post.published within 3 seconds.


FEATURES

what we built so you don't

No review queue

AT Proto needs no developer-portal approval. You connect with an app password and post immediately. Most permissive on-ramp in v1.

Grapheme + byte caps

Bluesky enforces both 300 graphemes AND 3,000 UTF-8 bytes. We check both with Intl.Segmenter, exactly the way AT Proto does.

Facets auto-detected

@handle.bsky.social and #hashtag facets parsed and resolved to DIDs before publish. Unresolvable handles fail loudly.

Custom PDS support

Federation is real on Bluesky. Per-account PDS config. Default is bsky.network. Bring your own PDS, we route correctly.


CODE EXAMPLE

post to bluesky · typescript
publish-bluesky.ts ·
import { Letmepost } from '@letmepost/sdk';
const lmp = new Letmepost({ apiKey: process.env.LMP_API_KEY });

const result = await lmp.posts.create({
  targets: [{ platform: 'bluesky', accountId: 'acc_bsky_xyz' }],
  text: 'Just shipped a feature with letmepost. 🎉 #buildinpublic',
  media: [{
    type: 'image',
    url: 'https:x0
    alt: 'Receipt-themed landing page',
  }],
});

for (const r of result.targets) {
  if (r.status === 'published') {
    console.log('AT URI:', r.url);
    // at://did:plc:abc.../app.bsky.feed.post/3lqz...
  }
}


COMMON QUESTIONS

about publishing to bluesky

Does Bluesky require OAuth?

No. AT Proto uses app passwords instead of OAuth. Generate one in Bluesky → Settings → Privacy & Security → App passwords. Paste into our dashboard. That's the entire connect flow.

What about Bluesky's grapheme + byte limits?

Both enforced locally. 300 graphemes max, 3,000 UTF-8 bytes max. Whichever caps first wins. A wall of emoji can blow the byte limit before the grapheme limit. Use our grapheme counter to check.

Can I post to a custom Bluesky PDS?

Yes. Per-account PDS config. Default is bsky.network. If your user is on a custom PDS, we route to it correctly.

Does video work on Bluesky?

Yes. Single MP4 per post. Routed through our transcoding service automatically — Bluesky's video upload has format constraints we normalize for you.

Can I create reply chains and quote posts?

Yes. Pass inReplyTo: "at://..." for replies, quote: "at://..." for quote posts. Same as a regular post otherwise.

What does Bluesky cost?

Free for users, free for us, free for you. AT Proto doesn't gate API access. Your only cost is letmepost's flat per-org rate.


ONE API · 8 PLATFORMS

bluesky is just one of them

LEARN MORE


READY TO PUBLISH TO BLUESKY?

The platform that needs no review queue. Sign up, paste an app password, send your first post in under two minutes.

* * * AT PROTO · DAY ZERO * * *
PLAT · BLUESKY · AT PROTO · LIVE
→ START FREE