Last updated: August 2026
Does X API pay-per-use have a spend cap?
Partly. You can set a per-cycle spend cap, and auto-recharge is bounded: it adds $200 when your balance falls below $10, up to $400 per billing cycle. Post reads are capped at 3,000,000 a month. But the cap is a ceiling, not an alert, and it resets each cycle. A flat plan has no runaway mode at all.
Below: what each control actually does, what four realistic workloads cost, and the three settings to change before you ship anything that writes to X.
The four controls, and what each one really protects you from
People ask about a spend cap because they are picturing a budget alarm. X gives you a ceiling instead. The difference matters: a ceiling tells you the maximum you can lose in one cycle, it does not tell you that you are on track to lose it.
Auto-recharge is the part that bites
A spend cap on its own is fine. A spend cap plus auto-recharge means a bug does not fail loudly, it just keeps buying credit until it hits $400 for the cycle. During development, turn auto-recharge off and let calls fail when the balance runs dry. A failed call is a bug report. A successful call is a bill.What the meter actually reads
Pay-per-use pricing has been in effect since February 2026. Three numbers drive almost every bill: about $0.005 per post read, about $0.015 per post published, and about $0.20 per post that contains a link. That last one is not a typo, and it is thirteen times the plain-post rate.
The pattern is that writes are cheap until they contain links, and reads are cheap until you poll. A bot that checks mentions every five minutes is doing 8,640 requests a month, and each request bills for every post it returns, not once per request. That is the line item that turns a hobby bot into a real invoice. There is a full breakdown in X API pay-per-use explained and a side by side in the cheapest way to post to X programmatically.
The three settings to change before you ship
None of this requires a different provider. If you are staying on the X API, do these three things on day one.
- Set the per-cycle spend cap to a number you would be willing to lose. Not a number that feels generous. The cap is the only hard stop, so it should be the real answer to how much a bug is allowed to cost you.
- Turn auto-recharge off while you are still measuring. Fund the balance manually. When it runs out your calls fail, you notice, and you learn your real call volume without paying for the lesson twice.
- Count your own writes before X does. Keep a counter in your own code, separate from X, and refuse to send past a daily number you chose. This is the control X does not give you: a budget alarm.
// The control X does not give you: your own daily write ceiling.
const DAILY_WRITE_LIMIT = 50;
const LINK_WRITE_LIMIT = 5; // link posts bill ~13x a plain post
async function guardedPost(text: string) {
const hasLink = /https?:\/\//.test(text);
const used = await counters.today();
if (used.writes >= DAILY_WRITE_LIMIT) throw new Error('daily write ceiling reached');
if (hasLink && used.linkWrites >= LINK_WRITE_LIMIT) throw new Error('daily link-post ceiling reached');
await counters.increment({ writes: 1, linkWrites: hasLink ? 1 : 0 });
return sendToX(text);
}One more note on the legacy tiers. The old $200 per month Basic plan was force-migrated to pay-per-use on 1 June 2026 and the migration is irreversible. If you were relying on that flat $200 to be your cap, it is not there anymore, and the caps described on this page are what replaced it. The wider picture, including what closed and when, is in is the X API free in 2026. If your calls are failing rather than costing, that is usually a 403 and a different problem, covered in the X API 403 guide.
The version with no runaway mode
A flat plan removes the whole category of problem. There is no prepaid balance, so there is nothing to auto-recharge. There is no per-post fee, so a retry loop costs you nothing beyond your own rate limit. There is no per-link surcharge, so posting links is the same price as posting text.
OpenTweet holds the X connection for you, so you do not create a developer app and do not enrol a card in X billing at all. Pro is $11.99 a month, Advanced is $29, Agency is $49, listed on pricing. Posting is a single REST call, documented in the API reference.
curl -X POST https://opentweet.io/api/v1/posts \
-H "Authorization: Bearer ot_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"Shipped the spend guard. No per-link surcharge on this one.","publish_now":true}'When the X API is still the right call
If you need full-archive search, streaming filtered volume, or first-party data access, you need the X API and there is no way around it. The flat-fee route is for the case where you are writing to X: posting, threading, scheduling. Those are the calls that carry the per-post and per-link fees.7-day free trial. Cancel anytime.
Frequently asked questions
Does X API pay-per-use have a spend cap?
Yes. You set a spend cap per billing cycle in the developer portal, and auto-recharge is bounded separately: it tops your balance up by $200 whenever the balance drops below $10, and it will not add more than $400 in a single cycle. Post reads are also capped at 3,000,000 per month. The cap is a hard ceiling, not a budget alert, and it resets at the start of every cycle.
How does X API auto-recharge work?
Auto-recharge watches your prepaid balance. When the balance falls below $10, X buys another $200 of credit against your card. Across a single billing cycle it will not add more than $400. If you turn auto-recharge off, calls start failing once the balance runs out instead of silently costing more, which is the behaviour you want while you are still measuring your call volume.
What does the X API actually charge per call?
About $0.005 per post read, about $0.015 per post you publish, and about $0.20 per post that contains a link. The link surcharge is the line item that surprises people. Sixty link posts in a month is roughly $12, which already exceeds a flat $11.99 per month plan that has no per-post fee at all.
What is the 3 million post read cap?
Pay-per-use projects have a ceiling of 3,000,000 post reads in a calendar month. It is a volume ceiling on reads, not a spending control. At $0.005 per read, hitting that ceiling would mean roughly $15,000 of reads, so for almost every project the spend cap binds long before the read cap does.
Can I get an unexpected X API bill?
Yes, within the caps. A retry loop, a webhook that fires twice, or a bot that posts links instead of plain text can burn through a cycle cap quickly, and nothing warns you mid-run. Set the per-cycle cap to the number you are actually willing to lose, turn auto-recharge off during development, and meter your own writes before you ship.
How do I avoid pay-per-use billing entirely?
Post through a service that holds the X connection for you on a flat fee. OpenTweet is $11.99 per month on Pro with no per-post charge, no per-link surcharge, no prepaid balance, and no auto-recharge, so there is no runaway mode. You also skip creating your own X developer app.
Keep exploring
Flat-fee posting and scheduling for X, with no prepaid balance to run down.
OpenTweet vs the X API
Post, schedule, and automate X without a developer account or the $200/mo minimum.
X DM outreach, human-approved
Find and qualify leads, AI-draft DMs, approve each one, and drip-send from your own account via API or MCP.
Post to X without an API
The clean, account-safe way to post to X from your code or an AI agent.
Twitter MCP Server
Give Claude, Cursor, and OpenClaw the ability to post to X. 36 tools included.
Developer docs
Quickstart, API keys, MCP setup, and the REST reference for posting to X from code or an agent.
XMCP vs OpenTweet
X's official MCP server bills per API call and cannot schedule. Compare it with the flat-fee hosted MCP.
MCP for AI agents
Connect your AI client to X in under two minutes, no X developer account.
Developer API and keys
REST endpoints, one bearer key, and usage tracking. Build on OpenTweet.
OpenTweet for AI agents
The posting layer for autonomous agents and automations that live on X.
Build an AI Twitter persona
Give your AI agent its own X account. Setup, cadence, and the rules that keep it safe.
Best MCP servers for social media
The 2026 ranked list. How the hosted OpenTweet MCP compares with the official X MCP and others.
Cheapest way to post to X via code
Flat fee vs pay-per-use. Why the $0.20 per-link fee flips the math past ~60 posts a month.
No balance, no auto-recharge, no per-link fee
Post and schedule on X for a flat $11.99 a month. One bearer key, one REST endpoint, no X developer app.
7-day free trial. Cancel anytime.