Posteady
Posteady Docs
User guideDeveloper guidesAPI referenceMCP

X

Connection requirements, publishing examples, and limits for X.

Requirements

Choose a connected X account with capabilities.publishPosts: true. Check the returned isPremium before composing a long post.

Supported formats

Text posts and a thread chain of 1–25 posts. Up to 5 text accounts can share one request. Media attachments are not part of the X public publishing input.

Links in the first post

The public REST API and MCP tools automatically remove links from the first X post, posts[0], before publishing or saving a schedule. This includes http://, https://, www., and bare domains such as foo.com or foo.io/path, including paths, query strings, and fragments.

Links in replies, posts[1] onward, stay in place. Other platforms in the same request receive the original text. To share a link on X, add it to a reply yourself; removed links are not moved to replies automatically.

For example, send this posts array:

[
  "Our new feature is live! https://example.com",
  "Learn more: https://example.com"
]

X publishes or saves these texts:

[
  "Our new feature is live!",
  "Learn more: https://example.com"
]

If you also target a Threads account, both original links remain in the Threads posts.

Publish a post

Account and media UUIDs are illustrative; replace them with real IDs. Set your API key in the POSTEADY_API_KEY environment variable.

curl --request POST "https://www.posteady.com/api/v1/posts" \
  --header "Authorization: Bearer $POSTEADY_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "posts": [
    "Hello from Posteady!"
  ]
}'

Thread chain

{
  "accountIds": [
    "11111111-1111-4111-8111-111111111111"
  ],
  "posts": [
    "Here is our announcement.",
    "Learn more: https://example.com"
  ]
}

Confirm success

Inspect each account’s success and postIds, plus summary.failed, in the HTTP 200 response. Other targets or later chain items can fail, so the HTTP code alone does not prove full success.

To schedule, send the same platform input to /scheduled-posts with a future scheduledAt and optional timezone. For asynchronous platforms, generate a UUID requestId per operation and retain it for retries.

Links are removed when the API or MCP scheduling request is accepted, and the schedule stores the resulting text. This does not change existing schedules or apply to posts composed or edited in the web editor, including links added later to a schedule created through the API or MCP.

Schedule and cancel · Read posts and metrics · Retries · MCP tools

Limits and errors

Standard X accounts allow 280 weighted characters. Premium allows 25,000 for a single post or the first post of a chain; every subsequent reply is limited to 280, including on Premium. URL and emoji counting follows X rules, so string length alone is not sufficient. Cross-posting still applies each target’s limit. Reposts are supported, but X reposts do not appear afterward in GET /posts analytics.

X character limits are checked after first-post links are removed. If posts[0] becomes empty or whitespace-only, the entire request fails with VALIDATION_ERROR (HTTP 422 in REST) before any target publishes or any schedule is created. For example, ["https://example.com", "More details"] fails; the second post is not promoted to the first. Include meaningful text in the first post and keep the link in a reply.

Publishing reference · Troubleshooting

On this page