# Draft Posts

Create, manage, and collaborate on draft posts that aren't published immediately. Drafts help you save work-in-progress content, collaborate with your team, and schedule posts for later publishing.

### Overview

**Draft posts** are unfinished posts **connected to a social account**. They can be:

* **Dated drafts**: drafts with a set date/time (these typically show up in Calendar views in the UI).
* **Undated drafts**: drafts without a set date/time (stored under Drafts in the UI for later review/scheduling).

Draft Posts are created via the scheduling endpoint using:

* `bulk.state = "draft"`&#x20;

Draft Posts support the **same post structures** as normal scheduled/published posts, meaning you can create different kinds of drafts (photos, videos, carousels, reels, etc.) depending on the provider.

### Endpoint

Use the scheduling endpoint with `bulk.state: "draft"` to save work-in-progress content without publishing.

```bash
POST /api/v1/posts/schedule
```

### Request Headers

| Header              | Required | Value                        |
| ------------------- | -------: | ---------------------------- |
| Authorization       |      Yes | `Bearer-API YOUR_API_KEY`    |
| Publer-Workspace-Id |      Yes | Workspace ID                 |
| Content-Type        |      Yes | `application/json`           |
| Accept              |       No | `application/json` (default) |

### Draft Type & Example

#### Account-Connected Draft (`draft`)

Drafts connected to specific social accounts that can optionally include scheduling information.

**Key Features**

* **Must** include `accounts` array with account IDs
* Can include `scheduled_at` for future publishing (dated drafts)
* Uses **specific network keys** (e.g., `facebook`, `instagram`, `twitter`, etc.)

**Example Request**

```json
{
  "bulk": {
    "state": "draft",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "text": "First Draft"
          }
        },
        "accounts": [
          {
            "id": "647a0edddb2797b89044e2c1",
            "scheduled_at": "2025-06-23T10:43:00+02:00"
          }
        ]
      }
    ]
  }
}
```

### Parameters

#### Bulk

<table><thead><tr><th width="134.2476806640625">Field</th><th width="87.6968994140625">Type</th><th width="116.8612060546875" align="right">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>bulk.state</code></td><td>string</td><td align="right">Yes</td><td>Must be <code>"draft"</code> for Draft Posts</td></tr><tr><td><code>bulk.posts</code></td><td>array</td><td align="right">Yes</td><td>List of posts to create</td></tr></tbody></table>

#### Post Object

<table><thead><tr><th width="166.2337646484375">Field</th><th width="85.7508544921875">Type</th><th width="106.5205078125" align="right">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>posts[].networks</code></td><td>object</td><td align="right">Yes</td><td>Network configurations for the post (use provider keys like <code>facebook</code>, <code>instagram</code>, etc.)</td></tr><tr><td><code>posts[].accounts</code></td><td>array</td><td align="right">Yes</td><td>Social accounts the draft is connected to</td></tr></tbody></table>

#### Accounts (required for Draft Posts)

<table><thead><tr><th width="219.39892578125">Field</th><th width="83.4970703125">Type</th><th width="109.4912109375" align="right">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>accounts[].id</code></td><td>string</td><td align="right">Yes</td><td>Social account ID</td></tr><tr><td><code>accounts[].scheduled_at</code></td><td>string</td><td align="right">No</td><td>ISO 8601 timestamp. If provided, the draft becomes a <em>dated</em> draft. If omitted, it’s an <em>undated</em> draft.</td></tr></tbody></table>

### Network Configuration

* For Draft Posts (`bulk.state = "draft"`), use **specific provider keys** inside `posts[].networks` (e.g. `facebook`, `instagram`, `twitter`, etc.).
* The network payload structure depends on the provider and **content type** (e.g., status, photo, video, carousel, story, reel, etc.).
* Draft Posts support the same payload shapes as scheduled/published posts.

### Content Types

Draft Posts can be created using any supported content type (the `type` field inside `networks.[provider]`).

See the full [Content Types](/docs/posting/create-posts/content-types.md) reference.

### Best Practices

* **Save often**: create drafts early to avoid losing work-in-progress content.
* **Use dated drafts as reminders**: set `scheduled_at` to place drafts on a timeline for later review/publishing.
* **Use the right tool**: Draft Posts are for content already tied to specific social accounts. (Use [Ideas](/docs/posting/create-posts/publishing-methods/ideas.md) for account-less planning and templates.)

### Related Topics

* [Content Types](/docs/posting/create-posts/content-types.md)
* [Publishing Methods](/docs/posting/create-posts/publishing-methods.md)
* [Media Handling](/docs/posting/create-posts/media-handling.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://publer.com/docs/posting/create-posts/publishing-methods/draft-posts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
