7-day Trial

Twitter Automation in 2026: X API Rules, Costs and Multiple Accounts

Picture of Kevin Meneses

Try Gologin for free

Twitter automation in 2026 comes down to one rule: X lets you automate your own accounts through its official API and bans scripting its website. So every post, mention check and status check in this guide goes through the API. The API can’t do everything, though: signing in to X, approving an app and answering X’s security prompts all happen in a browser, with a person at the keyboard.

That browser part is where a cloud browser comes in. With several accounts, each browser session needs its own cookies, fingerprint and IP, or the accounts end up sharing one device and one connection. So each account gets its own cloud browser profile with a dedicated proxy, and no script ever touches the website. This guide covers what you can automate on X (formerly Twitter), what each action costs on the pay-per-use API, how to keep accounts for separate brands or clients apart, and how to spot a restriction before it becomes a suspension. Every rule quoted below was checked on the official X pages on November 4, 2026.

TL;DR

  • X’s Automation Rules allow posting, scheduling and auto-replies on an opt-in basis through the API. They prohibit automated likes, bulk follows and “scripting the X website”.
  • The X API has no monthly plans anymore. It is pay-per-use: $0.015 per post, $0.20 per post with a link, $0.001 per read of your own data.
  • You can run up to 10 accounts, as long as each one serves a “different, non-duplicative” purpose.
  • Keeping accounts apart means one profile per account, each with its own proxy, cookies and fingerprint. Two profiles without proxies still share your IP.
  • Our routine (status check + mentions + 1 post) costs up to $0.025 per run at list prices: about $0.75 per account per month on a daily run.
Key fact Value Source
Automating the X website Prohibited, risk of permanent suspension Automation Rules (checked Nov 4, 2026)
API pricing model Pay-per-use, no subscription docs.x.com, Pricing
Creating a post via the API $0.015 per request ($0.20 with a URL) docs.x.com, Pricing
Reading your own data (Owned Reads, mentions included) $0.001 per resource docs.x.com, Pricing
Posts per user 100 every 15 minutes docs.x.com, Rate limits
Accounts per person Up to 10, for non-duplicative purposes Authenticity policy
robots.txt for generic bots Disallow: / x.com/robots.txt
Cost of our routine (3 calls) Up to $0.025 per run Our test + list prices

What You Can Automate on X, and Where It Starts Breaking the Rules

X’s Automation Rules page (checked on November 4, 2026) is aimed at developers, but it applies to any account: “You are ultimately responsible for the actions taken with your account.” Here is how each common action stands:

Action Allowed? Condition in the rules
Scheduled posts from your account Yes No duplicate or near-duplicate posts, on one account or across several
Posts fed from an RSS feed or your own data Yes You must be authorized to publish that information
Automatic replies and mentions Only on an opt-in basis The user mentioned you or replied first; one reply per interaction; a way to opt out
Replies generated by AI With prior approval Requires “prior written and explicit approval from X”
Automatic Direct Messages Only on an opt-in basis The user requested it; a way to opt out
Automated reposts Yes, in moderation “bulk, aggressive, or spammy Reposting” is a violation
Automated likes No “You may not like posts or hide replies in an automated manner”
Following and unfollowing Not in bulk Not “in a bulk, aggressive, or indiscriminate manner”
Posting about trending topics No Automating posts about trends is prohibited
Scripting the X website No “may result in the permanent suspension of your account”

Browser Automation on X: What It Prohibits and Why It’s Risky

Many searches for “twitter automation” end up at a Playwright, Selenium or Puppeteer script that logs in and clicks “Post”. X rules that route out in its own words. Under “Don’t”, the Automation Rules list “non-API-based forms of automation, such as scripting the X website”, and add: “The use of these techniques may result in the permanent suspension of your account.” The Terms of Service (effective October 9, 2026) say the same in legal language: you may not access the service “other than through our currently available, published interfaces”.

