Open-source social publishing API
OSS social media API.
Built for developers and AI agents.
Ship social features in minutes, not months. One POST fans out to eight platforms with scheduling, webhooks, and idempotency built in. It speaks native MCP for your agents, and it's Apache 2.0.
No credit card required.
The one call
One request in. A result per platform out.
No SDK gymnastics, no per-platform branching. Send the targets and the text, and get back a structured outcome for every destination. Never a single ambiguous boolean.
curl -X POST https://api.letmepost.dev/v1/posts \ -H "Authorization: Bearer $LMP_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "targets": [ { "platform": "bluesky" }, { "platform": "x" }, { "platform": "pinterest" } ], "text": "Shipped multi-target publishing today." }'
import { Letmepost } from "@letmepost/sdk"; const lmp = new Letmepost({ apiKey: process.env.LMP_KEY }); const result = await lmp.posts.create({ targets: [ { platform: "bluesky" }, { platform: "x" }, { platform: "pinterest" }, ], text: "Shipped multi-target publishing today.", // Idempotency-Key stamped automatically. }); // Per-target outcomes, never a single ambiguous boolean. for (const r of result.targets) { console.log(r.platform, r.status, r.url ?? r.error?.code); }
from letmepost import Letmepost lmp = Letmepost(api_key=os.environ["LMP_KEY"]) result = lmp.posts.create( targets=[ {"platform": "bluesky"}, {"platform": "x"}, {"platform": "pinterest"}, ], text="Shipped multi-target publishing today.", ) for r in result.targets: print(r.platform, r.status, r.url or r.error.code)
Why it's different
Built like infrastructure, not a wrapper.
The boring guarantees that separate a real API from a weekend script.
We absorbed the platform reviews
Meta App Review and LinkedIn's Marketing Developer Platform take weeks each. letmepost is the reviewed app of record. Connect through our OAuth and publish through our approved apps. X, Bluesky, and Pinterest are live today; the rest are in platform review.
It fails loudly, never silently
Eighty preflight rules run locally before any platform sees the request. Every error names the exact rule, the pinned platform version, and how to fix it, with a docs link. No empty 500s.
Always safe to retry
Every write accepts an Idempotency-Key. Retries return the cached response for 24 hours, so a flaky network never turns into a double post.
Open source, priced per org
Apache-2.0 from the first commit. The hosted image is the exact one you can self-host. Flat price per organization. Never per profile, never per seat.
Paid-in-full ledger
Work we did once, so you don't have to.
The integration tax other APIs pass to you, settled up front. Here's the bill we already paid.
Anatomy of a failure
Structured every time. No empty 500s.
When a request would break a platform's rules, letmepost rejects it locally with the exact rule that fired, the pinned platform version, and how to fix it.
For agents
letmepost speaks MCP natively.
A hosted MCP server at api.letmepost.dev/mcp and a stdio
binary on npm. Twenty-one tools, autogenerated from OpenAPI. Claude, Cursor,
Claude Code, opencode, any MCP-aware client drives the full surface.
{
"mcpServers": {
"letmepost": {
"command": "npx",
"args": ["@letmepost/mcp@latest"],
"env": { "LMP_API_KEY": "lmp_live_…" }
}
}
} Open source · honest pricing
Flat per org. Self-host free forever.
Profiles, connected accounts, team members, webhooks and API keys are all free. The only metered thing is posts published, with hard caps and webhooks at 80% and 100%. Never a surprise bill.
Fine print
Questions you'd ask in a code review.
What actually works today?
Bluesky, X, and Pinterest are live end-to-end. Connect an account, send a post, attach images or video, and get a webhook back. Instagram, Facebook, Threads, and LinkedIn are in platform review and flip on the day approval clears; TikTok is in App Review.
Why another social media API?
Because the existing ones fail silently, charge per-profile, and break every six months when a platform sunsets a version. This one fails loudly, charges per-org, and pins the version internally. Apache 2.0 from day one.
How much does it cost?
Flat-rate per org. A real free tier covers 50 posts a month. Full pricing →
Is it really open source?
Apache 2.0. The hosted SaaS runs the exact same image you can self-host. No feature gate, no open-core trick.
Do I have to handle Meta App Review myself?
No. Connect through our OAuth flow and you publish through our reviewed app. Self-hosters can BYO Meta app if they want their own reviewer-of-record.
Can my AI agent drive this?
Yes. Native MCP server at api.letmepost.dev/mcp and a stdio binary on npm. See the agents landing for the full tool surface.
Latest writing
Engineering notes from the platform-review queue.
Containerization with Docker: A Practical Guide
Learn containerization with Docker from scratch. Master concepts, Dockerfiles, security, & deploy real-world apps with Docker Compose.
Post to Instagram Automatically: A Developer's Guide
Learn to post to Instagram automatically using the API. This developer-focused guide covers authentication, idempotency, error handling, and reliability.
How to Create an API: Design to Deployment Guide 2026
Learn to create an API from design to deployment in 2026. This guide covers REST/GraphQL, security, testing, & practical examples for robust API development.
Send your first post in 90 seconds.
Ninety seconds from sign-up to a Bluesky post in production. Star the repo, file an issue when something's weird. We build in the open.