Skip to content
API and publishers operational
Vol. I · No. 4Docs · API v1

Concepts

Posts and targets

A post is the content; a target is that content on one account. Each target moves through its own state machine.

A post holds the text, media and schedule. A target is that post on one account: @ClaudePass_HQ on X is one target, @wisparm_keyboard on Instagram another. Targets succeed and fail independently, so a post can be partly published.

Overrides§

Each target may carry an override with its own text, media_ids or options. That is how one call sends short copy to X and a Reel with a longer caption to Instagram. Validation runs per target, against the merged result.

Target states§

held
Waiting on a person: approval, or a draft nobody has scheduled.
scheduled
Will be claimed by a worker at publish_at.
publishing
A worker holds the account lease and is sending.
awaiting_platform
Sent; the platform is still processing (Instagram containers).
retry_wait
A retryable error. The next attempt is booked with backoff.
unknown
The call may or may not have landed. Reconciled with the platform before any retry.
needs_reconnect
The account's token stopped working. A person must reconnect it.
published
Live, with the platform's id and URL.
failed
Gave up, with the error and whether a retry is safe.
canceled
Withdrawn before it went out.

Post status§

The post’s own status is computed from its targets: published when all are, partially_published when some are, failed when none could be. Before that it is draft, pending_approval, rejected or scheduled.

Late is a failure§

Every target has a not_after (default publish_at + 6h). If it has not published by then it fails as stale rather than posting hours late. Timings are targets, not promises; a late launch post is usually worse than none.

Why nothing posts twice§

  1. An attempt row is committed before the irreversible platform call.
  2. One worker at a time holds an account’s lease, so two workers never send the same target.
  3. A timeout becomes unknown, and the worker searches the account for the post before it tries again.