POST/posts/{id}/schedule
Publish a draft post with the PostEverywhere API
Turns a draft into a live scheduled/publishing post: flips the post to `scheduled`, clears draft data, and creates one queued destination per account. Provide either `scheduled_for` (at least 1 minute in the future) or `publish_now: true` (queued to fire within ~1 scheduler cycle). `account_ids` overrides the draft's saved targets; required if the draft has none. Non-drafts return `409 not_a_draft` — use `PATCH /posts/{id}` to move an already-scheduled post. Plan post limits are enforced here (`429 post_limit_reached` / `daily_limit_reached`). A draft that targets a WordPress account without a blog title returns `400 wordpress_title_required`. A draft that targets a Google Business Profile account and breaks its rules returns `400 google_business_post_invalid`. A destination row that is still waiting for the same account is moved to the new time (it is not counted twice). Fires the `post.scheduled` webhook event.
Guides: Quick start: create your first post · Bulk operations guide
Parameters
| id | string | required | Post UUID (non-UUIDs return 400 invalid_id) |
This endpoint accepts a JSON request body. See the posts guide for a worked example.
Responses
- 200Draft scheduled
- 400
- 401
- 402
- 403
- 404
- 409Post is not a draft
- 429
- 500