POST /v1/posts shape works for every platform we support — Twitter is the entry-point because most developers already think in tweets.
Twitter and Bluesky are live today. The remaining platforms (Instagram, LinkedIn, Facebook, Threads, Pinterest) are gated on their developer-portal reviews and turn on as approvals clear. Same API, same error envelope, same idempotency contract — substitute any connected
accountId below if you’re starting on a different platform.1. Get an API key
Sign in at dashboard.letmepost.dev and mint a key from the API keys page. Keys look likelmp_live_… (production) or lmp_test_… (sandbox). Treat them like passwords; the dashboard only shows the secret once.
2. Connect Twitter
Open the dashboard’s Accounts page and click Connect X / Twitter. The OAuth 2.0 PKCE flow is fully handled for you — you grant scopes once and we manage refresh transparently afterwards. When you come back, the account row will show the connected handle and anid you’ll send posts against.
Each platform has its own connect flow (OAuth, PKCE, or app password for Bluesky). They’re all documented per platform under Platforms, but the dashboard is the easiest path for the first connection — it manages redirects and stores tokens encrypted.
id from the dashboard. You’ll need it in the next step.
3. Send a tweet
accountId with the id you copied from the dashboard. The active language tab is sticky — picking TypeScript here will follow you across every code sample on this site.
4. Read the response
A successful immediate publish returns200 OK with a batch envelope:
200.json
results[].uri is the public URL of the tweet. Save id (the batch id) and results[].postId — that’s how you fetch the record later via GET /v1/posts/:id.
5. Fan out to multiple platforms
Same call, moretargets. One request, N publishes, atomic shape preflight, structured per-target results:
status summarizes the outcomes: published when every target succeeded, partial_failed on mixed outcomes, failed when none did. Each results[] entry tells you what happened on that platform.
6. What happens when it fails
Send a 400-character tweet and you’ll get this back instead:400.json
code, the rule that fired, a remediation, a requestId you can grep, and docUrl / ruleUrl links straight to the right docs page. See errors for the full catalog and error best practices for the contract.
Next
Platforms
Twitter, Instagram, LinkedIn, Facebook, Threads, Pinterest, Bluesky — caps, scope sets, and per-platform wisdom.
Idempotency
Why every retry is safe.
Errors
The twelve codes and the rule catalog.
API reference
POST /v1/posts parameter by parameter.
