X (Twitter)
X is the most tier-sensitive platform: your account tier (free vs. premium) determines your text and video limits. post.buzz detects your tier at connect time and validates posts accordingly.
Capabilities
| Publish | ✅ posts, threads |
| Insights | ✅ likes, replies, retweets, quotes, impressions, bookmarks |
| Fetch comments | ✅ |
| Reply to comments | ✅ |
| Like comments | ✅ like + unlike |
| Like posts | ✅ like + unlike |
| Send DM | ✅ |
| Resolve DM sender | ✅ |
| Delete post | ✅ |
| Comment automation | ✅ (reply + DM) |
Media limits
| Constraint | Value |
|---|---|
| Files | 0–4 (images and/or videos) |
| Video max size | 512 MB |
| Video aspect ratio | 1:3 to 3:1 |
| Video min length | 0.5 s |
| Video duration (Free/Basic) | max 140 s (2:20) |
| Video duration (Premium/Premium+) | max 600 s (10 min) |
| Image max size | 5 MB each |
| Max images | 4 |
Videos upload through X's native chunked media endpoint
(api.x.com/2/media/upload INIT/APPEND/FINALIZE) — large files are uploaded
in segments and polled until transcoding finishes.
Text limits
| Tier | Text limit |
|---|---|
| Free / Basic | 280 characters |
| Premium / Premium+ | 25,000 characters |
Your tier is read from the account at OAuth connect and drives the
resolveLimit logic for both text and video duration.
How data arrives
X offers no webhook for mentions or insights — everything is polled.
Mentions are fetched from GET /users/{id}/mentions on a schedule and land
in the inbox tagged as mentions; insights are polled per
post. See Webhooks for how other platforms differ.
Connect notes
- Tier (
free/premium) is detected and stored on the account row at connect time and drives your per-tier limits. - Reconnecting refreshes the tier.
- The
offline.accessscope is required so access tokens (which live 2 hours) can be refreshed automatically. - See Connect a channel.