create_x_thread
posts:write
Draft an X thread for the workspace (get_platform_algorithm_hints with platform x says what X's feed rewards). It lands in the Review queue as pending approval, as one post whose follow-ups are published as replies to it, in order, when it goes out. Give the posts one by one (each at most 280 characters as X counts them: links 23, emoji 2), or give the whole text and it is split for you at paragraph and sentence breaks.
Set numbered to add 1/n to each post. Media attaches to the first post, and quoteTweetUrl (a link to a post on X) makes the first post quote it. communityUrl (a link to an X Community the user belongs to) posts the thread in that community. replySettings (everyone, following, mentionedUsers or verified) is one value on the X post and is sent on every tweet in the thread; omit it or pass everyone so anyone can reply. poll turns the first post into a poll instead (options: 2-4 choices up to 25 characters each; durationMinutes: 5-10080, i.e. 5 minutes to 7 days); a poll can't be combined with media or quoteTweetUrl.
The response's posts[0].platformPayload.thread holds the follow-ups; show the user the whole thread before approving it with approve_post_group, which approves and schedules every post in it. Use it only for X; other platforms take one post, via create_draft_post.
Input
titlestringrequiredShort internal title for the thread.
min length 1 · max length 140
topicstringWhat the thread is about.
max length 500
objectivestringWhat the thread should achieve.
max length 500
postsarray<string>The thread's posts in order, each at most 280 characters as X counts them (links count as 23, emoji as 2). Give either posts or text.
at least 1 items · at most 25 items
textstringThe whole thread as one text. It is split into posts that fit, at paragraph breaks first, then sentences. Give either posts or text.
min length 1 · max length 10000
numberedbooleanAdd "1/n" to the end of each post. Defaults to false.
socialAccountIdstring (uuid)Connected X account to post from. Defaults to the workspace's connected X account.
mediaobject1-4 images or a video for the first post, e.g. the postMedia from create_branded_image or the asset from import_media_from_url.
Option 1
kind"image"requiredassetIdstring (uuid)requiredurlstring (uri)requiredcontentTypestringrequiredsizeBytesintegerrequiredwidthintegerheightintegeraltTextstringmax length 1000
Option 2
kind"images"requiredimagesarray<object>requiredat least 2 items · at most 20 items
Item fields
assetIdstring (uuid)requiredurlstring (uri)requiredcontentTypestringrequiredsizeBytesintegerrequiredwidthintegerheightintegeraltTextstringmax length 1000
Option 3
kind"document"requiredassetIdstring (uuid)requiredurlstring (uri)requiredcontentType"application/pdf"requiredsizeBytesintegerrequiredtitlestringrequiredmin length 1 · max length 200
pageCountintegerpreviewImageUrlsarray<string (uri)>at most 20 items
Option 4
kind"video"requiredassetIdstring (uuid)requiredurlstring (uri)requiredcontentTypestringrequiredsizeBytesintegerrequireddurationSecondsnumberrequiredwidthintegerrequiredheightintegerrequired
quoteTweetUrlstringA link to a post on X (https://x.com/name/status/123) for the thread's first post to quote.
min length 1 · max length 300
communityUrlstringA link to an X Community the user is a member of (https://x.com/i/communities/123) to post the thread in.
min length 1 · max length 300
replySettingsstringFor 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,verifiedpollobjectTurns the thread's first post into a poll. Can't be combined with media or quoteTweetUrl.
Fields
optionsarray<string>required2-4 choices voters pick between, each up to 25 characters.
at least 2 items · at most 4 items
durationMinutesintegerrequiredHow 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
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.
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "create_x_thread", "arguments": { "title": "string" } }}Same action over the REST API
The tool runs POST /v1/orgs/{orgId}/marketing/threads as the signed-in user, with the same validation, approval rules and limits. See it in the Threads API reference.