Create Post

twitter.create_post
ActionChat & messagingconnection required

Calls the X (Twitter) API with the connection's credentials.

Create a post with media, a poll, a quote or a reply. The original twitter.post_tweet node stays for text-only posts.

Connection

Required
Yes — the node will not save without one
Auth type
Bearer token
Providers
X (Twitter)
Secret shape
the X OAuth2 user-context access token, or {"access_token": "…"}
Resolved by
config.connection_id, else node.connection_id

Configuration

10 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
text
Post text. 280 characters on a standard account; X Premium allows longer. Optional when media_ids is set. Supports {{ }}.
stringNo——Deploy shipped.
media_ids
1-4 media ids from twitter.upload_media, as a JSON array or comma-separated.
arrayNo—array of string—
reply_to
Id of the post this one replies to.
stringNo———
quote_tweet_id
Id of the post to quote. X gates quote posts to the enterprise plan.
stringNo———
poll_options
2-4 poll choices. Requires poll_duration_minutes; cannot be combined with media.
arrayNo—array of string—
poll_duration_minutes
How long the poll runs, 5 to 10080 minutes (7 days).
numberConditional—5–10080; only with poll_options—
reply_settings
Who may reply. Leave blank for everyone.
stringNo—one of "following", "mentionedUsers", "subscribers", "verified"—
community_id
Post into an X Community rather than the author's timeline.
stringNo———
for_super_followers_only
Restrict the post to the author's Super Followers.
booleanNo———
nullcast
Promoted-only: create the post without showing it on the public timeline.
booleanNo———
  • At least one of text, media_ids must be set.

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "text": "Deploy shipped."
}

Output

One shape.

result

FieldTypeExample
id
Id of the created post.
string—
text
The text X stored.
string—
edit_history_post_ids
Every id this post has had, newest last.
array—
{
  "edit_history_post_ids": [],
  "id": "",
  "text": ""
}

Notes

  • X API access is tiered and metered: most read endpoints need a paid plan, and since 6 February 2026 new developers get pay-per-use credits rather than a free tier. A 403 here usually means the plan, not the code.
  • The connection's access token must already carry the scopes this node needs; X does not grant them per call, so a missing scope is a 401 on every run.
  • Needs the OAuth2 scopes tweet.write, tweet.read, users.read.

See Create Post run in a workflow.

In a technical demo we add the X (Twitter) connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.