X (formerly Twitter) exposes the X API v2. Posting needs OAuth 2.0 with the tweet.write scope (and media.write for images and video), and X bills every call: about $0.015 a post, $0.20 for a post that contains a link. You authenticate each account, then create posts (text, up to 4 images or one video).
PostWire manages the OAuth, token refresh, media upload and posting, counts the 280 characters the way X does (a link counts 23, an emoji 2), and its AI writes an X-native draft from the same idea as your other networks.
A thread, and the link in a reply. Send per_platform.x.thread (up to 25 posts after the first) and PostWire posts each one as a reply to the one before; options.x.reply adds one post under the last, the usual place for a link, since X shows posts with a link to fewer people. Every post of the chain is an X post (same credits, counts toward the daily cap), the whole chain is reserved before the first post goes out, and if X refuses a later post the first ones stay up and the rest is retried on its own, from the last post that went out — the first post is never sent twice.
X is live on PostWire as a pay-per-use add-on of the paid plans — not on Free and not during the trial. Each paid plan includes X credits every month (Starter 30, Pro 150, Agency 600, Scale 2,000; they renew on the 1st and do not roll over) and a daily cap of X posts (5, 20, 60, 150). Top-up credits are 80 for $5 or 340 for $20, used after the plan's credits, and do not expire. A post without enough credits is not sent to X and the response says how to get more. Details: X credits in the API docs.
X (Twitter) uses OAuth, not a password. Your user connects in the dashboard, or you generate the authorization URL via the API:
curl -X POST https://postwire.io/api/oauth/x/url \
-H "Authorization: Bearer $POSTWIRE_API_KEY"
# -> { "url": "https://.../oauth/authorize?..." }
# The user opens the URL, approves, and PostWire stores the token (and refreshes it for you).
Once connected, posting is a single request. Add more networks by putting more strings in platforms.
curl -X POST https://postwire.io/api/post \
-H "Authorization: Bearer $POSTWIRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platforms":["x"],"text":"Shipping PostWire today"}'
PostWire ships an MCP server — hosted, or local via npx postwire-mcp, authenticated with your API key. Add it to any MCP client:
{
"mcpServers": {
"postwire": {
"command": "npx",
"args": ["-y", "postwire-mcp"],
"env": { "POSTWIRE_API_KEY": "pw_live_xxx" }
}
}
}
Then the agent just calls the tool:
{
"name": "post_to_social",
"arguments": { "platforms": ["x"], "text": "Shipping PostWire today" }
}
| Direct integration | PostWire | |
|---|---|---|
| Platform audit / review | You apply & maintain it | Handled for you |
| OAuth + token refresh | You build it | Managed |
| AI agent support | Build your own tool | MCP tool out of the box |
| Other networks | One integration each | 9 networks, one API |
| Plan | Price | Brands |
|---|---|---|
| Free | $0 | 1 brand · 10 posts/mo · 2 networks per post |
| Starter | $19 | 3 brands · 300/mo |
| Pro | $29 | 10 brands · 2,000/mo |
| Agency | $99 | 50 brands |
| Scale | $299 | 200 brands |
14-day refund on paid plans. Ten businesses on Ayrshare's Launch plan cost $299/month (pricing page, Sept 26, 2026); on PostWire, $29. See PostWire vs Ayrshare.