Engineering

X API pricing in 2026: what posting, reading and replying costs

X no longer sells tiers. As of September 2026 the X API is pay-per-use: $0.015 per post created, $0.20 if it contains a link, $0.005 per post read, capped at 3 million reads a month before Enterprise.

X API pricing has changed more in the last twelve months than in the ten years before. As of September 2026 there is no Free, Basic or Pro tier for anyone signing up. The X API v2 is pay-per-use: you buy credits in the Developer Console and X deducts them per request, at $0.015 for each post you create, $0.20 if that post contains a link, and $0.005 for each post you read. This post covers the rate card, what it means for a scheduler or agent that needs to post and read replies, the rate limits that still apply, and the engineering no credit balance pays for.

Last verified: September 2026, against docs.x.com and the X Developer Platform announcements. Every figure links to its source. X says on its pricing page that prices are subject to change, so treat the console as the final word.

Short answer: X API pricing in September 2026

There are no tiers. X's pricing page opens with "pay-per-usage pricing. No subscriptions" and describes a credit model: purchase credits up front, set a spending limit, watch the balance in the console. Reads are charged per resource returned, writes per request, and pay-per-use accounts are capped at 3 million post reads per monthly billing cycle, above which X sends you to Enterprise.

The subscription tiers are gone for new developers. X announced the pay-per-use launch on February 6, 2026, kept free scaled access only for apps classified as Public Utility Apps, and gave active Free tier users a one-time $10 voucher. Legacy Basic subscribers were migrated after June 1, 2026, legacy Pro subscribers after September 1, 2026. A vendor blog still quoting $200 a month for Basic predates the migration.

The X API pay-per-use rate card

These are the prices on docs.x.com as of September 2026, after the April 20, 2026 update, trimmed to what a publishing, engagement or analytics product touches. The full card adds DMs, lists, spaces and webhook events.

Operation

Price

Unit

Post: Create

$0.015

Per request

Post: Create (with URL)

$0.200

Per request

Post: Create (summoned reply)

$0.010

Per request

Interaction: Delete

$0.010

Per request

Content: Manage

$0.005

Per request

Media Metadata

$0.005

Per request

Posts: Read

$0.005

Per post returned

User: Read

$0.010

Per user returned

Following/Followers: Read

$0.010

Per user returned

Like, Mute, Block: Read

$0.001

Per resource

Owned Reads

$0.001

Per resource, own data only

Counts: Recent

$0.005

Per request

Trends

$0.010

Per request

Post reads cap

3,000,000

Per billing cycle

Three rules shape the bill more than the unit prices.

Deduplication. X charges for a resource once per UTC day, however many times you fetch it:

All resources are deduplicated within a 24-hour UTC day window. If you request and are charged for a resource (such as a Post), requesting the same resource again within that window will not incur an additional charge.

X calls this a "soft guarantee" that outages can break. It means polling a post's metrics hourly costs the same as polling once a day.

Owned Reads. Twelve endpoints under /2/users/{id}/, including your own posts, mentions and followers, drop to $0.001 per resource, but only when {id} is the authenticated user and that user owns the developer app. A multi-tenant product whose customers connect their own accounts does not qualify; its reads stay at $0.005.

Credits, not invoices. The balance is prepaid. X's docs say it "can go slightly negative", at which point requests are blocked until you top up. Auto-recharge fires at most once per five minutes and pauses at zero, so a bursty workload can see "out of credits" errors with auto-recharge on. Purchases earn xAI API credits: 10, 15 and 20 percent back once cumulative spend in a cycle passes $200, $500 and $1,000.

What happened to the Twitter API free tier, Basic and Pro

The tier history explains why every Twitter API pricing figure on the web disagrees with every other one.

Date

Change

Source

Feb 2023

Free access to v1.1 and v2 ended

TechCrunch

Mar 2023

Free: 1,500 posts/month. Basic: $100/month, 50,000 posts and 10,000 reads per app

