Skip to content

create_draft_post

posts:write

Draft a social post for the workspace. It lands in the Review queue as pending approval. Before writing, read get_platform_algorithm_hints (free) for what each platform's feed rewards right now.

Provide one variant per platform (x, linkedin, facebook, instagram, tiktok, reddit, youtube), optionally naming the connected account (see list_social_accounts). A reddit variant is a text post and needs reddit.subreddit and reddit.title; write it as a genuinely useful post for that community, not an ad, and check its rules. A youtube variant needs a video; contentText becomes its description and youtube.title its title (a vertical video up to 3 minutes posts as a Short).

A tiktok variant needs a video or 1-35 JPEG, WebP or PNG photos (PNG is converted when it publishes). Optional tiktok.title is the photo title; tiktok.isAigc labels AI-generated photos. Posts land in the TikTok inbox so the creator finishes them in the TikTok app — Direct Post to the profile is only available from the in-app composer after the required privacy, commercial-content and Music Usage Confirmation steps.

Name the connected account if needed. Attach an image or carousel by passing the postMedia returned by create_branded_image or create_carousel as a variant's media, or a video by passing the asset returned by import_media_from_url or complete_media_upload (not Reddit; LinkedIn needs MP4). An x variant can be a thread: put the first post in contentText and the rest in thread, or use create_x_thread to split long text for you.

To quote a post on X, give its link as the x variant's quoteTweetUrl. To post in an X Community the user is a member of, give its link (https://x.com/i/communities/123) as the x variant's communityUrl. To choose who can reply to an X post, set replySettings to everyone (anyone; the default), following (accounts you follow), mentionedUsers or verified; one stored value is sent on every tweet in a thread.

An x variant can instead be a poll: give poll.options (2-4 choices voters pick between, each up to 25 characters) and poll.durationMinutes (5-10080, i.e. 5 minutes to 7 days; 1440 is one day). A poll can't have media or quoteTweetUrl on the same variant, and only the first post of a thread can be a poll.

Every variant must fit its platform's limit (X 280 as X counts them, LinkedIn 3000, Instagram and TikTok 2200, Bluesky 300, Threads 500). To publish it, approve it with approve_post_group, which schedules it.

