Skip to main content
POST

Authorizations

Authorization
string
header
required

Mint an API key in the dashboard. See https://letmepost.dev/docs/authentication/.

Headers

Idempotency-Key
string

Recommended on every write. Replays within 24 hours return the original response; conflicting bodies surface as 409 idempotency_conflict. See Idempotency.

Required string length: 1 - 128
Example:

"post-launch-2026-05-15-001"

Body

application/json

Multi-target publish request — fans a single body out to up to 25 connected accounts in one call. The legacy single-target account: {} shape is no longer accepted.

targets
object[]
required
Required array length: 1 - 25 elements
text
string

Default text applied to any target that omits its own text.

Minimum string length: 1
media
object[]

Default media applied to any target that omits its own media.

firstComment
object

Auto-posted reply to the published post. Bluesky-only today; ignored on platforms that don't support it.

publishNow
boolean

Explicit immediate-publish mode. Mutually exclusive with scheduledAt (mode_conflict). When neither is set the request publishes immediately.

scheduledAt
string<date-time>

ISO-8601 timestamp at least 1 second in the future. When set, every target row is queued and the response is 202. Scheduled posts accept text and media (media refs persist and the worker reads them back at fire time); firstComment (rule scheduledAt.no_first_comment) and Bluesky reply threading (rule scheduledAt.no_bluesky_reply) require an immediate publish.

Example:

"2026-06-01T12:00:00.000Z"

profileId
string<uuid>

Profile scope for this batch. Use to target a specific workspace when the API key or OAuth token is org-wide. Forbidden when the key is already scoped to a different profile (rule profile.scope_mismatch). Omit to fall back to the key's bound profile.

Response

Immediate publish completed. The batch envelope's status is published (all targets succeeded), partial_failed (mixed outcomes), or failed (every target failed). Per-target detail lives inside results[].

Batch envelope returned by POST /v1/posts. status summarizes the per-target outcomes.

id
string
required

Batch id — unique per request, ties the per-target rows together for audit.

Example:

"00000000-0000-0000-0000-000000000000"

status
enum<string>
required

queued: all targets queued for a scheduled publish (202). published: every target succeeded. partial_failed: mixed outcomes. failed: every target failed.

Available options:
queued,
published,
partial_failed,
failed
createdAt
string<date-time>
required
results
object[]
required
scheduledAt
string<date-time>

Set when the batch was scheduled (202 responses).