Skip to main content
Drafts let you save post content without publishing. Publish immediately, save everything as draft, or mix — publish some platforms and draft others in one request.

Two ways to draft

MethodBehavior
draft: trueAll platforms in platforms saved as draft
draft_platforms: [...]Only listed platforms draft; others publish immediately
draft_platforms must be a subset of platforms.

Save all as draft

curl -X POST "https://backend.postsiva.com/unified/post/text" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: psk_live_YOUR_KEY" \
  -d '{
    "platforms": ["linkedin", "threads"],
    "default_text": "Work in progress — not ready to publish.",
    "draft": true
  }'

Mixed draft + publish

Publish to Threads now, save LinkedIn as draft:
{
  "platforms": ["linkedin", "threads"],
  "default_text": "Launch announcement.",
  "draft_platforms": ["linkedin"]
}
Threads publishes immediately. LinkedIn saved to drafts.
Use mixed mode for urgent cross-posts: ship the fast platform now, refine the professional network copy later.

Draft CRUD API

Dedicated draft management at /unified/drafts:
ActionMethodEndpoint
CreatePOST/unified/drafts
ListGET/unified/drafts
Get oneGET/unified/drafts/{draft_id}
UpdatePATCH/unified/drafts/{draft_id}
DeleteDELETE/unified/drafts/{draft_id}
PublishPOST/unified/drafts/{draft_id}/publish
SchedulePOST/unified/drafts/{draft_id}/schedule
Requires drafts_enabled on your plan.

List drafts

curl "https://backend.postsiva.com/unified/drafts?platform=linkedin&limit=20" \
  -H "X-API-Key: psk_live_YOUR_KEY"
Filter LinkedIn/Facebook by page:
ParamPlatform
linkedin_page_idsLinkedIn org pages
facebook_page_idsFacebook Pages

Publish draft later

curl -X POST "https://backend.postsiva.com/unified/drafts/{draft_id}/publish" \
  -H "X-API-Key: psk_live_YOUR_KEY"

Schedule a draft

curl -X POST "https://backend.postsiva.com/unified/drafts/{draft_id}/schedule" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: psk_live_YOUR_KEY" \
  -d '{"scheduled_time": "2026-07-20T10:00:00Z"}'

get_queued_posts (MCP)

MCP tool get_queued_posts lists drafts and scheduled posts:
get_queued_posts(type="draft")
get_queued_posts(type="all")
REST equivalents:
  • Drafts: GET /unified/drafts
  • Scheduled: GET /unified/scheduled-posts

Draft vs schedule-only API

FeaturePOST /unified/post/*POST /unified/scheduled-posts
draft: true
draft_platforms
scheduled_time✓ (optional)✓ (required)
Use post endpoints for drafts. Use scheduled-posts endpoint when you only want to schedule (no draft mixing).

Platform-specific draft notes

Drafts store platform context including:
PlatformStored context
LinkedInlinkedin_page_ids, personal vs org
Facebookfacebook_page_ids
Pinterestpinterest_board_id
Resolve page/board IDs before publishing — same as live posts.

Example: draft video for review

{
  "platforms": ["youtube", "linkedin"],
  "default_text": "Product demo caption.",
  "video_id": "media-uuid",
  "draft": true,
  "youtube": {
    "youtube_title": "Product Demo — Draft Review",
    "youtube_description": "Internal review copy."
  },
  "linkedin": {
    "linkedin_page_ids": ["108813535"],
    "post_to_personal": false
  }
}

Plan requirements

Drafts require drafts_enabled. Publishing a draft consumes a post credit like a normal publish. See Postsiva errors for plan-blocked responses.

Scheduling

Schedule instead of draft

MCP publish tool

Agent draft + publish