How to post to X (Twitter) from ChatGPT
https://postwire.io/api/mcp) you connect your X account once on X's own screen, approve the post ChatGPT writes with generate_posts, and it publishes it with post_to_social or queues it with schedule_post: a tweet, a thread of up to 26 posts, up to 4 images or a video. PostWire is not in ChatGPT's app directory yet (submitted to OpenAI's review on Sept 27, 2026), so today you add it as a custom connector in developer mode; in Claude it is already in the connector directory. You need no X developer account and no API key: PostWire posts through the official X API and pays X for each call. X is on PostWire's paid plans, from $9 a month with 30 X credits included every month: 1 X credit is 1 plain post, a post with a link uses 10, and each image or video adds 1.Scheduled tweets are published by PostWire's servers, so ChatGPT and your computer can be closed when the hour comes. ChatGPT can check what a post will use before it posts.
Updated . Written from PostWire's own code; vendor prices read on Oct 29, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.
Set it up and post, step by step
Prompt to copy once X is connected: Write an X thread of 4 posts about our new CSV import with the link in a reply under it, tell me how many X credits it uses, and schedule it for Thursday at 10am.
- Add PostWire as a custom connector
If your ChatGPT plan offers developer mode, turn it on under Settings → Security and login, then under Settings → Connectors add a custom connector with the URL
https://postwire.io/api/mcpand sign in when asked (OAuth). Menu names in ChatGPT change often; OpenAI's help page has the current path. PostWire is not in ChatGPT's app directory yet (submitted to OpenAI's review on Sept 27, 2026). Not available on your plan? Use PostWire in Claude, where it is in the connector directory. - Sign in with your email
A 6-digit code creates your free PostWire account inside the sign-in window: no password and no card. ChatGPT asks you to confirm a write action such as publishing before it runs.
- Connect your X account
Ask "connect my X account". The connector calls
create_connect_linkand gives you a one-hour link that opens X's own sign-in. X shows "Sensitive permissions requested · This app is not affiliated with X", as it does for every outside app: tick I trust this app, then Authorize app. The permission covers posting and uploading media. X needs a paid PostWire plan, and reading your @handle right after connecting uses 1 credit. - Ask for the post
"Write an X post about the new CSV import."
generate_postsreturns a draft and publishes nothing: one post within 280 characters as X counts them, a first line that stands alone as the hook, one to three short lines of substance, no hashtags and, by default, no link. It writes a thread when you ask for one, and the LinkedIn or Bluesky version of the same news in the same call. - Check what it will use
"How many X credits will that use?" calls
get_x_creditswith the post's text and thread: it returns the credits for the post or the whole chain, what the plan has left this month and the X posts made today. A post the account cannot cover is not sent. - Add an image or a video, if you want one
A file attached to a ChatGPT message does not reach a connector, so ask for an upload link:
create_upload_linkreturns a page where you pick the images or the video on the phone or laptop that has it (up to 100 MB on the free plan and 1 GB on paid plans); say "uploaded" and the assistant reads it withget_uploaded_file. A public https link works too. - Post now, or schedule it
Say "post it" and the assistant calls
post_to_social; say "schedule it for Thursday at 10am" and it callsschedule_post, up to 365 days ahead, or withrun_at: "next_slot".threadholds the posts after the first, andreplyis one more post under the last one, the usual place for the link. This is the call:{ "name": "schedule_post", "arguments": { "platforms": ["x"], "per_platform": { "x": { "text": "Our CSV import went from 40 seconds to 6. What changed:", "thread": [ "We stopped parsing the whole file before showing a preview.", "Rows now stream in batches of 500.", "Errors name the row and the column instead of 'invalid file'." ], "reply": "Details: https://example.com/changelog/csv-import" } }, "run_at": "2026-11-05T10:00:00-05:00" } } - Open the post
The result carries the post's link (
https://x.com/i/web/status/…) and, for a thread, every post's id. If X refuses a later post of a thread, the earlier ones stay up, the result sayspending, and PostWire posts the rest by itself without posting anything twice.
"What's scheduled on X?" calls list_scheduled_posts and "cancel Thursday's thread" calls cancel_scheduled_post; the same queue is on the dashboard's Queue page. Prefer to set it up by hand first? Open the dashboard, connect the account under Accounts and copy your key under API & MCP.
What a post to X uses
X bills every post made through its API, so PostWire counts your X posts in credits: 1 X credit is 1 plain post, a post with a link uses 10, and each image or video adds 1. Each post of a thread, and the reply under it, counts by the same rule.
| What ChatGPT posts | X credits |
|---|---|
| A plain tweet | 1 |
| A tweet with one image | 2 |
| A tweet with a link in its text | 10 |
| A thread of 4 plain posts, with the link in a reply under it | 14 |
- Included every month: 30 X credits on Starter ($9 a month, up to 5 X posts a day) and 150 on Pro ($29, up to 20 a day). Top-up credits (80 credits for $5, 340 credits for $20) do not expire.
- No bill after the fact: the credits for a whole thread are set aside before the first post goes out, and credits for a post that never went out come back.
Source: PostWire's X integration and plans, read Oct 29, 2026.
X's rules ChatGPT works within
- 280 characters as X counts them: a link counts 23 whatever its length, and an emoji counts 2. A single post that runs long is shortened at the end of a sentence; a thread post that runs long is refused before anything goes out.
- Up to 4 images of up to 5 MB each, or one video of up to 512 MB.
- Threads of up to 26 posts: the first post plus 25 more, each a reply to the one before. The media stays on the first post.
- X refuses a duplicate of a recent post from the same account; the result says so in those words.
More on X itself: X (Twitter) MCP server.
What it does not do
ChatGPT with PostWire writes, publishes and schedules your own posts on X. It does not read your timeline or search X, it does not like, repost, follow or send direct messages, it does not post polls, and it does not report an X post's views or likes. X is on paid plans; the free plan publishes to the other nine networks.
Questions people ask
Can ChatGPT post to X (Twitter)?
Not by itself. ChatGPT writes the post, and a connector publishes it. With PostWire's connector (https://postwire.io/api/mcp) and your X account connected once on X's own screen, ChatGPT publishes or schedules tweets and threads after you approve the text.
Do I need an X developer account or an X API key?
No. You connect your X account on X's own sign-in screen and PostWire posts through the official X API with its own developer app. PostWire pays X for each call and counts your posts in X credits.
Can ChatGPT post a thread to X?
Yes. The posts after the first go in thread (up to 25), each within 280 characters as X counts them, and an optional reply goes under the last one for the link. The credits for the whole thread are set aside before the first post goes out.
How much does it cost to post to X from ChatGPT?
X is on PostWire's paid plans: Starter is $9 a month with 30 X credits a month and Pro $29 with 150. 1 X credit is 1 plain post, a post with a link uses 10, and each image or video adds 1. Top-up credits (80 credits for $5, 340 credits for $20) do not expire.
Can ChatGPT schedule tweets?
Yes. It calls schedule_post with a time up to 365 days ahead, or "next_slot" for your next free posting hour, and PostWire publishes it at that time with ChatGPT closed.
Can it post images or a video?
Yes. A tweet takes up to 4 images of up to 5 MB each or one video of up to 512 MB. A file on your device gets a link through create_upload_link, a page where you pick the file; a file already online goes as its public https link.
Why does a tweet with a link use more credits?
X bills a post that contains a link at a higher rate than a plain post, so it uses 10 credits instead of 1. That is why generate_posts writes X posts without a link unless the idea is the link, and why the link usually goes in a reply.
Try it on one business, free.
The free plan is 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month) and 2 networks per post — every network connects free, no card, no time limit. Paid plans start at $9 a month and have a 14-day refund; Pro can be tried free for 7 days and Agency for 14, with a card at checkout and nothing charged that day.