---
title: "Schedule a draft post"
method: POST
path: "/posts/{id}/schedule"
tags: ["Posts"]
---

# Schedule a draft post

`POST /posts/{id}/schedule`

## Request

- Base URL: `https://www.sociahive.com/api/v1`
- URL: `https://www.sociahive.com/api/v1/posts/{id}/schedule`
- Auth: one of:
  - API key in header `X-API-Key`
  - OAuth 2 (authorization code, authorization URL `/api/oauth/authorize`, token URL `/api/oauth/token`, scopes: `posts:write`)

## Path parameters

- `id` string, required: MongoDB ObjectId (24-character hex string)

## Request body

- object
  - `scheduled_at` string, date-time, required
  - `timezone` string, required
  - `acknowledge_unconfirmed` boolean: Set true, after checking X, to schedule a post with an X Article whose last publish is unconfirmed (it may already be live). Without it that answers 409 with code ARTICLE_UNCONFIRMED.

## Response `200`

Post scheduled

- PostEnvelope: Single-post envelope — `{ data: <post> }`.
  - `data` Post, required
    - `id` string, required: MongoDB ObjectId (24-character hex string)
    - `content` object, required
      - `text` string, required
      - `media` object[]
        - `type` 'image' | 'video' | 'gif', required
        - `url` string, uri, required
    - `text` string
    - `media` object[]
      - `type` 'image' | 'video' | 'gif', required
      - `url` string, uri, required
    - `status` 'draft' | 'scheduled' | 'publishing' | 'published' | 'partially_published' | 'failed' | 'pending_approval' | 'reminder_sent', required
    - `platforms` object[], required
      - `platform` string, required: Platform id. Known values: `instagram`, `messenger`, `whatsapp`, `linkedin`, `twitter`, `tiktok`, `telegram`, `threads`, `youtube`, `bluesky`, `pinterest`, `facebook`, `discord`, `mastodon`, `lemmy`, `devto`, `hashnode`, `wordpress`, `listmonk`, `slack`, `tumblr`, `dribbble`, `twitch`, `kick`. Treat any other value as unknown, never as an error.
      - `account_id` string, required: MongoDB ObjectId (24-character hex string)
      - `platform_post_id` string
      - `status` 'pending' | 'processing' | 'published' | 'failed' | 'reminder_sent'
      - `error` object
        - `code` string, required
        - `message` string, required
      - `published_at` string, date-time
    - `scheduled_at` string, date-time
    - `timezone` string
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `automation` object, nullable
      - `state` string, required: Derived state. Known values: `none`, `building`, `failed`, `off`, `armed`, `live`, `needs_attention`. Treat any other value as unknown, never as an error.
      - `flow_id` string, required
      - `flow_name` string, required
      - `door` string, required: How the automation was built. Known values: `funnel`, `template`, `prompt`. Treat any other value as unknown, never as an error.
      - `account_id` string, required
      - `armed` boolean, required: Turns on when the post goes live. Only a person sets this.
      - `bound` boolean, required: The trigger points at the published media id.
      - `error` object
        - `code` string, required: The fix to offer, e.g. `placeholder_text`, `link_placeholder`, `unbound_media`, `account_disconnected`, `tier_limit`. Open-ended.
        - `message` string, required
      - `allowed_actions` string[], required: What the user can do now. Known values: arm, unarm, turn_on, turn_off, remove, rebind, retry, fill_blanks, open. Ignore unknown values.
      - `flow_live_waiting_for_post` boolean
    - `source` string: Where the post came from (set by the server, never accepted from a client). Known values: `composer`, `rss`. Treat any other value as unknown, never as an error.

## Other responses

- `400`: Bad request — invalid parameters
- `401`: Authentication required — provide X-API-Key or Bearer token
- `403`: Insufficient scope for this operation
- `409`: An X Article on this post may already be live (code ARTICLE_UNCONFIRMED)
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/sociahive/apis/sociahive-api.md) · [All operations](https://skmtc.dev/sociahive/apis/sociahive-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sociahive/apis/sociahive-api/revisions/791b8548d288?raw)