TechCrunch

May 2023

Pro: $5,000/month, 1 million reads and 300,000 posts

TechCrunch

Oct 2024

Basic raised to $200/month, annual plans added, Free cut to 500 posts

TechCrunch

Aug 2025

Likes and follows removed from Free

X changelog

Oct 2025

Pay-per-use pilot, writes at $0.01

Announcement

Feb 2026

Pay-per-use launched, Free tier ends except Public Utility Apps

Announcement

Apr 2026

Writes to $0.015, URL posts $0.20, quote posts, likes and follows removed for self-serve

Announcement

Jun 2026

Legacy Basic migrated to pay-per-use

Announcement

Sep 2026

Legacy Pro migrated to pay-per-use

Announcement

The migration terms show what X thinks the old tiers were worth. Twitter API Basic monthly subscribers were charged a $200 initial credit with a $400 per-cycle spend cap; Twitter API Pro subscribers got a $5,000 initial credit and a $10,000 cap. Annual subscribers had the prorated remainder converted to credits.

Is there an X API free tier at all? Not for a new signup. Free access is reserved for Public Utility Apps, a classification X assigns rather than one you choose, and the pricing page lists no free allowance.

What a scheduler or agent actually pays

Under the old tiers the question was "which tier do I need". Under pay-per-use it is "which requests does my feature make", because every feature is a different line on the card.

Posting only

A plain text post is one POST /2/tweets request at $0.015. A post with a URL is $0.20, thirteen times more, charged per post rather than per link. A thread is one request per post, chained with reply.in_reply_to_tweet_id. Deleting is $0.010.

Media

Media upload is a separate flow before the post: initialize, append chunks, finalize, poll status for video. The rate card has no line named "media upload"; the nearest entries are Content: Manage and Media Metadata at $0.005 per request, and the console shows the exact charge. A post may carry up to 4 photos, 1 GIF or 1 video; video is capped at 20 minutes and 8 GB for default accounts (125 minutes and 16 GB for Premium).

Reading and answering replies

Reading replies to your own post is a search: GET /2/tweets/search/recent filtered by conversation_id, or GET /2/users/{id}/mentions, at $0.005 per post returned ($0.001 if the account owns the app). Answering them is where self-serve customers hit a wall no credit balance fixes. Since February 23, 2026, X's manage posts guide states:

Replies via the API are only permitted if the replying account has been explicitly summoned by the original post's author. This means one of the following must be true: The original author @mentions the replying user/account in their post. The original author quotes a post from the replying user/account. If neither condition is met, the reply request will be rejected.

The rule is about a replying account that differs from the author, so threads (you replying to yourself) are not the concern; replying to a stranger's post is. Whether a reply to your post counts as a summons is not spelled out, so test it before promising community-management features. Enterprise customers are exempt. Summoned replies are billed at $0.010.

Analytics

public_metrics (likes, reposts, replies, quotes, bookmarks, impressions) comes with any read of the post. non_public_metrics and organic_metrics (URL and profile clicks) need the author's user token and cover only the last 30 days. Each read is $0.005, deduplicated per UTC day, so a daily metrics job costs $0.005 per tracked post per day.

A worked month

For a product publishing for connected customer accounts (so no Owned Reads), at September 2026 prices:

Workload

Requests

Cost

1,000 text posts

1,000 x $0.015

$15.00

1,000 posts with links

1,000 x $0.20

$200.00

Metrics on 500 posts, daily for 30 days

15,000 x $0.005

$75.00

Reply search returning 5,000 posts

5,000 x $0.005

$25.00

The same 1,000 posts cost $15 or $200 depending on whether they carry a link. For a scheduler built to drive traffic, the link surcharge is the whole X API cost.

Twitter API rate limits still apply on top of credits

Credits limit how much you pay; rate limits limit how fast you can spend. X's rate limits page publishes one set of limits for self-serve apps, in 15-minute or 24-hour windows: per-user limits for OAuth user tokens, per-app limits for app-only bearer tokens. Enterprise gets custom limits.

