Postato Docs
MCP ToolsTools

Get Post Status

Returns the current status of a post including delivery details, thread items, and media. Status values: "pending" (queued), "processing" (being sent), "publish

get_post_status

Returns the current status of a post including delivery details, thread items, and media. Status values: "pending" (queued), "processing" (being sent), "published" (delivered), "failed" (all retries exhausted), "draft" (saved, not queued), "scheduled" (queued for future). When published, platformPostId and platformUrl are available.

Parameters

ParameterTypeRequiredDescription
postIdstringyesThe post ID returned by publish_post.
workspaceIdstringnoWorkspace ID. Required if your API key accesses multiple workspaces.

When to use

After publish_post returns queued, use get_post_status to poll the delivery outcome. Most posts finalize within seconds; a minority take longer when the target network is slow or rate-limited.

Prefer webhooks (post.published / post.failed) for production — they deliver state changes in real time without polling overhead.

Typical flow

publish_post → { postId, status: "queued" }
   ↓ wait 2–5 s
get_post_status(postId) → { status: "publishing" }
   ↓ wait 2–5 s
get_post_status(postId) → { status: "published", externalId, externalUrl }

Terminal states

  • published — successfully delivered; externalUrl points at the post on the network.
  • failed — permanent failure; error describes why. Retrying the same idempotencyKey will not cause a new attempt.
  • scheduled — awaiting scheduledAt. Comes back to queued at that time.
  • draft — sitting in the drafts table. Change status to publish it.
  • pending_approval — waiting on a reviewer. Decision posts back to the queue.

Gotchas

  • Polling interval: 2–5 seconds is fine for user-facing flows. Anything faster is wasted calls.
  • Status is workspace-scoped. If the caller lost access to the workspace since creation, the call returns not_found.
  • externalUrl is populated only after the network has confirmed the post; don't assume it exists until status === "published".

On this page