Preview a post
preview_postRenders what the post will look like on each network, without publishing. Use it when the question is how something will read rather than whether it is allowed; validate_post answers the second.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| draft | No | Keep it in Mellow as a draft. Nothing is sent to any network. A draft may be unfinished — its media, text or title can come later — and is asked for what it still lacks when it is published or approved. | |
| media | No | Ordered media. Each entry is a public https URL, or an object with url and an optional thumbnailUrl. | |
| caption | No | The text of the post. Networks with shorter limits can be given their own with perChannel. | |
| options | No | Per-network settings, keyed by platform: instagram, facebook, threads, tiktok, tiktok_business, youtube, x, linkedin, pinterest, bluesky, telegram. YouTube requires title, and takes description, tags (500 characters together), categoryId, privacyStatus (public, unlisted, private), madeForKids, license, embeddable, publicStatsViewable, recordingDate, containsSyntheticMedia, defaultLanguage and localizations (title and description per language tag, which YouTube takes only with defaultLanguage); a thumbnail for YouTube alone goes on that channel's own media, perChannel.<id>.media[].thumbnailUrl. publishAt (an ISO time, with privacyStatus private) has YouTube hold the upload and make it public then: the post reads published at once, with goesPublicAt on it, until that time, and the library files it as scheduled. Pinterest pins to the account's first board unless boardIds names one, and a Pinterest video needs a cover: thumbnailUrl on the media item. Instagram and Facebook take placement (timeline, reels, stories). Instagram takes trialReelType to post a trial reel, shown first to people who do not follow the account: manual (the owner shares it with followers from the Instagram app) or performance (Instagram shares it with followers by itself if it does well within 72 hours). Only one video posted as a reel can be a trial; a story, picture or carousel with trialReelType is refused (trial_needs_reel). Instagram gives trial reels only to accounts with enough followers (Hub's own bar is 200); where it gives none, or the day's trials are used up, a trial reel is never turned into an ordinary one by Hub on its own: it fails, saying so, and nothing is posted. Only ordinaryIfTrialRefused: true (off unless set) lets it go out as an ordinary reel instead, and its settings then carry trialReelDeclined. Instagram takes finishInApp: true with soundUrl (the sound's page on Instagram) for a reel whose sound only the Instagram app can choose — a trend's sound from Instagram's library or another creator's original audio: Hub does not post it to Instagram, it sends the person the video, the caption and the sound at the post's time, and the channel reads publishing until they mark it posted. A TikTok that promotes the owner's own product or business takes discloseYourBrand: true (TikTok labels it Promotional content); one another brand paid for takes discloseBrandedContent: true. Telegram takes silent: true (no notification sound) and disableLinkPreview: true. See mellow://guide/platforms for every field. | |
| channels | Yes | Channel IDs from list_channels: spc_… for most networks, tgc_… for a Telegram channel. | |
| perChannel | No | Overrides for one channel, keyed by channel ID. Accepts caption, media, and that network's options. This is how you give one channel a shorter caption without shortening the post everywhere. | |
| scheduledAt | No | ISO 8601 time to publish at. Omit to publish immediately. |