Endpoint

Per app

Per user

POST /2/tweets

10,000 / 24 h

100 / 15 min

DELETE /2/tweets/:id

Not listed

50 / 15 min

POST /2/media/upload/initialize

180,000 / 24 h

1,875 / 15 min

GET /2/tweets/:id

450 / 15 min

900 / 15 min

GET /2/tweets/search/recent

450 / 15 min

300 / 15 min

GET /2/users/:id/mentions

450 / 15 min

300 / 15 min

GET /2/users/:id/tweets

10,000 / 15 min

900 / 15 min

GET /2/users/me

Not listed

75 / 15 min

Exceeding a limit returns HTTP 429 with error code 88; the x-rate-limit-limit, x-rate-limit-remaining and x-rate-limit-reset headers let you back off before that. The number to plan around is the app-level 10,000 posts per 24 hours on POST /2/tweets: every account connected to your app shares it, so one customer's bulk import throttles everyone.

Hidden costs: the engineering the credits do not cover

Pay-per-use removed the subscription, not the code.

OAuth 2.0 with PKCE. Users authorize your app with the tweet.read, tweet.write, users.read, media.write and offline.access scopes. X's OAuth 2.0 guide says an access token "will only stay valid for two hours unless you've used the offline.access scope", the scope that issues a refresh token for POST /2/oauth2/token with grant_type=refresh_token. A scheduler cannot store a token at connect time and use it at publish time; it refreshes before every job.

Chunked media upload. The current v2 media flow is POST /2/media/upload/initialize, POST /2/media/upload/{id}/append in chunks of 5 MB or less, POST /2/media/upload/{id}/finalize, then GET /2/media/upload?command=STATUS until video processing succeeds. Images are limited to 5 MB, GIFs to 15 MB. The old command=INIT style parameters are the previous protocol; the docs say not to send them.

bash
1# Initialize a video upload (OAuth 2.0 user token with media.write)
2curl -X POST "https://api.x.com/2/media/upload/initialize" \
3  -H "Authorization: Bearer $X_USER_ACCESS_TOKEN" \
4  -H "Content-Type: application/json" \
5  -d '{ "media_type": "video/mp4", "total_bytes": 4194304, "media_category": "tweet_video" }'
6# -> { "data": { "id": "1899…" } }
7# Then: POST /2/media/upload/{id}/append per <=5 MB chunk,
8#       POST /2/media/upload/{id}/finalize,
9#       GET  /2/media/upload?command=STATUS&media_id={id} until succeeded,
10#       POST /2/tweets with { "text": "...", "media": { "media_ids": ["1899…"] } }

Threads, retries and price drift. Each post in a thread waits for the previous post's ID, and a failure in the middle leaves a half-published thread to resume or delete. Rate-limit handling has to be per user and per app at once. And the write price, the link surcharge and the quote-post removal all changed between October 2025 and April 2026, so anything that estimates X API cost for your customers needs a config value, not a constant.

X API pricing with Outstand: you still pay X

Outstand is BYOK for X. You create your own X developer app on pay-per-use, load your own credits, and connect that app to Outstand. X bills your balance for every post and read exactly as above; Outstand does not resell, absorb or discount X's fees. What Outstand buys you is the code: OAuth 2.0 with PKCE, refreshing the two-hour tokens, the chunked upload, thread chaining, queueing and throttling under the per-user and per-app limits, scheduling, replies and analytics, through the same endpoint as the other 11 networks.

On X's side you need a developer account at console.x.com, an app with the five scopes above, and credits in the balance. There is no app review. Then a thread is one request:

