Postato Docs
GuidesPlatforms

X / Twitter

Tweets, threads, character limits, reply settings.

X / Twitter

Posting uses the X API v2 with OAuth 2.0 + PKCE. Postato accepts both twitter and x as the platform value; they normalize to twitter internally.

Post types

postTypeWhat it is
tweetSingle tweet
threadMultiple tweets, each replying to the previous

Character limits

  • Standard account: 280 characters per tweet.
  • Premium / Premium+ account: 25,000 characters per tweet.

Postato does NOT auto-split long text. A 400-character text on a standard account fails at delivery. If you need a thread from long copy, split client-side and send as an array content.

Threads

Threads are a single Postato post with array content:

{
  "platform": "twitter",
  "postType": "thread",
  "content": [
    { "text": "Tweet 1" },
    { "text": "Tweet 2" },
    { "text": "Tweet 3" }
  ]
}

Each element becomes one tweet. They post in order. The second reply-to-first, third reply-to-second, and so on.

  • Max 25 tweets per thread (X API limit).
  • Each tweet gets its own 280/25,000 char budget.
  • Media attaches per-element via content[i].media.

Media

  • Max 4 images per tweet OR 1 video OR 1 GIF.
  • Image formats: JPEG, PNG, WEBP, GIF. Max 5 MB per image.
  • Video: MP4 (H.264 + AAC), 500 MB max, 2 minutes 20 seconds max.
  • Alt text supported via media[i].alt (up to 1,000 characters).

Reply settings

options.reply_settings controls who can reply:

ValueWho can reply
everyone (default)Anyone
mentionedUsersOnly users you mentioned in the tweet
followingOnly accounts you follow
subscribersPremium subscribers only
{ "options": { "reply_settings": "mentionedUsers" } }

Applies to the first tweet of a thread; subsequent tweets inherit.

Quote tweet

Via options.quoteTweetId:

{
  "content": "This is spot-on.",
  "options": { "quoteTweetId": "1234567890" }
}

Polls

Via options.poll:

{
  "options": {
    "poll": {
      "options": ["Yes", "No", "Maybe"],
      "duration_minutes": 1440
    }
  }
}

2–4 options, duration 5–10,080 minutes (7 days). Polls can't be combined with media.

Scheduling

Scheduled status works. X API enforces no special upper bound; our 1-year soft limit applies.

Gotchas

  • Character counting: URLs count as 23 characters regardless of actual length (X shortens them to t.co/...). Emoji count as 2. Use a proper counter library (twitter-text) for accuracy before submitting.
  • Media order: the media[] array order = display order on X. First item appears prominently.
  • Rate limits: X's user context limits are tight. App-level caps (300 posts / 3 hours) trip faster than you'd think at scale; use the Retry-After header when 429 fires.
  • Circle / Community-only tweets: not supported via API. Don't try options.circle_id; it's been gone since 2024.
  • Deletion: Postato can't delete tweets that are already published. Use X directly.

On this page