Skip to main content
POST
Create post

Authorizations

Authorization
string
header
required

Workspace API key from Settings → API Keys.

Body

application/json
platforms
object[]
required

Exactly one destination.

Required array length: 1 element
content
string | null

Post 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.

Maximum string length: 25000
media
object[]

Media in order. Each item is one of upload_token, url or id. Types the channel does not accept are refused.

status
enum<string>
default:draft

draft keeps the post editable. scheduled schedules it at scheduled_at or in the channel queue (queue). publishing publishes it now.

Available options:
draft,
scheduled,
publishing
scheduled_at
string<date-time> | null

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
enum<string> | null

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.

Available options:
next,
top,
null
queue_slot
string<date-time> | 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.

label_ids
string<uuid>[]

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.

id
string<uuid>
post_group_id
string<uuid> | null

Shared by the posts created in one batch.

author
object | null

A workspace member. Only the id and name are exposed.

content
string | null

Post text, stored as sent (posts written in the app hold the editor's HTML).

media
object[] | null
status
enum<string>

pending_approval is a post a member who needs approval asked to schedule or publish.

Available options:
draft,
pending_approval,
scheduled,
publishing,
published,
partially_published,
failed
schedule_mode
enum<string> | null

queue: the post holds a slot of the channel's posting schedule. custom: it is scheduled at its own time.

Available options:
queue,
custom,
null
scheduled_at
string | null

UTC, format Y-m-d H:i:s.

published_at
string | null

UTC, format Y-m-d H:i:s.

approval_requested_by
object | null

Who asked for approval (not always the author).

approval_requested_at
string | null

UTC, format Y-m-d H:i:s.

approved_by
object | null

A workspace member. Only the id and name are exposed.

approved_at
string | null

UTC, format Y-m-d H:i:s.

recurrence
object | null

Repeat rule, or null.

origin
enum<string>

network for posts imported from the network (published outside TryPost).

Available options:
trypost,
network
platforms
object[]
labels
object[]
created_at
string

UTC, format Y-m-d H:i:s.

updated_at
string

UTC, format Y-m-d H:i:s.