Skip to main content
This guide walks through a post from start to finish: find the channel, check what its network needs, create the post, then schedule it, queue it or publish it now. Every example runs against https://app.trypost.it/api with a workspace API key.
1

List the social accounts

Find the channel to post to and read its limits.
2

Check the content types

Pick a format and fill the settings the network requires.
3

Create the post

One post per channel, or one call for several channels.
4

Schedule, queue or publish

At a set time, in the channel’s queue, or right now.

1. List the social accounts

List social accounts returns the channels connected to the workspace. Channels are connected and removed in the app; the API only reads them.
The fields you need for posting:

2. Check the content types

List content types describes every network: its content types, text and hashtag limits, the settings it requires and the media each format takes.
Read these fields before you build a post: When you omit content_type, it is picked like the app does: on Pinterest a video makes pinterest_video_pin and several images pinterest_carousel, on TikTok images only make tiktok_photo, and every other network takes its default format.

Required settings

Each destination carries its network’s settings in meta. A draft can be saved without them; scheduling or publishing needs them: Every other setting is optional: link previews, AI labels, YouTube privacy and category, Mastodon content warnings, Threads topics, and more. The full list per network is under platforms[].meta on Create post. Keys TryPost does not know are dropped; settings of another network are accepted but not used.

3. Create the post

Create post creates one post on one channel: platforms takes exactly one entry. Without status, the post is saved as a draft.
The response is the post (201), with status: "draft" and its destination under platforms[]. Media can come from a URL, an earlier upload or another post; see Media uploads.

Several channels at once

To send the same post to several channels, use Create posts in batch. It creates one independent post per destination, all sharing a post_group_id, the same as selecting several channels in the app. Each destination can override the shared content, media, content_type and meta. status is required here.
The response is { "posts": [...] }, one post per destination. A validation error stops the whole call; errors name the destination, for example destinations.1.meta.privacy_level.

4. Schedule, queue or publish

status decides what happens to a post. Send it on create, or later with Update post:

At a set time

Send status: scheduled with scheduled_at, an instant in the future and before 2038-01-19. Give it in UTC (Z) or with an offset.

In the channel’s queue

When the channel has posting times (has_posting_schedule: true), send queue instead of scheduled_at:
  • next takes the channel’s first free slot.
  • top takes the first slot not held by a post with a set time, and moves the queued posts behind it to the next free slot.
To take one exact slot, send queue_slot with an instant from List free queue slots. It works on Create post only, and fails with 422 when the slot has been taken in the meantime. queue cannot be combined with scheduled_at or queue_slot. When you send queue_slot, it sets the time; do not send scheduled_at with it. A queued post keeps its slot. To change the order, use Reorder queue or Move post to queue slot; to change the times, Update posting schedule (it replaces the whole schedule: send the timezone (required) and the current posting_goal and posting_schedule to keep them, since omitted values are cleared). To repeat a scheduled post, see Set post recurrence.
Another change to the same channel queue can be running when you call. The API then answers 409; retry the request.

Now

Send status: publishing, on create or on an existing draft or scheduled post:
The response comes back with status: "publishing" while the network receives the post. It then becomes published or failed; platforms[].platform_url links to the live post and platforms[].error_message says what went wrong. Poll Get post, or subscribe a webhook to post.published and post.failed. Posts created through the API publish directly: API keys belong to workspace admins, so no approval step applies (see Approvals).

Thread replies

X, Bluesky and Mastodon posts can carry up to 24 replies, published one under the other below the first post. Send them in meta.thread_replies, each as { "text", "media" }:
  • A reply needs text or media.
  • Each reply’s text must fit the account limit: 280 on X (25000 with long posts), 300 on Bluesky, 500 on Mastodon. On Mastodon the content warning (spoiler_text) is repeated on every reply and counts toward it.
  • A reply’s media belongs to that reply only: up to 4 items, given by url, id or upload_token, following that network’s media rules.
  • On Update post, thread_replies replaces the whole list.
If publishing stops halfway, replies already live are kept, and a retry continues from the next one instead of posting them again.

Content limits

Network limits are checked when a post is scheduled or published; drafts can go over them. The 25000-character ceiling applies to every post, drafts included.
  • Text per account. The text must fit the destination account’s max_content_length, measured on the text the network receives. An X account with long posts takes 25000 characters; other X accounts take 280. An emoji counts as one character.
  • Instagram hashtags. Instagram takes at most 5 hashtags per post.
  • Stories are captionless. instagram_story and facebook_story send no text, so their text is neither published nor measured, and the hashtag cap does not apply.
  • Media. Each content type has its own media count, size, duration and aspect ratio rules, listed by List content types and on each network’s page, for example Instagram, X or TikTok.
Get post preview returns the text each destination will receive (sanitized_content), its length and the account’s limit. On X, TryPost Cloud writes links as example(.)com to keep the post out of X’s link pricing (see Links in posts), and the preview shows that text.

Editing, deleting and errors

  • Update post changes only the fields you send. The channel is fixed; to post elsewhere, create a new post. Send the destination’s settings as top-level content_type and meta, or as platforms[] with the destination id. meta is merged with the stored settings; send null for a key to clear it. Boolean settings cannot be cleared: send true or false.
  • Posts that are publishing, published, partially_published or failed cannot be edited or deleted: the API answers 422.
  • Delete post removes the post from TryPost only. It never deletes anything already published on a network.
  • Validation errors are keyed by field. Errors on a destination’s settings, text, or media fit may be reported under destinations.0.… (for example destinations.0.meta.board_id) even when you sent platforms.