That covers your own account too. The rule applies to how you automate, not to whose account you automate. What’s at stake is the account itself: the penalty named on the page is permanent suspension, not a temporary rate limit. The alternative is the official API, and the rest of this guide follows that route.

Twitter Automation via the Official API: What It Costs in 2026

The pricing page on docs.x.com (prices checked on November 4, 2026) says the API “uses pay-per-usage pricing with no subscriptions”. You buy credits in advance from the Developer Console, and each request is charged against them. The prices that matter for a routine on your own account:

Operation Price Unit
Create a post $0.015 per request
Create a post with a URL $0.200 per request
Create a post (summoned) $0.010 per request
Interaction (repost, follow) $0.015 per request
Delete an interaction $0.010 per request
Read other users’ posts $0.005 per resource
Read a user (includes GET /2/users/me) $0.010 per resource
Read your own data (Owned Reads: your posts, mentions, likes, followers…) $0.001 per resource

Two details change the math. First, a post with a link costs 13 times more than one without ($0.20 vs $0.015), so a routine that shares 30 links a month costs $6.00 instead of $0.45. Second, X deduplicates resources within a 24-hour UTC window and caps pay-per-use plans at 3 million post reads per month. Rate limits are separate from billing: 100 posts every 15 minutes per user and 300 requests every 15 minutes for mentions. X notes that “Prices are subject to change”, so check the page before you budget.

What the API Covers, and What You Do by Hand in a Separate Profile

The API covers the routine itself, but some steps on X still need a person. Approving an app, X’s security prompts and a sign-in from a new device all happen in the browser, and X expects a human there. The split we used:

Task Where it runs Done by Details
Profile and proxy setup Gologin API (setup_profiles.py) Script One profile per account, each linked to its own residential proxy in the account’s country
Fingerprint per profile Cloud browser profile Automatic Each profile gets its own resolution, graphics card (WebGL), language and user agent
First sign-in to X Cloud browser profile You, by hand One-time sign-in from the account’s own IP and device
Security verification Cloud browser profile You, by hand Answer X’s prompts: phone confirmation, email code
App authorization (OAuth PIN) Cloud browser profile You, by hand Open the authorization URL in the profile, approve the app and copy the PIN
Session and cookies Cloud browser profile Automatic The signed-in session stays in the profile between runs, separate from other accounts
Status check and mentions X API v2 (x_routine.py) Script GET /2/users/me ($0.010, User: Read) and GET /2/users/:id/mentions ($0.001 per mention, Owned Reads)
Publishing posts X API v2 (x_routine.py) Script POST /2/tweets: $0.015 per post, $0.20 with a link

For the browser part we used Gologin Cloud Browser profiles: one profile per account, each with its own residential proxy, cookies and fingerprint. The profile only stores the session and gives each account a consistent IP and device. No script touches x.com inside it.

Working Scenario: Sign In Once, Then Run the Routine Through the API

We ran the whole flow on November 4, 2026 with a test account and an app in a pay-per-use project. It has three steps.

Step 1. One profile per account. setup_profiles.py creates the profiles with the Gologin API and attaches a residential proxy in the account’s country:

def create_profile(account):
    resp = requests.post(f"{GL}/browser/custom", headers=HEADERS, timeout=60,
                         json={"name": f"x-{account['key']}", "os": "win",
                               "notes": account["purpose"]})
    resp.raise_for_status()
    profile_id = resp.json()["id"]
    # residential proxy in the account's country, linked to the new profile
    proxy = requests.post(f"{GL}/users-proxies/mobile-proxy", headers=HEADERS, timeout=60,
                          json={"countryCode": account["country"], "isMobile": False,
                                "isDC": False, "profileIdToLink": profile_id})
    proxy.raise_for_status()   # a profile without its proxy must not go unnoticed
    return profile_id

The script prints what makes each profile distinct. Real output:

