NetworksX (Twitter)
X (Twitter) APIthrough Siar.
Posts, threads, polls, quotes and replies on X. Because X bills API usage per call, Siar passes those charges through at cost from a prepaid credit balance.
At a glance
Account needed: Any X account. X charges for API usage, so X actions draw from a prepaid credit balance.
| Connection | OAuth 2.0 in the browser |
|---|---|
| Channel | Not needed |
| Post types | post, thread |
| Text length | 280 characters |
| Comment length | 280 characters |
| Media per post | Up to 4 |
Media rules
| Kind | Formats | Max size | Duration | Other |
|---|---|---|---|---|
| Image | jpeg, png, webp, gif | 15 MB | n/a | None |
| Video | mp4, mov | 8 GB | 0.5 s to 20 min | None |
What Siar can do on X (Twitter)
| Comments and replies | Yes |
|---|---|
| First comment | Yes |
| Edit a published post | No |
| Delete a published post | Yes |
| Edit a comment | No |
| Delete a comment | Yes |
| Import comments | Yes |
| Post analytics | Yes |
| Account analytics | Yes |
| Post history import | Yes |
| Direct messages | No |
Siar can create comments and replies up to 280 characters, and import the comments people leave on your posts.
Publish a post
Put X (Twitter)'s payload under data.TWITTER and list TWITTER in socialAccountTypes. Add other networks to the same request to post to all of them at once.
curl -X POST "https://api.siaran.my/api/v1/post" \
-H "x-api-key: $SIAR_API_KEY" \
-H "content-type: application/json" \
-d '{
"teamId": "TEAM_ID",
"title": "X (Twitter) post",
"postDate": "2026-11-02T09:00:00.000Z",
"status": "SCHEDULED",
"socialAccountTypes": [
"TWITTER"
],
"data": {
"TWITTER": {
"text": "Hello from Siar",
"uploadIds": [
"UPLOAD_ID"
],
"mediaItems": [
{
"uploadId": "UPLOAD_ID"
}
]
}
}
}' X (Twitter) fields
-
textstring nullable -
uploadIdsstring[] nullable -
mediaItemsobject[] nullable2 fields
-
uploadIdstring required -
altTextstring nullable max length 1,000
-
-
replySettingsstring nullableOne of:EVERYONEFOLLOWINGMENTIONED_USERSSUBSCRIBERSVERIFIED -
pollobject nullable2 fields
-
optionsstring[] required min 2 itemsmax 4 itemseach: min length 1each: max length 25 -
durationMinutesinteger required ≥ 5≤ 10080
-
-
quoteTweetIdstring nullable -
replyToTweetIdstring nullable -
subscribersOnlyboolean nullable -
threadobject[] nullable max 25 items2 fields
-
textstring nullable max length 25,000 -
uploadIdsstring[] nullable
-
-
tweetStormboolean nullable -
tweetStormNumberingboolean nullable -
isAiGeneratedboolean nullable default false
Daily caps
| Per connected account, per UTC day | Free | Pro | Business |
|---|---|---|---|
| Posts | 5 | 15 | 15 |
| Comments | 3 | 15 | 15 |
See pricing for monthly quotas. Enterprise uses the Business caps unless agreed otherwise.
Connecting a X (Twitter) account
Siar sends the user to the network's consent page and stores the tokens it gets back, refreshing them before they expire. Use POST /social-account/connect from your own UI, or send your customer a hosted link from POST /social-account/create-portal-link; see connecting accounts.
Permissions requested
Siar requests only these scopes at connect time:
tweet.readtweet.writeusers.readoffline.accessmedia.writelike.readlike.writetweet.moderate.write
X pricing
X bills each API call, so these actions are paid from a prepaid credit balance at X's price with no markup. Everything not listed is free.
| Action | Billed | USD |
|---|---|---|
| Publish a post or reply | per request | $0.015 |
| Publish a post that contains a link | per request | $0.200 |
| Read a post (analytics, comment import) | per post returned | $0.005 |
| Look up another account | per account returned | $0.010 |
| Edit or manage existing content | per request | $0.005 |
| Delete a post or reply | per request | $0.010 |
| Repost, like or follow | per request | $0.015 |
X (Twitter)-specific operations
These exist for X (Twitter) only and live under /misc/twitter.
| Operation | Endpoint |
|---|---|
| Delete a Twitter/X tweet | DELETE /misc/twitter/tweet |
| Delete a Twitter/X comment | DELETE /misc/twitter/comment |
| Repost a Twitter/X post | POST /misc/twitter/retweet |
| Undo a Twitter/X repost | DELETE /misc/twitter/retweet |
When X (Twitter) says no
Siar relays X (Twitter)'s error code and message verbatim on the post, next to a status you can act on. The X (Twitter) error reference covers 13 common cases with what each one means and the fix. Open the X (Twitter) error reference.
X (Twitter) API questions
What can I post to X (Twitter) through the API?
post, thread. Posts, threads, polls, quotes and replies on X. Because X bills API usage per call, Siar passes those charges through at cost from a prepaid credit balance.
How many X (Twitter) posts can I publish per day?
Per connected account and UTC day: 5 on Free, 15 on Pro, 15 on Business. The caps keep the account within what X (Twitter) tolerates.
Can I schedule X (Twitter) posts?
Yes. Set postDate in the future and a status of SCHEDULED. Siar publishes at that time and sends a post.published webhook when the post reaches a final state.
How do I connect a X (Twitter) account?
Any X account. X charges for API usage, so X actions draw from a prepaid credit balance. Siar sends the user to the network's consent page and stores the tokens it gets back, refreshing them before they expire.
What do I do when X (Twitter) rejects a post?
The post carries X (Twitter)'s own code and message. The X (Twitter) error reference explains 13 common rejections and how to fix them.
Your first post isone request away.
The Free plan includes 20 posts and 200 uploads a month across 3 teams. No card needed.