Publishing is one HTTP call. The sameDocumentation Index
Fetch the complete documentation index at: https://docs.letmepost.dev/llms.txt
Use this file to discover all available pages before exploring further.
POST /v1/posts endpoint handles immediate and scheduled posts; the response status code and the lifecycle differ.
Immediate publish
A post body withoutscheduledAt runs synchronously. Preflight runs, the upstream platform call fires, and the response is 201 with the platform-native URI:
immediate.sh
201.json
uri field’s shape is platform-native (AT Proto for Bluesky, Twitter snowflake id, LinkedIn URN, etc.). Save it if you need to deep-link to the post later.
Scheduled publish
AddscheduledAt and the post goes onto the publish queue. Response is 202 with status: "queued":
scheduled.sh
What to subscribe to
A successful immediate publish firespost.published. A scheduled publish fires post.queued immediately and then post.published (or post.rejected / post.failed) when the worker runs. Subscribe via POST /v1/webhook-endpoints and verify signatures per webhooks.
Idempotency
Every retry should reuse the sameIdempotency-Key. Replays within 24 hours return the original response — same status code, same body. See idempotency for the full contract.
When it fails
The error envelope is the same shape across every failure mode —code, message, rule, platformResponse, remediation, requestId. See errors for the eleven codes.
See also
Schedule posts
Defer publishes via
scheduledAt.Upload media
Three media-source modes; when to use each.
Connect accounts
OAuth flows per platform.
Webhooks
Stop polling; subscribe instead.