Create post
Creates one post on one social account.
status: draft(default) saves a draft.status: scheduledwithscheduled_atschedules it at that time; withqueue(nextortop) it takes a slot of the channel’s posting schedule; withqueue_slotit takes that exact free slot (fromGET /channels/{account}/queue/slots).status: publishingpublishes it now.
Omitted content_type is chosen like the app does: on Pinterest a video makes pinterest_video_pin and several images pinterest_carousel, on TikTok images only make tiktok_photo, every other network takes its default format.
To schedule or publish, the destination needs its required settings in platforms[].meta (see PlatformMeta). API keys belong to workspace admins, who publish directly, so a post created through the API is never stored as pending_approval.
To post the same text on several channels at once, use POST /posts/batch.
Authorizations
Workspace API key from Settings → API Keys.
Body
Exactly one destination.
1 elementPost text, at most 25000 characters. When status is scheduled or publishing it must also fit each account's limit (max_content_length of the social account, for example 280 on X or 25000 for X accounts with long posts, 300 on Bluesky, 500 on Mastodon including the content warning), measured on the text the network receives. A scheduled or published post needs text or media.
25000Media in order. Each item is one of upload_token, url or id. Types the channel does not accept are refused.
draft keeps the post editable. scheduled schedules it at scheduled_at or in the channel queue (queue). publishing publishes it now.
draft, scheduled, publishing When to publish, for status: scheduled. Any date string; must be in the future and before 2038-01-19. Cannot be combined with queue. Required with status: scheduled unless queue or queue_slot is sent.
Queue position, only with status: scheduled. next takes the channel's first free slot; top takes its first slot and moves the queued posts behind it to the next gap. The channel must have posting times (has_posting_schedule). Cannot be combined with scheduled_at.
next, top, null Instant of one free slot from GET /channels/{account}/queue/slots, only with status: scheduled. Stores the post as a queue post in that slot; refused when the slot is taken or held by a pending approval request. Before 2038-01-19. Cannot be combined with queue. Takes the place of scheduled_at when both are sent.
Labels of this workspace.
Response
The created post.
A post on one channel. Posts created together from several channels are independent posts that share a post_group_id.
Shared by the posts created in one batch.
A workspace member. Only the id and name are exposed.
Post text, stored as sent (posts written in the app hold the editor's HTML).
pending_approval is a post a member who needs approval asked to schedule or publish.
draft, pending_approval, scheduled, publishing, published, partially_published, failed queue: the post holds a slot of the channel's posting schedule. custom: it is scheduled at its own time.
queue, custom, null UTC, format Y-m-d H:i:s.
UTC, format Y-m-d H:i:s.
Who asked for approval (not always the author).
UTC, format Y-m-d H:i:s.
A workspace member. Only the id and name are exposed.
UTC, format Y-m-d H:i:s.
Repeat rule, or null.
network for posts imported from the network (published outside TryPost).
trypost, network UTC, format Y-m-d H:i:s.
UTC, format Y-m-d H:i:s.

