Skip to main content
PUT
Update post

Authorizations

Authorization
string
header
required

Workspace API key from Settings → API Keys.

Path Parameters

post
string<uuid>
required

Post id. A post of another workspace returns 404.

Body

application/json
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[]

Replaces the post's media. Omit it to keep the current media. Media in order. Each item is one of upload_token, url or id. Types the channel does not accept are refused.

status
enum<string>

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

Available options:
draft,
scheduled,
publishing
content_type
enum<string>

New format for the post's destination. Omitted, the stored format is kept, except on Pinterest and TikTok where new media decides it as on create.

Available options:
instagram_feed,
instagram_reel,
instagram_story,
linkedin_post,
linkedin_page_post,
facebook_post,
facebook_reel,
facebook_story,
tiktok_video,
tiktok_photo,
youtube_short,
x_post,
threads_post,
threads_ghost_post,
pinterest_pin,
pinterest_video_pin,
pinterest_carousel,
bluesky_post,
mastodon_post,
telegram_post,
discord_message,
google_business_post
meta
X · object

Settings of the post's destination, merged with the stored ones.

platforms
object[]

Alternative to top-level content_type / meta. On a post with several destinations, the destinations not listed are turned off.

scheduled_at
string<date-time> | null

With status: scheduled: required unless queue is sent or the post already has a future time; must be in the future and before 2038-01-19. Cannot be combined with queue.

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. Refused on posts with several destinations.

Available options:
next,
top,
null
label_ids
string<uuid>[]

Replaces the post's labels.

Response

The updated 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.