
X API Pricing: $10 for 50 Link-Post Requests, and I Could Find Only Six Tweets
X charged me $10 for 50 API link-post requests. I found six tweets. Here's what every small publisher needs to know before automating on X. #XAPI #SocialMedia #Blogging #SmallBusiness #Tech
6 min read
- X billed me for 50 API calls at $0.20 each. Total: $10.00, gone in about a day.
- I can find roughly six published posts. The rest are unexplained.
- Under X’s published rate card, a post with a link costs $0.20 versus $0.015 without one: more than 13x the price for including a URL.
- The dashboard showed totals but not per-call results, so I couldn’t reconcile the charges with the posts I could see.
$10 gone. Six tweets to show for it.
That’s the whole story of my first and last experiment with X API pricing. I set up automatic sharing so my blog articles would post themselves to X. Within about a day, ten dollars in prepaid credits had vanished. When I went looking for what I’d paid for, I found about six tweets.
I run Global Watchdog, a consumer-advocacy blog I’ve kept going for 15 years and some 569 articles. Reading other companies’ fine print is literally what the site is for. So when X handed me a lesson of my own, I figured the least I could do was show you the receipt.
Table of Contents
What Happened
The setup was ordinary. I bought FS Poster, a WordPress plugin that costs $58 a year, to push new articles out to social networks automatically. I connected it to X through an official developer app, funded the account with $10 in API credits on September 30, and let it run.
Then I checked the meter.
X’s usage dashboard logged 50 requests, every single one to an endpoint called ContentCreateWithUrl. The breakdown was almost too neat:
| Date | Requests | Cost at $0.20 each |
|---|---|---|
| September 30 | 24 | $4.80 |
| October 1 | 26 | $5.20 |
| Total | 50 | $10.00 |


The credits page read $0.00. The receipt confirmed a $10.00 purchase. Fifty calls at twenty cents each is ten dollars, to the penny.
Then I counted tweets. About six.
I won’t pretend to know what happened to the rest. FS Poster gave me no retry history, so I can’t say whether they were retries, duplicates, rejections, or something else entirely. What I can tell you is simple: 50 calls were billed, about six posts were visible, and nobody has explained the gap.
50 calls × $0.20 = $10.00. Posts I could find: about six.
Why X API Pricing Jumps More Than 13x When You Add a Link
Here’s where X’s pricing gets interesting for anyone who publishes on the internet.
X’s published pricing lists creating a post at $0.015 per request and creating a post with a URL at $0.20. That’s more than 13 times as much.
X may have technical reasons for treating those requests differently behind the scenes. But from a publisher’s side of the screen, the difference is plain: the expensive one contains the link I’m trying to share. And for a blogger, the link is the point.
A blogger doesn’t automate posts to share moods. A blogger automates posts to send readers to articles. A 13x premium on the one thing a publisher needs isn’t a pricing tier. It’s a toll booth on the exit ramp.
I won’t speculate about X’s motives. I’ll just note the structure exists and let you sit with it.
The Part That Bothers Me Most
I want to be careful here, because there’s a difference between what I know and what I suspect.
What I know: 50 requests were counted. All 50 were categorized as ContentCreateWithUrl. The dashboard showed $10.00 in total cost. My balance hit zero. I found about six corresponding posts.
What I don’t know: what happened to the rest. I can’t prove they were “failed calls.” They might have been retries. They might have returned successful API responses and then vanished. There might be a technical explanation I haven’t thought of.
And that’s the real problem. X’s dashboard gave me a total and a cost. It did not give me a single line saying “this call succeeded” or “this call failed and here’s why.” When you pay per attempt and can’t see what each attempt did, you can’t check your own bill.
X’s pricing page says creating a post with a URL is “charged per request,” and nothing I found there says what happens to a request that fails. Elsewhere in X’s developer docs, an FAQ says only successful responses that return data are billed. I can’t tell whether that covers creating posts.
If it does, all 50 of my requests succeeded, and I still want to know why I found only about six posts. If it doesn’t, some of what I paid for may have produced nothing. Either way, the dashboard didn’t give me enough to match the charges to the posts I could see.
None of this may violate X’s terms. I’m not claiming anything illegal happened. My complaint is about design. A system where the customer pays upfront and can’t verify what was delivered is a consumer-protection problem whether or not the fine print allows it.
It’s like a vending machine that takes your quarter and never tells you whether the candy dropped.
The Math Nobody Wants to Do
Let’s say everything works perfectly. No missing tweets, no mysteries. Just the sticker price.
Three articles a day, auto-shared to X:
3 × 30 × $0.20 = $18 a month
Five a day:
5 × 30 × $0.20 = $30 a month
That’s API fees alone. Add the $58-a-year plugin and you’re looking at roughly $275 to $420 a year for the convenience of automatic link sharing.
Now stack that against a small blog running on modest affiliate income. Judged strictly by the result I could verify afterward, my $10 corresponded to about six visible posts, or roughly $1.67 per visible post. That’s not X’s advertised per-request price. It’s the effective cost of the outcome I could actually see. No small-publisher budget survives that for long.
I’ll own one mistake: my screenshot shows Auto Recharge was off and the billing-cycle cap was set to Unlimited. The $10 prepaid balance was my hard stop, not a spending cap I’d configured. If you try this yourself, set a real cap first. Learn from my ten dollars.
What I Did
Three things. I deactivated and deleted FS Poster. I turned off every X connection on the site. I submitted a refund request for the $58 license under the plugin’s 14-day guarantee.
The request is in. I haven’t gotten the money back, so I won’t say I have. If that changes, I’ll update this.
This isn’t a boycott. I’m not telling anyone to quit X. It’s arithmetic. The numbers don’t work, the billing is opaque, and I won’t keep paying for results I can’t verify.
What X Should Fix
I’m not asking for free API access. Companies get to charge for their services. But four changes would make this fair:
- Show a real ledger. Every billable call should list a timestamp, cost, status code, and whether a post was created. Then there’s no mystery.
- Say plainly whether failed calls are billed. One sentence in the pricing docs. That’s all it takes.
- Explain the link premium. If there’s a technical reason a URL costs 13x more than plain text, say so. Publishers deserve to know what the extra 18.5 cents buys.
- Offer something for small publishers. A few hundred link posts a month at a flat, sane rate. Independent blogs aren’t enterprise clients. Price us like it.
None of this is radical. It’s what any business owes a customer who pays per transaction.
The Bottom Line
If you auto-post to X, open your developer dashboard today. Count the calls you were billed for. Then count the tweets that actually appeared. If those numbers don’t match, figure out why before you spend another dime.
Set a spending cap. Do the math before you automate. And don’t assume that because something runs by itself, it’s working.
At twenty cents a link, every automated post is a small bill, and the dashboard didn’t show me what mine bought.
I spent $10 learning that. You just learned it for free.
Discover more from Global Watchdog
Subscribe to get the latest posts sent to your email.



