Create post
Create a draft post and atomically persist its content, workflow status, assignees, and user tags. Nothing is published by this call: the post stays in draft until you call schedulePost or postNow with target social accounts. The response carries captionWarnings (never blocking) for each destination channel: dense captions with no blank line, links in the body on first-comment channels, scattered hashtags, em dashes, missing utm parameters and stale dates. Fix them with updatePost (captions.formatCaption spaces a caption without changing words) before scheduling. Send an Idempotency-Key header so an ambiguous retry replays the original create; reusing the key with a different payload is rejected.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Optional. Reuse the same key (up to 200 characters) with the same request after a lost response to replay the original result instead of repeating the write.
Path Parameters
Team (workspace) id (UUID). Discover ids via the list teams endpoint or the agent context.
Body
Internal display title for the post; null clears it. Not published to the platform.
"June launch teaser"
Content format of the post; defaults to text_post.
text_post, text_image, text_video, carousel "text_post"
Body text of the post; for thread posts use postInput instead.
"Shipping day! Here is what is new in v1."
Structured content: an atomic post (text plus optional media/link attachments) or a thread of 2 or more atomic posts. Takes precedence over text.
- Option 1
- Option 2
UUIDs of previously uploaded media assets to attach to the post.
a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$["0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d"]Saved after-publish automations (first comment, engagement-triggered comment, repost, recurrence) applied when the post is scheduled or published.
UUIDs of the social accounts selected for this draft. Empty clears the saved selection and duplicates are rejected.
a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$["0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d"]Team-owned content workflow status to assign atomically with the post save.
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Full replacement set of team-member user ids assigned to the post. Empty clears every assignee.
a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Full replacement set of existing or inline-created user tags. Empty clears every user-tag assignment.
- Option 1
- Option 2
Content source UUIDs this post was generated from. Records post-from-source provenance that drives each source's usedCount (deduplicated per post; every id must belong to the team or the create is rejected). When generating posts from sources, pass the ids of the sources actually used so least-used source rotation stays accurate.
a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$["0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d"]Response
Success
UUID of the post.
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"3c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f"
a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Content format of a post: text_post (text only), text_image, text_video, or carousel (2+ photos).
text_post, text_image, text_video, carousel "text_post"
"text_image"
slideshow, image_meme, green_screen_meme Editorial status of a post: idea, proposed_render, draft, approved, rejected, archived, or deleted.
idea, proposed_render, draft, in_review, approved, rejected, archived, deleted "draft"
"approved"
Workspace-defined content workflow status currently assigned to the post.
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$Display metadata (mime type, name, thumbnail path) for the post's media, in the same order as assetIds. Empty for text-only posts.
Deduped, sorted union of the post's non-deleted assets' AI tags; empty for text-only posts.
["launch", "product"]User/agent-assigned registry tags (id, name, colour) on the post; distinct from AI-derived assetTags. Empty when no tags are assigned.
Team members assigned to the post (userId plus display name/email), in assignment order. Empty when unassigned. Set via the setPostAssignees endpoint.
a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$UUIDs of the social accounts selected for this draft. Empty clears the saved selection and duplicates are rejected.
a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$["0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d"]queue, drafts Saved to Queue, Saved to Drafts a Universally Unique Identifier
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$- Option 1
- Option 2
The newest non-cancelled scheduled leg per social account, with the text and platformSettings that leg publishes. Empty for posts that were never scheduled.
Follow-up actions (first comments, reposts, ...) for every leg of the post, oldest first; the same rows listPostPublishActions returns.
Caption-quality warnings per destination channel (never blocking). Fix them before scheduling.