Twitter (X) API License: The Developer Agreement in Plain English

Search for "Twitter API license" and you mostly find archived copies of old developer terms and news about the 2023 paid plans. This page reads the current text instead: the X Developer Agreement, the X Developer Policy and the Restricted Use Rules as published on docs.x.com/developer-terms, all three fetched and read in full for this page. Our older guide on how to answer "How will you use the Twitter API?" covers the application form and the use-case description reviewers check; this page covers the license itself: what the grant allows, what it forbids, how commercial use is scoped, and what happens when the license ends.
The core of it is a clause table: each common activity, whether the text allows it, and the section where it is written, so you can check the source instead of trusting a summary. After that come the clauses that most often decide whether a project fits (commercial use, redistribution, AI and analytics, deletion and termination), a project-by-project reading, and a small real-data study of how often X's own developer accounts talk about these rules.
One boundary up front. TwitterAPI.io is an independent data API. It is not affiliated with, endorsed by or licensed by X, and nothing here says anyone is exempt from X's terms. This is a plain-English reading aid written by developers, not legal advice. For a real decision, read the agreement itself and ask a lawyer who knows your jurisdiction.
The clause table: what the X API license lets you do, and where it says so
The Agreement's own header reads "Last Updated: April 27, 2026". The counterparty depends on where you are based: X Corp. in Texas if your principal place of business is outside the EU, EFTA states and the UK, or X Internet Unlimited Company in Dublin if it is inside them (Section I, definition 9). The license runs from the day you accept or first use the material, whichever is earlier (VII.A).
"Licensed Material" means the X API plus X Content, and X Content is broadly defined: posts, post IDs, profile information, "any other data and information made available to you through the X API or by any other means authorized by X, and any copies and derivative works thereof" (Section I, definition 12). Every row below is a paraphrase; the Where column tells you which clause to read in the original.
Two things in the table surprise people. First, the license grant is short and positive (four uses), while the restrictions run to twelve lettered items in III.A alone; anything not granted is reserved, because X "retains and reserves all rights ... not expressly granted" (V.A). Second, the analysis permission in II.A(1) carries the words "as explicitly approved by X", which ties back to the Developer Policy rule that your use-case description "is binding on you" and that a substantive change needs approval before you start.
Commercial use: what the Agreement allows on pay-per-use, and when it requires Enterprise
"Twitter API commercial use" is the variant people search most after the license itself, and the text answers it in three layers.
Layer 1: the definition. Section III.B defines Commercial Use as any use "(a) by or for a business (i.e. an entity whose primary purpose is to earn revenue through a product or service), or (b) as part of a product or service that is monetized (e.g., website advertising, licensing fees, in-app promotions, and sponsorships)." If your project is designated non-commercial, you may not make Commercial Use of the material; the same clause notes the restriction "may not apply to officially registered non-profits or NGOs".
Layer 2: the scope of pay-per-use. Section III.L says pay-per-use access "is designed for hobbyists, commercial prototyping, initial development, early-stage X product integrations, and supporting applications with a limited number of end-users". Section III.M repeats it as a commercial-use rule: beyond that scope "you must apply (or already subscribe to) an Enterprise plan". The Developer Policy carries a near-identical sentence. The text does not put a number on "limited".
Layer 3: triggers that force Enterprise regardless of size. Any display of X Content to a government-related end user means you must apply for (or already subscribe to) an Enterprise plan, plus a disclosure of every such user, and advance notice of new ones (XIV.C). X may require an Enterprise plan if the number of users signing in with X "greatly exceeds the normal levels of other developers subscribed to a similar tier" (Developer Policy, X Login). Sites that embed or display posts must contact X once they exceed "10 million daily impressions" (Developer Policy, Public display of Posts). And under III.J, X may review your use "at any time" and require a change of tier.
Pricing is a separate document. On X's pay-per-usage rate card (docs.x.com/x-api/getting-started/pricing), a post read costs $0.005, a user read $0.010 and a follower or following read $0.010; creating a post costs $0.015, or $0.20 with a URL. Pay-per-usage is capped at 3 million post reads per monthly billing cycle, with Enterprise above that. New accounts get $20 of X API credits for saving a first payment card and completing a first purchase, plus a match of the first auto-recharge up to $50. None of those prices changes the license: the pricing page says prices are "subject to change", Section VII.B promises reasonable advance notice of material price changes to Paid Services, and paid plans are prepaid and non-refundable unless the law requires otherwise (VII.E).
Redistribution and datasets: the ID rule, the 1.5M cap, and a discrepancy
This is where research and data products most often hit the terms. The Developer Policy is direct: "If you provide X Content to third parties, including downloadable datasets or via an API, you may only distribute Post IDs, Direct Message IDs, and/or User IDs (except as described below)." The recipient then rehydrates the IDs through the X API, which is how X makes sure deleted posts do not live on in shared files.
The two pages disagree. The Developer Policy says developers "may provide up to 500 public Posts Objects and/or User Objects to each person who uses your service on a daily basis if this is done via non-automated means (e.g., download of spreadsheets or PDFs)". The Restricted Use Rules page says "you may only share up to 50,000 hydrated public Post Objects and/or User Objects per recipient, per day". On academic IDs, the Policy limits sharing to what X approved, while the Restricted Use page says academic researchers may redistribute "an unlimited number". The Policy calls itself "part of your contract with X", and Agreement II.C also lists the API Restricted Use Rules as an incorporated term, so the conflict sits inside the contract itself. If your plan depends on the higher number, get written confirmation from X through the API Policy support form the Restricted Use page points to.
Recipients inherit the terms. Anything you pass on "remains subject to this Policy", and recipients must agree to the X Terms of Service, Privacy Policy, Developer Agreement and Developer Policy before receiving it. A shared folder of hydrated posts for a client therefore carries obligations for both of you.
Location data is a special case. You may not "aggregate, cache, or store location data" except together with the post it is attached to (Agreement III.E), and the Developer Policy gives the line: separating location to show "where individuals have been over time" is out, while heat maps of aggregated activity such as "the number of people in a city using a hashtag" are permitted.
AI, analytics and monitoring: the clauses most likely to decide your project
Model training. Agreement III.A(k) bars using "the X API or X Content to fine-tune or train a foundation or frontier model". The Restricted Use page repeats it and adds "with the exception of Grok". The clause names foundation and frontier models; the text does not define those terms, so a narrow classifier is a question to put to X or your lawyer, not something to assume. Using an LLM to summarize or classify posts you are licensed to display is a different activity from training on them, and the text treats it differently.
Sensitive inference. The Restricted Use Rules list characteristics you may never "derive or infer, or store derived or inferred" about a user: health (including pregnancy), negative financial status, political affiliation, racial or ethnic origin, religious or philosophical beliefs, sex life or sexual orientation, trade union membership, and alleged or actual crimes. The same page then says that "aggregate analysis of X content that does not store any personal data (for example, user IDs, usernames, and other identifiers) is permitted" if it complies with law and the rest of the terms.
Surveillance. Agreement XIV.B forbids, unless X approves in writing, using X Content for surveillance or intelligence gathering, "investigating or tracking X users", monitoring sensitive events "(including but not limited to protests, rallies, or community organizing meetings)", and profiling people on sensitive categories. The Restricted Use page adds background checks or "any form of extreme vetting", credit or insurance risk analyses, "individual profiling or psychographic segmentation" and facial recognition, and says the ban applies to "any entity". Government end users whose mission includes surveillance are excluded outright (XIV.C).
Off-X matching. Linking an @handle or user ID to a person, household, device or browser outside X needs the person's "express, opt-in consent", or must rest only on information they gave you directly or public data (Developer Policy and Restricted Use Rules). The example X gives: matching "John Doe" in your customer records to @johndoe.
Benchmarking X itself. Agreement III.C limits aggregate X user metrics, X responsiveness and API performance data to "non-commercial, internal purposes" and calls them Confidential Information. The Developer Policy lists what not to calculate, including "the total number of Posts posted per day", and says you may not publicly disclose research that identifies behavior or content violating X policies without express written permission.
Automation and write actions. Services that post, follow or send Direct Messages must follow the Automation Rules: get "explicit consent before sending people automated replies or Direct Messages", honor opt-outs immediately, never bulk-follow or post identical content across accounts, and label bot accounts with who runs them (Developer Policy). X also tightened replies in practice: on February 23, 2026 @XDevelopers announced that "programmatic replies via POST /2/tweets are now restricted" unless the original author mentions or quotes you, for Free, Basic, Pro and Pay-Per-Use apps, with Enterprise and Public Utility apps "not impacted".
Display, deletion, termination and the fine print most readers skip
Keep stored content current. Agreement IV.B: if content is deleted, protected, suspended, withheld or loses its location, you "make all reasonable efforts to delete or modify" it "as soon as possible, and in any case within twenty four (24) hours after a written request" from X or the user. The Developer Policy goes further for anything you store offline: you "must keep it up to date with the current state of that content on X".
No iframes, ever. Section III.K calls the ban on iframes or "any similar embedding mechanism" absolute, and says a violation "may result in immediate termination". Embedded posts and timelines through X for Websites are the sanctioned display route, and they come with their own consent and cookie-notice duties (Developer Policy).
X can end it for any reason. You may cancel, and X "may terminate this Agreement for any reason at X's sole discretion" (VII.I), effective at the end of the paid period unless you breached it, and may suspend immediately for reasons that include "prolonged inactivity" or if serving you "is no longer commercially viable" (VII.H). On termination every license ends, you "permanently delete all Licensed Material", and on request you provide evidence such as "screenshots of deletion confirmation" within ten business days.
Audit, liability and venue. X may audit records covering the previous two years, at most once every twelve months without cause, and you pay the audit costs if it finds an underpayment of 5% or more (VIII). X's aggregate liability "will not exceed fifty dollars ($50.00)" (XI). Outside the EU, EFTA and UK, Texas law applies with courts in the Northern District of Texas or Tarrant County; inside them, Irish law and Irish courts. Either way, to the extent the law allows, you have one year to bring a claim and waive class actions (XIII).
The terms move. X may update the Agreement or any incorporated term, and "continued access or use ... will constitute binding acceptance" (XII). The Developer Policy says it "may be changed from time to time without notice". Re-read the pages when you plan a launch rather than relying on any summary, this one included.
If you store posts, the deletion duty is the clause that turns into code. The sketch below shows the generic pattern: re-request the IDs you hold in batches, and treat any ID that no longer comes back as a deletion candidate for your own store. It uses TwitterAPI.io's /twitter/tweets lookup as the example data source; whether a given data source satisfies a specific X obligation is a question for X's terms and your lawyer, not something this snippet settles.
import os
import requests
BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": os.environ["TWITTERAPI_IO_KEY"]}
def still_available(ids):
"""Return the subset of tweet ids that the lookup still returns."""
alive = set()
for i in range(0, len(ids), 100):
batch = ids[i:i + 100]
r = requests.get(f"{BASE}/twitter/tweets",
params={"tweet_ids": ",".join(batch)},
headers=HEADERS, timeout=30)
r.raise_for_status()
for t in r.json().get("tweets", []):
alive.add(t["id"])
return alive
stored = ["1615405842735714304", "2019881223666233717"] # ids in your database
alive = still_available(stored)
to_remove = [i for i in stored if i not in alive]
print(f"{len(to_remove)} stored posts no longer returned; review and delete them")
What the terms mean for common projects
Most readers arrive with a specific project in mind. Here is how the clauses above line up against the usual ones. Each row is a reading of the text, not a ruling; the deciding facts (who sees the data, whether you sell it, how many users you have) are yours.
Three patterns run through the table. Display and analysis for your own users is what the license is built for. Moving data to someone else (resale, shared datasets, ad audiences) is where most hard limits sit. And anything that looks at individuals rather than content in aggregate (tracking, matching, sensitive inference) needs consent or written approval, or is not allowed at all.
What X's developer accounts say about the rules: our 2026 timeline study
Terms change, and developers usually learn about it from X's developer accounts. To see how often that channel carries rule and pricing news, we pulled the recent timelines of @XDevelopers (600 posts, 376 of them original) and the older @API account (140 posts, 85 original), collected in 2026, and tagged every original post with a keyword dictionary for five topics.
Rules news is rare. Only 8 of 461 original posts (1.7%) mention terms, policy or license at all, and 16 (3.5%) mention pricing or billing. Pricing has become the more common subject recently: 9 of the 23 original posts dated 2026 in the sample touch it, against 1 of 157 in 2022. If you depend on the terms, following the account is not a substitute for re-reading docs.x.com/developer-terms.
But when it comes, it lands. The 24 posts about terms or pricing drew a median 400.5 likes and 53 replies, against 60 likes and 5 replies for the other 437 posts, a 6.7x gap on likes. Part of that is timing: most rules posts are recent and engagement on X rose after 2022. Comparing 2023 onward only, the gap shrinks to 528 vs 242 likes (2.2x) and 65 vs 42 replies. Still more reaction, on far fewer posts.
The posts behind those numbers are the milestones developers remember. On January 17, 2023 the account wrote that "Twitter is enforcing its long-standing API rules. That may result in some apps not working", the post with the most views among the terms posts in our sample. On February 6, 2026 it announced "Officially launching X API Pay-Per-Use". On February 23, 2026 it restricted programmatic replies. And on May 21, 2026 it said legacy Basic plans "are being deprecated" with subscribers "automatically migrated to the new Pay-Per-Use plan after June 1, 2026".