Field Profile x-brand_us (US proxy) Profile x-support_uk (UK proxy)
Proxy Residential, US Residential, GB
Resolution 2294×960 1920×1080
WebGL AMD Radeon 780M Intel UHD Graphics 620
Language en-GB, en-US en-GB
User agent Chrome 141, Windows Chrome 141, Windows

Two Gologin Cloud Browser profiles for X accounts, one with a US and one with a UK residential proxy

Step 2. Sign in once, by hand. We opened the US profile in manual mode and signed in to X. Because it was a new IP and device for that account, X asked to confirm the account’s phone number and then sent a code by email. The whole sign-in took about one minute. After that, the session stays in the profile.

X asks to confirm the account on the first sign-in from a new profile, phone number hidden

Then authorize.py runs the PIN-based OAuth flow. It prints an authorization URL, you open it in that account’s profile, approve the app and type the PIN in the terminal. The tokens are saved to a local file and never printed. Two details we hit: the URL expires within a few minutes, and the app has to be set to “Read and write” before you authorize. Otherwise the token only reads.

X app authorization screen listing the permissions of a Read and write app

Step 3. The routine. x_routine.py uses only the official API. For each account it checks the status, reads new mentions since the last run and, with --post, publishes that account’s own text. It logs the HTTP status, the token’s access level, the remaining rate limit and the cost of each call:

def call(session, account, action, method, path, **kwargs):
    """One API call, logged with status, rate-limit headers and estimated cost."""
    resp = session.request(method, f"{API}{path}", timeout=30, **kwargs)
    body = resp.json() if resp.content else {}
    units = len(body.get("data") or []) if action == "mention" else 1
    cost = PRICES[action] * units if resp.ok else 0.0
    entry = {"time": datetime.now(timezone.utc).isoformat(timespec="seconds"),
             "account": account, "action": action, "status": resp.status_code,
             "access": resp.headers.get("x-access-level"),   # read / read-write
             "remaining": resp.headers.get("x-rate-limit-remaining"),
             "reset": resp.headers.get("x-rate-limit-reset"), "cost": round(cost, 4)}
    ...

Real log from the run with --post:

2026-11-04T15:54:00+00:00 brand_us    me       HTTP 200 access=read-write remaining=72 cost=$0.0010
2026-11-04T15:54:00+00:00 brand_us    mention  HTTP 200 access=read-write remaining=298 cost=$0.0000
2026-11-04T15:54:00+00:00 brand_us    post     HTTP 201 access=read-write remaining=99 cost=$0.0150

Terminal output of the X API routine: account status, mentions and a published post with the cost of each call

The cost column in that log comes from the first price table in our script, which counted the status call at $0.001. The table below uses X’s list prices.

What the routine costs, using the official prices:

Call Endpoint Calls per run Price Cost per run
Account status GET /2/users/me 1 $0.010 (User: Read) $0.0100
New mentions (0 found) GET /2/users/:id/mentions 1 $0.001 per mention (Owned Reads) $0.0000
Publish a post without a link POST /2/tweets 1 $0.015 $0.0150
Total 3 $0.0250

Run once a day for 30 days, that’s $0.75 per account per month. Each mention read adds $0.001, and a post with a link costs $0.20 instead of $0.015. The $0.001 mention price applies because mentions are an Owned Read: X charges it when the account is the owner of the developer app. Other accounts authorized through the same app are billed at the regular read prices.

We checked the estimate against the Usage panel in the X Developer Console. For the day of the tests (3 status checks, 2 mention checks and 1 post) it showed a total cost of $0.02, rounded to the cent. That’s below the list price for the status calls: X doesn’t list GET /2/users/me among the Owned Reads, so we budget it at the User: Read price and treat $0.025 per run as the upper bound.

X Developer Console Usage panel: total cost of $0.02 and 3 requests on the test day

Running Multiple X Accounts Without Breaking the Rules

