Skip to main content

X (Twitter)

TryPost publishes posts, polls and threads to X (formerly Twitter) accounts.

Connect your account

  1. In the sidebar, open Channels and click Connect channel (or use New > Connect a new channel)
  2. Choose X and click Connect X
  3. Authorize TryPost on X
  4. On the confirmation page, check the account and click Finish connection
TryPost opens the new channel’s Publish page and asks how many times a week you want to post. See Connecting channels for the full flow.
X has no way to ask for a different login. To connect a second X account, sign out of X (or switch accounts on x.com) before you click Connect X — or use Switch account on the confirmation page.

Supported content types

Media limits

These are Post (tweet_video) limits — 8 GB / 20 minutes by default, 16 GB / 125 minutes on X Premium — not DM or Ads (amplify_video) limits. Official specs: Media best practices. Full catalog: Media.

Text and per-post options

  • 280 characters per post. Accounts with long posts — an X Basic, Premium or Premium+ subscription, or a verified business — get 25,000. TryPost reads the subscription when you connect and re-checks it daily.
  • Threads — click Start thread to add replies under the post, up to 24. Each reply has its own text and up to 4 media items, and is measured against the same limit as the post. X bills each reply as a post, and only allows replies through the API to your own post. Any reply can also be a poll.
  • AI-generated — mark the post as made with AI (meta.is_ai_generated).
  • Alt text — up to 1,000 characters per image.

Polls

Pick Poll at the top of the X card to publish a poll. The post text is the question, and the poll editor below it holds the choices and how long voting stays open.
  • The question is the post text, up to 280 characters, even on an account with long posts. A poll can’t be scheduled without one.
  • Choices: 2 to 4, each up to 25 characters as X counts them (some emoji, such as 🐧, count as two). Each choice shows a counter and stops at 25 characters. Click Add a choice for a third or fourth choice. Each choice must be different, ignoring upper and lower case; empty ones are dropped.
  • Length: from 5 minutes to 7 days in Days, Hours and Minutes. It starts at 1 day; at 7 days, Hours and Minutes are off.
  • A poll can’t carry images or video, not even in a draft. While the card has media or a file is uploading, Poll is disabled; on a poll, the media button is disabled.
Remove poll turns the card back into a regular post. The X preview shows the choices and the length. Adding another network while the X card is a poll takes you back to the shared editor and turns the card back into a Post; pick Poll again when you customize the X card.

Polls in a thread

Any post of a thread can be a poll, and one thread can hold several. The first post becomes a poll through its post type; a reply becomes a poll with the poll button in the editor toolbar (Add a poll). A reply poll follows the same rules: its text is the question (up to 280 characters, needed to schedule), it has 2 to 4 choices and it carries no media. While a reply has media or a file is uploading to it, its poll button is disabled; Remove poll gives the reply its media button back. Replies that are not polls can still carry media, even under a poll.

Poll results

Every post card in Publish and the post details show the poll’s choices, each with its votes and percentage, and the total. Once the post is published, the total is followed by where voting stands: “Ends in …”, then “Voting ended” once the end has passed, and “Final results” once X reports the poll closed. A reply’s poll shows under it, captioned “Post 2 of the thread” (or its number). TryPost reads the votes together with the post’s other metrics, about an hour after publishing and then 2, 3, 7, 14 and 28 days later, so the numbers are not live. Until the first read, the poll shows its choices with 0 votes. X charges much more to deliver a post that carries a link, and shows it to fewer people. To keep a post out of that bracket, TryPost publishes the X version of a post with its links written non-clickable: https://www.example.com/pricing goes out as example(.)com/pricing. Only the X version changes. The same post published to your other networks keeps its links exactly as you typed them, and nothing in your draft is edited — the rewrite happens on the way out. The editor previews the X post as it will be published and counts characters against that same text, so the limit reflects what X receives. A reader reaches the page by copying the address and putting the dots back — the trade for keeping the post’s reach.
Self-hosting TryPost? Links go out untouched there by default, since you publish through your own X app and pay your own X bill — see link defusing on X.

Insights

X posts and followers appear in Insights. Because X bills every read, TryPost checks X for new posts once a day, reads a post’s metrics about an hour after publishing and then only 2, 3, 7, 14 and 28 days later, and posts made directly on X are imported into Sent only from the last 30 days. A poll made directly on X is imported as a Poll, with its choices and length.

OAuth scopes

tweet.read, tweet.write, users.read, media.write, offline.access offline.access is required so TryPost can refresh the access token in the background — without it, you’d have to reauthorize regularly.

Self-hosting setup

  1. Go to X Developer Portal and create a project/app
  2. Enable OAuth 2.0 in your app settings
  3. On the User authentication settings page, enable the scopes listed above
  4. Set the redirect URL to {APP_URL}/accounts/x/callback
  5. Add to your .env:
How often TryPost reads X is set by X_PUBLICATION_DISCOVERY_INTERVAL_HOURS and X_EXTERNAL_POSTS_IMPORT_DAYS — see Importing posts made outside TryPost.Poll votes ride on the metrics read TryPost already makes. When a thread has polls on its replies, that read asks for the post and those replies in one request, and X bills each extra post it returns.Hide X with X_ENABLED=false.