X API Rate Limit
How X’s API rate limiting works, and how it differs across access tiers.
X runs two independent throttles: classic rate limits — POST /2/tweets allows 100 requests per 15 minutes per user and 10,000 per 24 hours per app, returning 429 when exceeded — and a billing cap of 3 million post reads per month on pay-per-use accounts. Read the x-rate-limit-* response headers to back off correctly.
X runs two independent throttles on the same API, and it's easy to confuse them. One is a rate limit: a request-count ceiling per time window, the classic 429. The other is a billing cap: a prepaid-credit or monthly-included-volume ceiling tied to the 2026 pay-per-use pricing model. Hitting either one returns an error; only one of them costs money to raise. Numbers below are as published on docs.x.com/x-api/fundamentals/rate-limits and docs.x.com/x-api/getting-started/pricing, checked August 25, 2026.
Rate limit windows and headers
x-rate-limit-limit (the ceiling), x-rate-limit-remaining (what's left in the current window), and x-rate-limit-reset (a Unix timestamp for when it resets). Exceeding either the window or the daily cap returns 429 until reset.Per-app and per-user limits are separate counters
Which numbers matter for posting?
POST /2/tweets (creating a post): 100 requests per 15 minutes per user, 10,000 per 24 hours per app. For GET /2/tweets (reading posts): 5,000 per 15 minutes per user, 3,500 per 15 minutes per app. For GET /2/tweets/search/recent: 300 per 15 minutes per user, 450 per 15 minutes per app. A five-post thread from one account consumes five units of that 100-per-15-minute posting cap — see X Thread API.The separate billing cap
What does this mean for a publishing integration?
curl https://postgate.studio/api/posts/post_01JXYZ \
-H "Authorization: Bearer $POSTGATE_API_KEY"Frequently asked questions
What do the x-rate-limit headers mean?
Every response carries three headers you can read directly: x-rate-limit-limit (the ceiling), x-rate-limit-remaining (what’s left in the current window), and x-rate-limit-reset (a Unix timestamp for when it resets). Most endpoints reset every 15 minutes; a handful of write endpoints also carry a 24-hour ceiling on top. Exceeding either returns 429 until reset.
Are per-app and per-user limits separate on X?
Yes — limits authenticated with a bearer token (app-only) and limits authenticated with an OAuth user token are tracked independently. A single user hitting their per-user posting cap doesn’t block any other user of the same app; the app-level counter is a shared ceiling above all of them, not a sum.
What is the rate limit for reading posts on X?
For GET /2/tweets, 5,000 requests per 15 minutes per user and 3,500 per 15 minutes per app. For GET /2/tweets/search/recent, 300 per 15 minutes per user and 450 per 15 minutes per app.
How should I handle a 429 from the X API?
Design for 429s as a normal, expected response, not an error state — back off using the x-rate-limit-reset header rather than a fixed delay. PostGate’s Posts API already retries and reports per-target delivery state independently of X’s own limits, so a throttled X target doesn’t block delivery to your other connected platforms.