X allows more than one account, with limits. The Authenticity policy says X “allows users to create and/or operate up to ten (10) accounts for different, non-duplicative purposes.” The examples it gives as allowed:

  • accounts for personal projects, hobbies or your business;
  • brand accounts per location or language (English, Spanish, French);
  • a social media manager running accounts on behalf of clients;
  • separate chapters or branches of the same organization.

The same policy prohibits operating several accounts that engage with the same posts, accounts or polls, cross-posting identical content (localized translations are allowed), and “employing workarounds to exceed the technical limits of account creation”, such as phone number limits. Using a new account to get around an enforcement action counts as getting around a ban, which the policy also prohibits. When X finds a violation centered on multiple accounts, it may ask you to keep one and suspend the rest.

So the goal of separating accounts is not to hide them from X. It is to keep each brand or client in its own session, so that a login, a cookie or an action from one account doesn’t end up in another.

Why It Breaks on the Second Account

Most problems with a second account don’t come from the API. They come from the browser where you manage the accounts. If you open your brand account and your client’s account in the same browser, they share three things:

Shared element What happens in practice
Cookies and session Both sessions live in the same cookie storage. Signing out of one, or a session expiring, affects how you work in the other, and it’s easy to post from the wrong account.
Fingerprint Both accounts run on one device, with the same resolution, graphics card and language, so a security prompt or a lock on that device affects both.
IP Both accounts sign in from the same address, even if one is for the US market and the other is for the UK. The same happens with two separate profiles if neither has its own proxy.

None of this breaks X’s rules on its own: X allows several accounts with different purposes. The problem is operational. Account security follows the device and the IP. In our test, a single sign-in from a new IP was enough for X to ask for the phone number and an email code. If several accounts share a browser, a prompt or a lock on one interrupts your work on all of them. In an agency or a team, you also lose track of who signed in where.

How to Separate X Accounts: One Profile per Account

Separation is about each account having its own environment, the same way each client has its own folder:

  • One browser profile per account. Each profile keeps its own cookies and session, and its own fingerprint. In our test, the US and UK profiles differed in resolution, graphics card and language (see the table above).
  • A dedicated proxy for every profile. This part isn’t optional. A profile without a proxy signs in from your own IP, so two profiles without proxies are two accounts on the same connection, and separate fingerprints don’t change that. Pick the proxy in the account’s market: a US brand account signs in from a US IP and a UK support account from a UK one, so the location stays the same every time you sign in.
  • Separate API tokens. Each account authorizes the app with its own PIN and gets its own tokens. The script never uses one account’s token for another.
  • Different content per account. X prohibits posting “duplicative or substantially similar” content across your accounts. In our script, each account has its own text in accounts.json.
  • Delays and limits. The routine waits a fixed 15 seconds between accounts and checks x-rate-limit-remaining before the next call; if it has reached 0, it waits until x-rate-limit-reset. Per-user limits: 100 posts and 300 mention requests every 15 minutes, and our call to /2/users/me returned a limit of 75 per 15 minutes.

We ran the routine with one test account. The second profile is ready for another account: just sign in to it by hand and authorize it with its own PIN.

Monitoring: How to Tell an Account Is Restricted Before You Lose It

A failed call doesn’t always mean a restricted account. In our test, the first two errors were setup problems, not account problems. The script sorts every response into a status:

Signal What it means What to do
200 and x-access-level: read-write Account and token OK Nothing
200 but x-access-level: read The app was authorized before it had write access Set “Read and write” and repeat the PIN
403 “attached to a Project” The app isn’t in a valid project (it happened to us with an app in a legacy project) Move the app to a pay-per-use project
401 Token revoked or app disconnected from the account Check Connected apps in the profile and authorize again
403 for any other reason Account locked or suspended Open the profile by hand and read X’s notice
429 Rate limit reached Wait until x-rate-limit-reset
withheld in /2/users/me Account withheld in some countries Check the notice in the profile
Verification prompt when signing in New IP or device for that account Answer it by hand in the profile; don’t automate it

