Skip to main content
GET
Twitter shadowban test API to check X accounts
1 credit per profile, post, suggestion & reply in the answerAll plans from $0.00012/credit · Supports guest paid reads

Is an account shadowbanned on X?

Use GET /x/users/{id}/shadowban to run 4 checks on 1 account. Name the account by user ID, username, or profile URL.
  • account reads whether the account is active, protected, or suspended.
  • search looks for the account’s recent posts in X search. It uses from:username, sorted by Latest.
  • suggestion looks for the account among the accounts X suggests for its username.
  • replies opens the threads of up to 3 recent replies to other accounts. It finds where each reply shows.
Each check answers pass, fail, or unknown. It adds a reason and the evidence it read. The reply check answers pass or unknown, since X ranks replies for each viewer. A protected account gets the suggestion check only. A suspended account gets the account check only.

Path parameters

string
required
User ID, username with or without @, or URL-encoded profile URL, such as x.com/nasa. See path IDs.

Query parameters

string
Fields to keep in each row, comma-separated, such as id,text,author.username. Use dots for nested fields. Case & underscores do not matter. A row that lacks a field leaves it out. Cursors, counts & diagnostics always stay. An unknown name returns 400 unknown_field with the valid names, before any read. The price stays the same.
string
Fields to drop from each row, comma-separated, such as entities,media. It takes the same names as fields. With fields, it drops from the kept fields.

Headers

string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.

Response

200 OK

string | null
Username of the account. null for a suspended account named by user ID.
string | null
ID of the account. null for a suspended account named by username.
string
active, protected, or suspended.
object
The 4 checks. Each has verdict, reason, and evidence.
object
pass with active or protected, or fail with suspended. evidence.profileUrl opens the profile on X.
pass with listed or fail with missing. evidence holds query, searchUrl, recentPostIds, and foundPostIds.
object
pass with suggested or fail with not_suggested. evidence holds query and suggestedUsernames.
object
pass with in_thread, or unknown with more_replies or not_found. evidence.replies lists each reply with its placement, replyUrl, and parentUrl.

400 Invalid input

Send a user ID, a username, or a profile URL.

404 User not found

A user X does not know is free of charge.

401 Unauthenticated

Anonymous requests get WWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.

402 Payment required

Account keys get account options. Guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.

502 X API unavailable

The read service returned an error. Retry after a short delay.