What you need#
- An X account.
- A plan that includes X. Every plan sold today does. The original Lifetime plan can't connect X: choosing it opens Time to Level up!.
- X credits. Posting to X uses X credits on every plan, and you need credits before you can connect a new X account. See below.
- The owner or Admin role in your Heropost workspace.
How X credits work#
X charges Heropost for every post published through its API. Credits cover that cost: one credit publishes one post to one X account. No other network uses credits.
- When a credit is used: when the post is published, not when you schedule it. If the post fails, the credit is returned.
- Whose credits: credits belong to the workspace owner's Heropost account and are shared by all their X accounts, in every workspace. Posts to X in someone else's workspace use that owner's credits.
- Buying credits: click your name at the bottom of the left menu, then Billing. Under Add-ons, the X posting credits card has the packs. Packs hold 120, 300 or 600 credits, are paid once, and the credits never expire. The Buy X credits button in the post editor opens the same packs.
- New accounts: 5 X credits are added when your free trial starts.
- Free monthly posts: if your Heropost account already had an X account connected when X credits were introduced in July 2026, you also get 10 free X posts each month. They reset on the 1st (UTC), don't carry over, and are used before the credits you buy.
- Your balance: the Usage section of Billing shows your X posting credits. The post editor shows a banner when you have 10 or fewer.
See X credits for buying and billing details.
Connect your X account#
- Make sure you have X credits (see above).
- Click your workspace name at the top of Heropost, then Accounts.
- Press Add Profile and choose X.
- X opens in a small window. Sign in if X asks, and authorize Heropost.
- The window closes and the X account is added straight away, with no list to choose from. Heropost shows Account successfully added.
X connects the account that's signed in to x.com in your browser. To add another X account, switch accounts or sign out on x.com first (or use a private window), then add X again. Each X account counts as one account on your plan.
Reconnecting an X account, or adding back one you removed from the same workspace, doesn't need credits.
What you can post#
| Post | Supported | Details |
|---|---|---|
| Text | Yes | Up to 280 characters, counted the way X counts them. |
| Photos | Yes | Up to 4 JPG, PNG or WEBP images, up to 5 MB each. |
| GIF | Yes | One GIF, up to 15 MB, on its own. |
| Video | Yes | One MP4 or MOV, 0.5 to 140 seconds, up to 512 MB. |
| Mixing photos, GIFs and video | No | Use up to 4 photos, or 1 GIF, or 1 video. |
| Links | In the text | Paste the link in the text. Links always count as 23 characters. |
| Posts over 280 characters | No | Not even with X Premium. |
| Threads, polls, quote posts, alt text, location | No | |
| First comment | No |
How X counts characters. Most characters count as one; links always count as 23, and some characters, such as emoji, count as two. The editor counts the same way and warns you when the text is too long.
If X doesn't recognize an image's format, Heropost converts it to JPEG and tries once more.
Options in the X tab#
The X tab has a Caption, your media and a preview. There's no post type to choose: each post goes out as one X post per account.
When you have 10 credits or fewer, a banner shows at the top of the X tab (and on the All tab when X is on): "You can still post — {n} X credits left (1 credit = 1 post). Top up anytime." At zero it reads "You have no X posting credits left — posts to X will fail until you buy more." Press Buy X credits to top up.
Limits and holds#
- 50 posts a day per X account. Each X account can publish up to 50 posts per day (UTC). After that, posts to it fail until the next day.
- X's own rate limits. If X slows Heropost down, the post fails with "X API rate limited (429). …" and the time it can try again.
- Automatic pause. If X refuses five posts in a row because the account is suspended, locked, not permitted, or its connection expired, Heropost pauses the account and stops sending posts to it. Fix the cause on x.com, then reconnect. See What the account markers mean.
- Out of credits. The X part of a post fails; the other networks in the same post publish normally.
Analytics and the Social Inbox#
- Analytics: Heropost doesn't collect post analytics for X. It tracks your follower count.
- Social Inbox: X isn't part of the Social Inbox.
Errors and fixes#
When you connect or reconnect#
| Message | What it means | What to do |
|---|---|---|
| "Connecting an X account requires X posting credits. Purchase an X credit pack first." | You have no X credits. | Click your name at the bottom of the left menu, then Billing, and buy a pack under Add-ons. Then add X again. |
| Time to Level up! | Your plan doesn't include X (the original Lifetime plan). | Press Upgrade to see plans. See Lifetime plans explained. |
| "Authentication cancelled" | X's window was closed or blocked. | Allow pop-ups for app.heropost.io and try again. |
| "Failed to connect X account. Please try again." / "Invalid token format." | The sign-in didn't complete. | Try again. If it repeats, contact support. |
| "This account cannot be added to the workspace, as it already exists." | That X account is already in this workspace. | Nothing to do. To renew it, use Reconnect. |
| "Selected account not found" (when reconnecting) | You signed in to a different X account. | Sign in to x.com as the account you're reconnecting. |
In the post editor#
| Message | What it means | What to do |
|---|---|---|
| "Tweet is not valid. You can have up to 280 characters." | The text is over 280 characters as X counts them. | Shorten the X version on the X tab. |
| "You can upload up to 4 images or 1 video or 1 gif" | Too many files, or a mix of types. | Keep up to 4 photos, or 1 GIF, or 1 video. |
| "Please select only one video file at a time" | You added a second video. | Use one video. |
| "Wrong file format. Please upload JPG, PNG, WEBP, GIF, MP4 or MOV" | X doesn't take that file type. | Convert the file. |
| "Image size limit: 5MB maximum" / "Image size limit: 15MB maximum" | The photo is over 5 MB, or the GIF is over 15 MB. | Compress it. |
| "Video size limit: 512MB maximum" | The video is over 512 MB. | Compress it. |
| "Duration of the video must be between 0.5 and 140 seconds" | The video is longer than 2 minutes 20 seconds. | Trim it. |
| "You can have up to 30 hashtags in caption" | Too many hashtags. | Use fewer. |
| "Codec is not supported. For more information please check requirements" | Your browser can't read the video. | Export it again as an H.264 MP4. |
| Hovering Schedule All shows "Please select accounts for X" | X is on, but no X account is ticked. | Tick one, or switch X off for the post. |
| "Unable to post because X requires caption or media." (when scheduling) | The X version is empty. | Add text or media on the X tab. |
When a post fails#
Failed posts are listed under Content → Posting Errors. In the editor and calendar, the same problems show a shorter message.
| Message | What it means | What to do |
|---|---|---|
| "You have no X posting credits left. Buy an X credit pack to continue posting to X." (editor: "You've used this month's X posting credits. Buy an X credit pack to keep posting to {account} — free monthly credits reset on the 1st.") | No credits were left when the post was due. | Buy a pack, then send the post again with Duplicate Failed. To stop X failures without buying, untick X accounts in your posts and Post Groups. |
| "This X account reached its daily posting limit. The post can be published again tomorrow." (editor: "{account} reached the daily X posting limit. Posting will resume tomorrow.") | The account published 50 posts today (UTC). | Send the post again with Duplicate Failed, scheduled for the next day. |
| "{account} has been suspended by X. Posting is not possible until X reinstates the account." | X suspended the account. | Resolve it with X. Once X reinstates the account, reconnect it in Heropost if it's paused. |
| "The X connection for {account} has expired. Reconnect the account to resume posting." | X ended Heropost's access. | Reconnect the account. |
| "X did not allow this post for {account}. Please check the account's status and permissions on x.com." | X refused the post for this account. | Check the account on x.com, then reconnect and try again. |
| "{account} is locked by X. Unlock it on x.com, then publish again." | X locked the account. | Unlock it on x.com, then send the post again with Duplicate Failed. |
| "This account is paused after repeated failed posts. Reconnect it to resume posting." (editor: "{account} is paused, so this post was not published to it. Reconnect or contact support to resume posting.") | Heropost paused the account after five refusals in a row. | Fix the cause on x.com, then reconnect. |
| "X API rate limited (429). Bucket '{bucket}' blocked until {time} (UTC)." | X is limiting requests for a while. | After that time, send the post again with Duplicate Failed. |
| "X posting is temporarily unavailable. If the issue persists, please contact support." | A temporary problem between Heropost and X. No credit is used. | If it lasts, contact support. |
| "X error." followed by X's own message | X refused the post and gave its reason. | Read X's reason. For example, X refuses a post identical to one you posted recently: change the text. |
| "The mediaId {id} upload has failed." / "The uploaded media has unexpected status {state}." | X couldn't process the photo or video. | Export the file again within the limits above, then send the post again with Duplicate Failed. |
Failed X posts aren't sent again by themselves, and they don't use a credit. After fixing the cause, open the post from Content → Posting Errors and choose ⋮ → Duplicate Failed: you get a draft with only the accounts that failed, ready to schedule. See The Posting Errors page.
Questions#
Why does X need credits when other networks don't?
X charges for every post published through its API, on every plan, lifetime included. Credits cover that cost, one credit per post. Facebook, Instagram, LinkedIn and the other networks don't use credits.
Do X credits expire?
Credits you buy never expire. Free monthly posts (for accounts that had X before X credits were introduced) reset on the 1st of each month (UTC) and don't carry over.
Does a failed post use a credit?
No. The credit is returned when a post to X fails.
Can I post threads or long posts with X Premium?
No. Each post goes out on its own, up to 280 characters as X counts them.
What happens to my scheduled X posts when I run out of credits?
The X part of each post fails; the other networks publish normally. Buy a pack, then send the failed X posts again: open each one from Content → Posting Errors and use ⋮ → Duplicate Failed.
Can my team use my X credits?
Yes. Posts to X in your workspaces use your credits, whoever schedules them.