Skip to main content
POST
Save an unpublished draft
Saved drafts are available to all users. Normal publishing and scheduling rules apply when submitting. Drafts stay separate from scheduled and published posts. Saving does not publish or use your posting allowance. Text, media, destinations, and platform settings can be unfinished. Use the draft UUID from the save response. Read the draft’s current revision before editing, deleting, or submitting, then send it as expected_revision. A 409 means the draft changed or was submitted; read it again before continuing. Only the submit endpoint publishes or schedules. It runs the same account, plan, content, and platform checks as Create Post. If validation fails, the draft stays saved. After a successful submission, the draft read includes submission with the original jobs. Repeating the same submission revision and schedule returns those same jobs. Use profile_id for a non-default connection profile. A draft uses one profile. Lists include only unpublished drafts in that profile. See the draft workflow for dashboard, API, MCP, and CLI examples.

Authorizations

Authorization
string
header
required

Use Authorization: Bearer {api_key}

Body

application/json

Unpublished content. All fields are optional; no scheduled date or connected destination is needed to save. Supplied arrays and platform_options replace the saved value when editing. Media must already be uploaded to files.mallary.ai.

profile_id
string

Random public connection profile ID returned by GET /api/v1/profiles.

Pattern: ^[A-Za-z0-9]{6,32}$
Example:

"AbC123xYz90"

message
string
Maximum string length: 10000
platforms
enum<string>[]
Maximum array length: 10
Available options:
facebook,
meta,
instagram,
threads,
twitter,
x,
linkedin,
tiktok,
youtube,
pinterest,
reddit,
bluesky
media
object[]
Maximum array length: 20
comments_under_post
(string | object)[]
Maximum array length: 3
Maximum string length: 10000
platform_options
object | null
auto_reply_enabled
boolean

Response

Draft saved

status
enum<string>
required
Available options:
ok
data
object
required
Last modified on October 9, 2026