Third-party X data APIs and the license: what changes and what does not
Builders comparing data sources often ask whether a third-party data API changes any of this. It helps to be precise about what it does and does not change.
What it does not change. The X Developer Agreement governs the X API and X Content obtained through it or "by any other means authorized by X". The X Terms of Service, the X Rules and the law (copyright, data protection, privacy) do not disappear because data arrives through a different pipe, and nothing on this page says otherwise. TwitterAPI.io is an independent service that is not affiliated with, endorsed by or licensed by X. Its own terms (twitterapi.io/terms) say: "You are solely responsible for ensuring that your use of the Service complies with all applicable laws, including data protection, privacy, and export control laws." The privacy and anti-surveillance rules X writes are also a sensible design baseline whichever source you use.
What it does change: the commercial terms. On TwitterAPI.io you pay only for the data returned: tweet endpoints cost 15 credits per tweet, which is $0.15 per 1,000 tweets ($1 = 100,000 credits), with a 15-credit minimum per request, so a search that finds nothing costs $0.00015 and a full 20-tweet page costs $0.003. Profiles cost 18 credits each ($0.18 per 1,000). On X's pay-per-usage rate card a post read is $0.005, so 1,000 posts cost $5 there versus $0.15 here, about 33x. New accounts that pass the automatic bot check get up to $1 of free credits (at most 100,000 credits, no card, one per person or network, expiring after 31 days); purchased credits never expire. Rate limits are 0.2 requests per second before the first payment and 20 once paid, 50 on Scale and 500 on Business. See /pricing for the Starter, Builder, Pro, Scale and Business subscriptions.
A practical split. Teams that need an X-approved license for a regulated or government context, or plan to redistribute data at scale, generally talk to X about Enterprise. Teams that need to read public posts for monitoring, research or AI agents often compare per-1,000 prices first. Either way, write down your use case, map it to the clause table above, and keep stored data in sync with deletions.

