← All docs

Scheduled Posts

Scheduled Posts use scheduled_at and the worker-backed queue. Use this flow when content should publish later, or when you need an end-to-end test of API, queue, worker, and post status updates.

Create A Scheduled Post

postmcp post schedule \
  --text "Launch note" \
  --to bluesky:acct_123 \
  --schedule 2026-05-15T14:00:00.000Z \
  --idempotency-key idem_schedule_123 \
  --json

The API form uses scheduled_at:

{
  "workspace_id": "wrk_123",
  "created_by_type": "agent",
  "created_by_id": "scheduler",
  "text": "Launch note",
  "scheduled_at": "2026-05-15T14:00:00.000Z",
  "targets": [{ "platform": "bluesky", "connected_account_id": "acct_123" }]
}

Use an idempotency-key header for retries so duplicate scheduler calls do not create duplicate post groups.

Sandbox Scheduling

Set sandbox for end-to-end testing without live platform posts:

postmcp post schedule \
  --text "Worker smoke test" \
  --to bluesky:acct_sandbox \
  --schedule 2026-05-15T14:00:00.000Z \
  --sandbox \
  --json

Sandbox scheduling exercises validation, persistence, queueing, publish execution, webhook delivery, usage accounting, and dashboard status updates.

Status And Lifecycle

Inspect a scheduled post by its post group ID:

postmcp post status --post-group-id pg_123 --json

Status values include scheduled, publishing, published, failed, and cancelled. Subscribe to lifecycle webhooks with webhook_url to receive post.scheduled, post.published, and post.failed events as they happen. See Webhooks for delivery details.

If a scheduled post is late or stuck, capture the post group ID, target account, and trace_id, then see Troubleshooting.