Input

  • titlestringrequired

    Short internal title for the post group.

    min length 1 · max length 140

  • postsarray<object>required

    One variant per destination platform.

    at least 1 items · at most 3 items

    Item fields
    • platformstringrequired

      Destination network for this variant.

      one of x, linkedin, tiktok, reddit, facebook, instagram, youtube, bluesky, threads

    • contentTextstringrequired

      Full post copy for this platform.

      min length 1 · max length 10000

    • socialAccountIdstring (uuid)

      Connected account to post from. Defaults to the workspace's connected account for the platform.

    • mediaobject

      Image(s) or a PDF to post with this variant, usually the postMedia returned by create_branded_image or create_carousel. X takes 1-4 images; LinkedIn takes 1-20 images or one PDF document (a carousel); Facebook takes 1-10 images; Instagram needs 1-10 images (a carousel above one), 4:5 to 1.91:1. Reddit posts are text only. YouTube needs a video. TikTok takes a video or 1-35 JPEG, WebP or PNG photos (PNG is converted when it publishes). Each image may include altText (at most 1000 characters).

      Option 1
      • kind"image"required
      • assetIdstring (uuid)required
      • urlstring (uri)required
      • contentTypestringrequired
      • sizeBytesintegerrequired
      • widthinteger
      • heightinteger
      • altTextstring

        max length 1000

      Option 2
      • kind"images"required
      • imagesarray<object>required

        at least 2 items · at most 20 items

        Item fields
        • assetIdstring (uuid)required
        • urlstring (uri)required
        • contentTypestringrequired
        • sizeBytesintegerrequired
        • widthinteger
        • heightinteger
        • altTextstring

          max length 1000

      Option 3
      • kind"document"required
      • assetIdstring (uuid)required
      • urlstring (uri)required
      • contentType"application/pdf"required
      • sizeBytesintegerrequired
      • titlestringrequired

        min length 1 · max length 200

      • pageCountinteger
      • previewImageUrlsarray<string (uri)>

        at most 20 items

      Option 4
      • kind"video"required
      • assetIdstring (uuid)required
      • urlstring (uri)required
      • contentTypestringrequired
      • sizeBytesintegerrequired
      • durationSecondsnumberrequired
      • widthintegerrequired
      • heightintegerrequired
    • redditobject

      Required when platform is reddit: the subreddit to post in and the post's title. contentText is the post body. Check the subreddit's rules first: many ban self-promotion.

      Fields
      • subredditstring & stringrequired
      • titlestringrequired

        min length 1 · max length 300

    • youtubeobject

      For platform youtube: the video's title and visibility. contentText becomes the description (up to 5000 characters). A vertical or square video of up to 3 minutes posts as a Short.

      Fields
      • titlestring

        Video title, up to 100 characters. Defaults to the copy's first line.

        min length 1 · max length 100

      • privacyStatusstring

        Who can watch it. Defaults to public.

        one of public, unlisted, private

      • madeForKidsboolean

        Whether the video is made for children (a legal requirement). Defaults to false.

    • tiktokobject

      For platform tiktok: optional photo title and AI-generated flag. Posts land in the TikTok inbox by default so the creator finishes them in the TikTok app. Direct Post to the profile is only available from the in-app composer.

      Fields
      • titlestring

        Photo post title, up to 90 characters. The post copy is the description.

        max length 90

      • isAigcboolean

        Set true if the photos are AI-generated; TikTok labels them as such.

      • photoCoverIndexinteger

        Which photo is the cover, starting at 0. Defaults to the first.

        min 0 · max 34

    • threadarray<string>

      For platform x only: the posts that follow contentText in a thread, in order. Each is at most 280 characters as X counts them. They go out as replies to the first post when it publishes.

      at most 24 items

    • quoteTweetUrlstring

      For platform x only: a link to a post on X (https://x.com/name/status/123) to quote. The post goes out as a quote of it; in a thread, the first post quotes it.

      min length 1 · max length 300

    • communityUrlstring

      For platform x only: a link to an X Community the user is a member of (https://x.com/i/communities/123). The post goes to that community, where its members see it, instead of only to followers.

      min length 1 · max length 300

    • replySettingsstring

      For platform x only: who can reply to this post. One stored value; on a thread it is sent on every tweet. everyone (X's default; anyone), following (accounts you follow), mentionedUsers, or verified. Leave off other platforms.

      one of everyone, following, mentionedUsers, verified

    • pollobject

      For platform x only: turns this post into a poll, instead of a plain post. In a thread, only the first post can be a poll. Can't be combined with media or quoteTweetUrl.

      Fields
      • optionsarray<string>required

        2-4 choices voters pick between, each up to 25 characters.

        at least 2 items · at most 4 items

      • durationMinutesintegerrequired

        How long the poll stays open to votes, in minutes (5-10080, i.e. 5 minutes to 7 days). 1440 is one day.

        min 5 · max 10080

  • topicstring

    What the post is about.

    max length 500

  • objectivestring

    What the post should achieve.

    max length 500

Permission

Needs the posts:write scope: create drafts. It changes your workspace, so clients may ask you to confirm each call.

Example call

Your assistant sends this for you. It is shown so you can see the shape of a call, with placeholder values for the required fields.

tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_draft_post",
"arguments": {
"title": "string",
"posts": [
{
"platform": "x",
"contentText": "string"
}
]
}
}
}

Same action over the REST API

The tool runs POST /v1/orgs/{orgId}/marketing/drafts as the signed-in user, with the same validation, approval rules and limits. See it in the Drafts API reference.