AddDocumentation Index
Fetch the complete documentation index at: https://docs.letmepost.dev/llms.txt
Use this file to discover all available pages before exploring further.
scheduledAt to a POST /v1/posts body and the request is persisted with status: "queued". A delayed job runs on the publish queue at the requested time.
Request
scheduled.json
Response
You get202 Accepted instead of 201 Created:
202.json
id. To check what happened later, fetch GET /v1/posts/:id — it returns the full attempt history once the job has run.
Constraints
scheduledAtmust be at least 1 second in the future. Closer than that and you getvalidation_failedwithrule: "scheduledAt.future". The 1-second floor is a guardrail against races where the worker fires before the persisting transaction commits.- v1 scheduled posts accept text only. Media and
firstCommenton scheduled posts surfacevalidation_failedwithrule: "scheduledAt.text_only". The remediation is to publish synchronously — the scheduled-media path needs persistent media storage and ships in a follow-up slice.
Lifecycle
A scheduled post moves through these statuses:post.queued— fired immediately on accept.post.published— successful publish.post.rejected— preflight or platform rejected; not retried.post.failed— transient failure; the worker may retry per the queue policy.
Idempotency on scheduled posts
Idempotency-Key works the same way as on immediate posts — the replay cache returns the original 202 response if you retry within 24 h with the same body. The queued job is enqueued exactly once.
Time zones
scheduledAt is ISO-8601 with a timezone offset. Always include the Z (or an explicit +HH:MM); naive datetimes are rejected. We do not interpret a “local” timezone for you.