The first two rows were real errors from our setup. Without the 403 classification, the script would have reported a “restricted account” that was actually an app in the wrong project. The rest of the rows are the cases the routine is ready to tell apart. Some restrictions, such as reduced reach or posts being filtered from search, don’t return an error code. For those, the only check is opening the account by hand in its profile now and then.

ToS, robots.txt and Personal Data

Terms of Service. X’s ToS (effective October 9, 2026) prohibit accessing the service through anything other than its published interfaces, and add that “crawling or scraping the Services in any form, for any purpose without our prior written consent is expressly prohibited.” Automating your own account through the official API complies with this clause. Scraping other people’s profiles does not, even if it’s done from a logged-in browser.

robots.txt. x.com/robots.txt lets named search engines (Googlebot, Bingbot) crawl part of the site. For everyone else, the rule is User-agent: * followed by Disallow: /, with a 1-second crawl delay. AI crawlers such as Google-Extended and meta-externalagent are blocked explicitly. Any script that isn’t a search engine has no permission to crawl X.

Personal data. Reading your own mentions means processing the usernames and posts of people who mentioned you. Keep only what the routine needs (for example, the post ID and text, without building profiles of users), and set how long you store it. The Automation Rules also prohibit posting someone’s private information without their “prior express authorization” and sharing the content of a Direct Message without their consent. If you work with users in the EU or the UK, GDPR applies to that data even if the account is yours.

FAQ

How do I automate my Twitter account?

Through the official X API: create an app in the Developer Console, buy credits and use OAuth to post on your account. Scheduling tools that connect to the API do the same without code. X prohibits scripting the website.

What can be automated on Twitter?

Scheduled posts, posts based on outside data you’re authorized to publish, moderated reposts, and replies or DMs to users who opted in. Likes, bulk follows and posts about trending topics cannot be automated.

Why does Twitter think I’m automated?

X doesn’t publish its detection signals. Its rules list the behaviors it treats as spam: duplicate posts, aggressive following, unrequested mentions and coordinated activity across accounts. If your account does any of these at a regular pace, expect a restriction.

How much does the Twitter API cost?

It is pay-per-use, with no monthly plans: $0.015 per post and $0.20 if the post contains a link. Reading your own data, including your mentions, costs $0.001 per resource; reading other people’s posts costs $0.005 per post. You buy credits in advance in the Developer Console.

Can I have multiple Twitter accounts?

Yes, up to 10 per person, as long as each one has a different, non-duplicative purpose: personal, business, a brand per language, or client accounts if you’re a social media manager. They can’t engage with the same posts or publish identical content.

Is a Twitter bot allowed?

An automated account that posts through the API is allowed, provided it follows the Automation Rules and doesn’t spam. A bot that controls the website through a browser is prohibited and risks permanent suspension.

Conclusion

Automating X in 2026 comes down to the API: $0.015 per post, $0.001 per read of your own data, and a routine like ours costs up to $0.025 per run. The browser is still there for the steps X wants a person to do, such as the first sign-in, approving the app and answering verification prompts. With one profile and one proxy per account, those steps don’t mix accounts, and the script only sees API tokens.

Try Gologin Cloud Browser free →

Also Read

  • How to Create and Manage Multiple Twitter Accounts Safely in 2026

    Running multiple accounts on Twitter is vital for SMMs, affiliates and crypto catchers. But is there a way to avoid bans? Find out here!

  • What You Can Do if X/Twitter Account is Suspended

    X, or Twitter as many still refer to it, remains the online place to be for lovers of fast-paced engagement. Where else could you watch trends go viral and crash in real time or reach out to public figures and have them actually respond? The platform is also a mecca for brands, advertisers, and SMM […]

  • How To Choose Best Proxy For Twitter + Top 10 Brands

    X (formerly known as Twitter) is one of the most popular social media platforms, with an estimated 561 million active users in 2025. Therefore, it is a great place for individuals to gather data or advertise their business to a large audience. However, the platform has some strict policies, such as data limits, which make […]