Skip to main content
Every platform letmepost.dev supports goes through the same API surface — POST /v1/posts with targets: [...]. Per-platform quirks (caps, mime types, OAuth shapes) live in preflight rules so failures surface locally with a rule id instead of an opaque upstream error.
Bluesky, X, and Pinterest are live today. The remaining platforms (Instagram, LinkedIn, Facebook, Threads) are gated on their developer-portal reviews and turn on as approvals clear. The API surface is identical regardless of which platforms are approved for your org, same POST /v1/posts, same error envelope. Live status is also queryable at GET /v1/platform-versions.

Twitter / X

v2 API · OAuth 2.0 PKCE · 4-up images, video, reply chains, quote tweets, Premium 25k chars.

Instagram

Meta Graph · Standalone Instagram Login · Photos, Reels, carousels (≤10) for Business/Creator.

LinkedIn

Versioned REST · Personal posting in v1; org posting needs Marketing Developer Platform.

Facebook Pages

Meta Graph · Facebook Login for Business · Page text, photos, videos.

Threads

Threads Graph · Standalone OAuth at threads.net · Text + carousel (2–20, mixed image/video).

Pinterest

v5 API · OAuth 2.0 · Image + video pins · Cover image required for video.

TikTok — in review

Content Posting API · OAuth 2.0 PKCE · Upload-inbox path. Pending TikTok app review — connect is gated until approval lands.

Bluesky

AT Proto · App-password connect (no OAuth) · Text + media + first comment.

What’s the same everywhere

  • One request shape. POST /v1/posts with targets: [{ accountId, ... }], optional media, optional scheduledAt.
  • One error envelope. code + rule + platformResponse + remediation + docUrl + ruleUrl — no per-platform body: {} surprises.
  • Idempotency keys. Every write accepts Idempotency-Key; replays return the original response.
  • Preflight, not postflight. Documented platform rules run locally before the upstream call.
  • Multi-target fan-out. One request can publish to N targets in parallel with per-target overrides.

What’s different per platform

concernvaries by
Connect flowOAuth shape (Meta Login for Business, OAuth 2.0 PKCE, etc.); Bluesky uses app passwords
Token lifetimeBluesky: minutes · X: ~2h · Threads/IG/FB: ~60d · LinkedIn: 60d (no refresh) · Pinterest: 30d
Media constraintsmime allowlist, size cap, count cap, mixed image+video acceptance
Text capsTwitter 280 · Bluesky 300 · Threads 500 · Instagram 2200 · LinkedIn 3000 · Facebook 63206
Required body shapeInstagram requires media; Facebook accepts text-only; Pinterest needs board id
Scope setminimum scope to publish + optional extended scopes for read access
The per-platform pages above link to the exact constraints and the OAuth scope set.

Out of v1

Deliberately cut:
  • Reddit, Telegram, Discord, Snapchat, Google Business, WhatsApp — long-tail platforms with fewer than 1k accounts each in the dataset that drove platform priority decisions.
TikTok was originally cut for the same audit-complexity reason; it’s now landed under App Review and surfaces as in review until the upload-inbox track clears.

Build order

Platform priority was decided from the 90-day post-volume / failure-rate corpus (see PRODUCT.md for the data):
  1. Bluesky — first to ship. Simple AT Proto, no app review, minutes-long JWT lifecycle is a good forcing function for the token-refresh architecture.
  2. LinkedIn — the wedge platform. #1 complaint volume in the 150-citation research corpus, cleanest API of the major networks, no brutal approval gauntlet.
  3. Twitter / X — table-stakes for the automation-builder ICP.
  4. Instagram + Facebook + Threads — Meta Graph trio, built together because they share auth (well, Threads is its own).
  5. Pinterest — cheapest integration, fastest-growing network in the dataset (+1369% over 90 days).
Watch the changelog for live status flips.