Create post draft
create_post_draftCreates a draft video post for a single platform on top of an existing video upload. If a draft, failed, or ready post already exists for that (upload, platform) it is reset back to draft rather than duplicated. Call once per platform; use list_video_uploads first to get a video_upload_id. Refuses platforms that can't take the upload's content type. Accepted content types per platform: instagram: video/image/carousel; tiktok: video/image/carousel; youtube: video; facebook: video/image/text/carousel; snapchat: video/image; linkedin: video/image/text/carousel; threads: video/image/text/carousel; twitter: video/image/text/carousel; bluesky: video/image/text/carousel; pinterest: video/image/carousel; telegram: video/image/text/carousel; mastodon: video/image/text/carousel; discord: video/image/text/carousel; reddit: video/image/text; tumblr: video/image/text/carousel; pixelfed: video/image/carousel; google_business: image/text. Snapchat Spotlight is video-only (images go to Story).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Target platform: instagram, youtube, tiktok, facebook, snapchat, linkedin, threads, twitter, bluesky, pinterest, telegram, mastodon, discord, reddit, tumblr, pixelfed, or google_business. Discord: a workspace can connect several channels; one Discord post goes to the workspace's default channels unless you set platform_settings.channelIds afterwards with update_post (get ids from list_discord_channels). Other Discord settings: silent, mention ("none" | "here" | "everyone"), threadName (forum channels, max 100 chars), username (max 80 chars, no "discord"), textOnly. Caption up to 2000 characters, up to 10 attachments and 10 MB per post (unboosted servers), no custom thumbnail. First comment (max 2000 characters): in text channels a separate message right after the post, in forum channels the first reply in the post's thread; it never notifies on its own, and a failed comment never fails the post. Tumblr: one login can own several blogs; posts go to the primary blog unless you set platform_settings.blogName (the blog's short name) with update_post. Other Tumblr settings: tags (array, no "#", no commas, max 30), title (optional heading above the post text; overrides the post's shared title), textOnly. Tumblr's post text is the post's description (up to 5,000 characters, split into paragraphs), falling back to the caption when no description is set; video (one per post, up to 500 MB and 10 minutes), carousels (up to 10 items, images plus at most one video) or text posts; no custom thumbnail and no first comment. Tumblr limits accounts to 250 posts and 20 videos (60 minutes of video) per day. Reddit: each post goes to one subreddit, which is required; set platform_settings.subreddit with update_post (a bare name like "AskReddit", "r/AskReddit" also works, or "u_username" for the user's own profile; a bare name is always a subreddit, so "jane" posts to r/jane, never to u/jane). A saved default subreddit is applied when there is one. Other Reddit settings: title (the Reddit post title, max 300 characters; set it as platform_settings.title on the Reddit post, which only affects Reddit; when empty the publisher falls back to the upload's shared title, which YouTube, Facebook, Pinterest and Tumblr also use), nsfw (boolean, default false), flairId (id from the subreddit's flair list; some subreddits require a flair). The post body is the post's description. Video, single image or text (self) posts; no carousels, no first comment, no custom thumbnail, no analytics, and Reddit posts can't be deleted from ShortSync. Up to 10 Reddit posts per workspace per day. Some subreddits hold posts from new or low-karma accounts for moderator approval. Pixelfed: a federated, Mastodon-compatible photo network; each connection is one account on one server (instance). Every post needs media: video, image, or a carousel (mixed photos and videos allowed); no text-only posts. Settings via update_post: visibility ("public" | "unlisted" | "private", default "public"), sensitive (boolean, blurs media behind a warning), spoilerText (content warning, max 140 chars, only used when sensitive is true). Caption up to 500 characters (some servers allow more), up to 20 items per carousel (the server's own album cap, often 4, is checked at publish), one file-size cap for photos and videos (default about 15 MB per server; oversized videos are compressed, oversized images fail). Video is off by default on Pixelfed servers, so posting video to a photo-only server fails with a clear error. First comment (max 500 characters) is posted as a reply under the post; no custom thumbnail. Google Business Profile (google_business, beta): one Google login can manage several business locations; a post goes to the default locations unless you set platform_settings.locationIds with update_post (get ids from the `locations` of the google_business connection in list_platform_connections), and it fans out to every selected location. Other settings: ctaType ("BOOK" | "ORDER" | "SHOP" | "LEARN_MORE" | "SIGN_UP" | "CALL", optional button), ctaUrl (http(s) link, required for every ctaType except CALL, which dials the profile's phone number), textOnly (post a video upload's caption without the video). Caption up to 1500 characters and required; one photo (JPG or PNG, 10 KB to 5 MB) or text only; no video, no carousel, no custom thumbnail, no first comment, no mentions. | |
| idempotency_key | No | Optional client-generated key (e.g., a UUID) to make retries safe. Identical calls with the same key within 10 minutes return the original result instead of running the write twice. | |
| video_upload_id | Yes | id of the source upload. Get from list_video_uploads. The user must be a member of the upload's workspace. |