How we collected this
Question. How often do X's own developer-facing accounts post about the terms, pricing and access rules that govern the X API, and how much reaction do those posts get compared with everything else?
Accounts and method. @XDevelopers and @API, both X Corp. organization accounts. We called /twitter/user/last_tweets with default settings (replies excluded), newest first: 30 pages for @XDevelopers and all 8 pages available for @API. A third account, @Policy, returned no posts and is excluded. That is 39 requests returning 740 posts, about $0.1112 of credits. Reposts (279) were excluded from the topic analysis because their text belongs to someone else, leaving 461 original posts.
Window and tagging. Each timeline goes back as far as the endpoint returned: @XDevelopers originals span 2020 to 2026, @API 2016 to 2023. Collected in 2026. Topics come from a keyword dictionary (published in the study's analyze.py); a post can match several topics, and keyword tagging both misses some posts and catches some loosely related ones, for example a launch post that mentions pay-per-use.
What the sample cannot show. It covers two accounts' recent timelines, not every announcement X has made (some changes are announced only in docs, emails or the developer console). Medians on 15 to 24 rules posts are small-sample figures. View counts are not compared because X did not show views on older posts. Nothing here measures X as a platform.
Privacy. Aggregates only, from organization accounts. We did not analyze reposted, quoted or replying authors, and raw timelines stay outside the repository because reposts embed other people's posts. The de-identified per-post rows (year, topics, counts, no IDs or text) are in the study's sample.json.
"""Watch X's developer accounts for terms, policy and pricing posts.
Pulls recent original posts from @XDevelopers via TwitterAPI.io and flags the
ones that mention the developer terms or pricing, so a change does not slip by.
"""
import os
import re
import requests
BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": os.environ["TWITTERAPI_IO_KEY"]}
RULES = re.compile(r"\bterms\b|\bpolic(y|ies)\b|agreement|licens|pric(e|es|ing)|pay[- ]per[- ]us(e|age)|\bcredits?\b|deprecat", re.I)
def recent_posts(user, pages=3):
posts, cursor = [], ""
for _ in range(pages):
params = {"userName": user}
if cursor:
params["cursor"] = cursor
r = requests.get(f"{BASE}/twitter/user/last_tweets", params=params,
headers=HEADERS, timeout=30)
r.raise_for_status()
body = r.json()
posts += (body.get("data") or {}).get("tweets", [])
if not body.get("has_next_page"):
break
cursor = body.get("next_cursor", "")
return posts
for acct in ("XDevelopers", "API"):
for t in recent_posts(acct):
if t.get("retweeted_tweet"):
continue # skip reposts: the text belongs to another author
if RULES.search(t.get("text", "")):
print(t["createdAt"], t["likeCount"], "likes |", t["url"])
print(" ", t["text"][:140].replace("\n", " "))
Questions readers ask
Is the Twitter (X) API license free?
The license grant in Section II.A of the X Developer Agreement is royalty free, but access to the API is paid. X's pay-per-usage rate card lists $0.005 per post read and $0.010 per user read, with $20 of credits for saving a first card and completing a first purchase plus a match of the first auto-recharge up to $50. The license stays revocable whatever you pay.
Can I use the X API for commercial purposes?
Yes, within limits. Section III.B defines Commercial Use as use by or for a business or as part of a monetized product. Sections III.L and III.M say pay-per-use covers hobbyists, commercial prototyping, early-stage integrations and apps with a limited number of end-users; beyond that X requires an Enterprise plan. Projects designated non-commercial may not make commercial use at all. Not legal advice: check the agreement for your case.
Can I sell or share a dataset of tweets?
Selling or syndicating X Content is prohibited except as expressly permitted (Agreement III.A(d)). Sharing is limited to Post, DM and User IDs, at most 1,500,000 Post IDs per entity per 30 days without written permission. For manual downloads of hydrated posts, the Developer Policy says 500 per person per day while the Restricted Use Rules page says 50,000 per recipient per day; confirm with X before relying on the higher figure.
Can I train an AI model on X data?
Not a foundation or frontier model. Agreement III.A(k) bars using the X API or X Content to fine-tune or train such models, and the Restricted Use Rules name Grok as the only exception. Summarizing or classifying posts you are licensed to display is a different activity, still subject to the privacy and sensitive-inference rules.
Where is the official X Developer Agreement?
At docs.x.com/developer-terms/agreement, with the Developer Policy at docs.x.com/developer-terms/policy and the Restricted Use Rules at docs.x.com/developer-terms/restricted-use-cases. The Agreement's header reads "Last Updated: April 27, 2026", and X says continued use after an update counts as acceptance, so re-read it before a launch.
What happens if I break the X Developer Agreement?
X may suspend access immediately and without notice if it reasonably believes you violated the Agreement (VII.H), and may terminate for cause immediately on notice without a prorated refund (VII.I). On termination all licenses end, you must delete all Licensed Material, and on request show evidence of deletion within ten business days.
Does using a third-party Twitter API mean X's terms do not apply?
Do not assume that. The X Terms of Service, the X Rules and laws on copyright, privacy and data protection apply regardless of the pipe. TwitterAPI.io is independent of X and not licensed or endorsed by it, and its own terms make each customer responsible for complying with applicable law. For a definitive answer about your project, ask a lawyer.
Do I have to delete tweets that were deleted on X?
Under the X terms, yes. Agreement IV.B requires reasonable efforts to delete or modify removed, protected or suspended content as soon as possible and within 24 hours of a written request from X or the user, and the Developer Policy asks you to keep stored content up to date with its current state on X.
Continue
- X Developer Agreement (license grant, restrictions, commercial use, termination)
- X Developer Policy (redistribution, automation, privacy, display)
- X API Restricted Use Rules (sensitive data, surveillance, model training)
- X API pay-per-usage pricing and credits
- @XDevelopers: programmatic replies restricted (February 2026)
- TwitterAPI.io API documentation
- X API overview: endpoints, pricing and access options
- Guide to the official Twitter (X) API and its tiers
- How to answer "How will you use the Twitter API?" on the X application
- X API cost breakdown: what reads and writes cost
- How to get an X API key and bearer token
- Exporting Twitter datasets for research
- TwitterAPI.io pricing: pay per tweet returned
- TwitterAPI.io API reference
- 01Claude Agent SDK: Build a Twitter (X) Research Agent in Python
- 02OpenRouter API: Base URL, API Key, Free Models and Pricing, Plus a Twitter (X) Agent That Swaps Models
- 03Codex vs Claude Code: Setup, MCP, Headless Runs and Pricing Compared for Twitter (X) Data Agents
- 04Open AI API Key: How to Get One, Pay for It, Keep It Safe and Feed It Live Twitter (X) Data
- 05How to Get a Claude API Key: Console Steps, Billing, First Call and Live X (Twitter) Data
- 06Muse Connectors: What Exists, Custom Connectors, MCP, and Live Twitter (X) Data
- 07Mass Unfollow on Twitter (X) — A Developer's API Tutorial
- 08Twitter (X) Analytics Free — A Tier Comparison
Stop reading. Start building.
Starter credits cover real testing on real data. Google sign-in, no card, no application queue.
Get an API keyAlready building with TwitterAPI.io? Publish an honest tutorial or build log about it and earn up to $200 a month in API credits.