Docs › Reference › Post statuses
Post statuses: every status and which are final
Every status a result for one channel can have, every status of a whole post, which are final, and how the post's status is worked out.
There are two levels of status. A result is what happened on one channel (the API calls it a
target). A post is the whole thing you sent to several channels (the API calls it a group). The
API returns the values below in lower case, in status.
Results (one channel)
| API status | Shown in the app as | Meaning | Final? |
|---|---|---|---|
pending |
Waiting to send | Saved, not yet picked up. | No |
preflight |
Checking the post | OmniPosts is checking text, media and the channel before sending. | No |
queued |
Scheduled | Ready, waiting for its time. Also where a retry waits. | No |
publishing |
Sending now | OmniPosts has started handing the post to the platform. | No |
awaiting_platform |
Waiting for the platform to finish | The platform took the post and is still processing it. | No |
unknown |
Checking whether this posted | Sent, but the platform did not confirm. OmniPosts is looking it up and will not resend. | No |
published |
Posted | Live. The result has a link. | Yes. It never changes again. |
failed |
Not posted | Did not go out. Has a reason and one action. | Usually. It can go back to queued when a retry is allowed. |
cancelled |
Cancelled | Cancelled before sending started. | Yes |
How a result moves:
pendingtopreflighttoqueuedtopublishing.- From
publishingit ends atpublished,failed,awaiting_platformorunknown. awaiting_platformends atpublished,failedorunknown.unknownends atpublishedorfailed, and only after OmniPosts has looked the post up. It is never resolved by sending again.pending,preflightandqueuedcan also go straight tofailed(the checks rejected the post, so nothing was sent) or tocancelled.publishingcan return toqueuedwhen the failure happened strictly before the post reached the platform and is safe to try again, such as a refused connection.failedcan return toqueuedwhen a retry is allowed. See Failure classes.- A
failedresult can becomepublishedin one case: OmniPosts's look-up said the post had not gone out, and a later, real answer from the platform shows that it had.
You can cancel a result only while it is pending, preflight or queued. After that it may already
be on the platform.
The statuses publishing, awaiting_platform and unknown mean a send may have reached the
platform. That is why they cannot be cancelled and why OmniPosts never resends them.
Posts (the whole thing)
| API status | Shown in the app as | Meaning | Final? |
|---|---|---|---|
draft |
Draft | No channels yet. | No |
scheduled |
Scheduled | Every channel is still waiting to send. | No |
publishing |
Sending | At least one channel is being sent or checked, or some channels are done while others still wait. | No |
published |
Posted everywhere | Every channel that was not cancelled has posted. | Yes |
partial |
Posted to some channels | At least one channel posted and at least one did not. | Mostly. A retry can change it. |
failed |
Not posted | No channel posted, and at least one failed. | Mostly. A retry can change it. |
cancelled |
Cancelled | Every channel was cancelled. | Yes |
Status of the whole post
OmniPosts works the post's status out from its results. These rules are checked in this order:
- A post with no results is a
draft. - If every result is
cancelled, the post iscancelled. - If any result is
publishing,awaiting_platformorunknown, the post ispublishing. OmniPosts never shows a final verdict while a send might still be in flight. - Otherwise, if any result is still
pending,preflightorqueued: the post ispublishingwhen some other result is alreadypublishedorfailed, andscheduledwhen none is. - Otherwise nothing is waiting or in flight. If no result
failed, the post ispublished. If somefailed, it ispartialwhen at least onepublished, andfailedwhen none did.
Cancelled results are ignored in rules 4 and 5, so cancelling one channel of three leaves a post that
can still become published.
Where you see them
The Inbox lists results, one row per channel. The Calendar and the post detail page show the
post. The API reads them with GET /v1/groups/{id} for a post and GET /v1/targets for results. The
whole story of a result is in Posts and results.