bash
1curl -X POST https://api.outstand.so/v1/posts \
2  -H "Authorization: Bearer $OUTSTAND_API_KEY" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "accounts": ["x"],
6    "containers": [
7      { "content": "What the X API pay-per-use rate card means for schedulers" },
8      { "content": "1/ Every post with a link costs $0.20. Every post without one costs $0.015." },
9      { "content": "2/ So the link now goes in the first reply, and the root post is text." }
10    ],
11    "scheduledAt": "2026-09-20T14:00:00Z"
12  }'

Outstand publishes the three posts in order as a reply chain, uploads any media with the v2 chunked flow, and refreshes the token first. Scheduling runs up to 30 days out, with up to 4 images or a video per post, and analytics and replies come through the same API. The BYOK setup steps are on the X API integration page and in the Outstand API docs.

Outstand pricing is $19 per month including 3,000 posts, then $0.007 per post up to 10,000 and $0.005 after, with a $249 per month unlimited posting add-on. A post to X through Outstand costs that plus X's $0.015 or $0.20, and the X part is the larger number for any post with a link.

When to build on the X API directly

X is one of the few networks where the vendor's own fee dominates, unlike Instagram API pricing or LinkedIn API pricing, where the platform charges nothing and the cost is all access and engineering.

Build directly when:

  • X is the only network you publish to and the token, upload and thread code is a one-time cost you are happy to own.
  • You need Enterprise access for volume or the reply exemption, so you are talking to X's sales team anyway.
  • You publish only for your own account and want Owned Reads at $0.001, which a shared app cannot give you.
  • Compliance rules forbid a third party from holding your users' tokens.

Use a layer on top when:

  • X is one of several networks and you would rather write one publishing flow than twelve.
  • Your customers connect their own accounts, so you need per-user refresh, per-app throttling and a queue from day one.
  • You are shipping an AI agent and want posting to be one tool call with a stable schema everywhere.
  • Nobody wants to track a rate card that has changed three times in twelve months.

There is no Twitter API alternative that avoids X's fees: every legitimate way to post goes through the X API v2 and pays these prices. What you can choose is who writes and maintains the integration.

X API pricing in 2026 is simple to state and hard to budget: $0.015 per post, $0.20 with a link, $0.005 per read, prepaid, with rate limits, a reply restriction and a token that expires every two hours. Whether you build against it directly or through Outstand with your own app, X's part of the bill is yours; the decision is whether the engineering is too.


FAQ

Is there an X API free tier in 2026?

No, not for new developers. X launched pay-per-use on February 6, 2026, limited free access to apps it classifies as Public Utility Apps, and moved active Free tier users to credits with a one-time $10 voucher. The pricing page lists no free allowance.

How much does the Twitter API cost per post?

As of September 2026, $0.015 per post created via POST /2/tweets, $0.20 if the post contains a URL, and $0.010 for a summoned reply. Deleting a post costs $0.010. Prices are on docs.x.com and X states they are subject to change.

What happened to Twitter API Basic and Pro?

Both were deprecated in 2026. Basic ($200 per month) moved to pay-per-use after June 1, 2026, with a $200 initial credit and a $400 spend cap. Pro ($5,000 per month) moved after September 1, 2026, with a $5,000 initial credit and a $10,000 cap. Neither can be bought today.

What are the Twitter API rate limits for posting?

POST /2/tweets allows 100 requests per user per 15 minutes and 10,000 per app per 24 hours; media initialization allows 1,875 per user per 15 minutes. Exceeding a limit returns HTTP 429 with error code 88, and the x-rate-limit-* headers show the remaining budget and reset time.

Does X API pay per use have a monthly cap?

Reads are capped at 3 million post reads per billing cycle; above that X requires an Enterprise plan. Writes have no monthly cap on the pricing page, only rate limits. You can set your own spending limit in the console, which blocks requests once reached.

Does Outstand pay X's API fees for me?

No. Outstand is bring-your-own-keys for X: you create the developer app, buy the credits and pay X per request. Outstand charges its own per-post pricing and handles OAuth, token refresh, media upload, threads, scheduling, rate limiting, replies and analytics on the X API v2.