Check a post without saving it
preview_postTakes the same arguments as create_post and saves nothing. Per account: the text exactly as it would go out (its own text, the signature, short links), its length against the limit (over_by), the files, the format, thread parts and first comment; every problem and warning; the resolved time; whether it would wait for the owner's approval; and in refusal what create_post would answer instead. Use it to fix everything in one turn and to show the user each network's version.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tag names or ids (a new name is made). On update_post it replaces the post's tags | |
| text | No | The post text (the same for every account unless overrides says otherwise) | |
| when | No | draft = saved, not sent. schedule = at scheduled_at. queue = the next free slot of the posting schedule. now = right away. | |
| No | Required when one of the accounts is Reddit: subreddit and title; flair where the subreddit needs one. On update_post the keys you send change only those (a new title keeps nsfw); reddit: null removes the Reddit details, as on REST | ||
| options | No | Per-platform settings, the same shape the app saves: thread {parts: [{text, media, delay}]} (parts 2..n), follow_up {text, delay (minutes), accounts}, targets {"<account id or platform>": {format (reel, story, short...), title, privacy, kids, TikTok flags, reply, poll, cover, board, playlist (YouTube), page (LinkedIn), mentions (LinkedIn / Facebook tags from search_mentions), link (Pinterest), collaborators and trial (Instagram: trial "manual" or "auto" makes a Reel a trial reel, shown at first only to people who do not follow the account), background (Facebook text background id from get_account_options), topic (Google Business: standard, event or offer) with title, start, end, coupon, offer_url, terms, and cta (book, order, shop, learn_more, sign_up, call) with cta_url}}, alt {"<media id>": "alt text"}, media {"<media id>": {only | skip: [account ids or platforms]}}, repeat {every, until, count}, shorten {on, comments}, plugs [{on (account id or platform of this post), action: repost | comment, likes (fire at N likes) | after (5 to 1440 minutes after it is live), text}] (Team plan and up; repost on X and LinkedIn, comment by the account that posted on Instagram, Facebook, LinkedIn, YouTube, TikTok, Reddit, Threads, Mastodon and Bluesky; left out on a new post = the account defaults, [] = none). get_account_options shows what each account takes. TikTok and YouTube need a privacy for each of their accounts (TikTok: everyone, friends, followers, self; YouTube: public, unlisted, private); a missing or invalid value is refused and nothing is saved. On update_post the targets merge per account: an account you name changes only the keys you send (a key set to null removes it, the account set to null removes all its options) and every other account keeps all of its options. reddit, follow_up, repeat, shorten, media and alt merge the same way (a new Reddit title keeps nsfw); plugs and any other value replace the saved one; a key sent as null removes it. | |
| media_ids | No | Ids from upload_media: up to 10 images, or 1 video | |
| overrides | No | Different text for some accounts: {"<account_id>": "text"} | |
| account_ids | No | Account ids from list_accounts | |
| template_id | No | A template from list_templates: fills accounts, text, first comment and "queue" when you leave them out, and each account's saved settings (privacy, made for kids, disclosure, format, Reddit NSFW) under the options you send (yours win per account and key; another account on the same platform gets that platform's settings) | |
| scheduled_at | No | For when=schedule. Use ISO 8601, for example 2026-11-03T09:30 (read in the workspace timezone) or 2026-11-03T09:30:00+01:00, or unix seconds. | |
| first_comment | No | Posted as the first comment where the platform allows it |