> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xquik.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Twitter shadowban test API to check X accounts

> Check whether X hides an account from search, search suggestions, or reply threads, with the posts and replies behind each result. 1 credit per item read.

> [tab] 200
>
> ```json theme={null}
> {
>   "username": "NASA",
>   "userId": "11348282",
>   "account": "active",
>   "checkedAt": "2026-11-03T02:15:00.000Z",
>   "overall": "clear",
>   "checks": {
>     "account": {
>       "verdict": "pass",
>       "reason": "active",
>       "evidence": {
>         "profileUrl": "https://x.com/NASA"
>       }
>     },
>     "search": {
>       "verdict": "pass",
>       "reason": "listed",
>       "evidence": {
>         "query": "from:NASA",
>         "searchUrl": "https://x.com/search?q=from%3ANASA&f=live",
>         "recentPostIds": [
>           "2103610284464316469"
>         ],
>         "foundPostIds": [
>           "2103610284464316469"
>         ]
>       }
>     },
>     "suggestion": {
>       "verdict": "pass",
>       "reason": "suggested",
>       "evidence": {
>         "query": "NASA",
>         "suggestedUsernames": [
>           "NASA"
>         ]
>       }
>     },
>     "replies": {
>       "verdict": "unknown",
>       "reason": "more_replies",
>       "evidence": {
>         "replies": [
>           {
>             "replyId": "2103589735449141451",
>             "replyUrl": "https://x.com/i/status/2103589735449141451",
>             "parentId": "2102883223948628205",
>             "parentUrl": "https://x.com/i/status/2102883223948628205",
>             "placement": "more_replies"
>           }
>         ]
>       }
>     },
>     "replyLock": {
>       "verdict": "pass",
>       "reason": "replies_show",
>       "evidence": {
>         "checkedReplies": 2,
>         "shownReplies": 2
>       }
>     }
>   }
> }
> ```

> [tab] 400
>
> ```json theme={null}
> {
>   "error": "invalid_input",
>   "message": "Invalid input. Check the request body."
> }
> ```

> [tab] 401
>
> ```json theme={null}
> {
>   "error": "unauthenticated",
>   "message": "Authentication required."
> }
> ```

> [tab] 402
>
> ```json theme={null}
> {
>   "error": "insufficient_credits",
>   "message": "Insufficient credits. Top up or subscribe to continue."
> }
> ```

> [tab] 403
>
> ```json theme={null}
> {
>   "error": "api_key_paused",
>   "message": "This API key is paused. Resume it at dashboard.xquik.com/api-keys to use it again."
> }
> ```

> [tab] 404
>
> ```json theme={null}
> {
>   "error": "user_not_found",
>   "message": "X user not found. Check the username."
> }
> ```

> [tab] 424
>
> ```json theme={null}
> {
>   "error": "x_api_unavailable",
>   "message": "X data source temporarily unavailable. Try again later."
> }
> ```

> [tab] 429
>
> ```json theme={null}
> {
>   "error": "rate_limit_exceeded",
>   "message": "Too many requests. Try again later.",
>   "retryAfter": 60
> }
> ```

> [tab] 502
>
> ```json theme={null}
> {
>   "error": "x_api_unavailable",
>   "message": "X data source temporarily unavailable. Try again later."
> }
> ```

> [tab] 503
>
> ```json theme={null}
> {
>   "error": "x_api_unavailable",
>   "message": "Xquik is busy right now. Retry shortly."
> }
> ```

> For the complete documentation index, see [llms.txt](https://docs.xquik.com/llms.txt).

**1 credit per profile, post, suggestion & reply in the answer**

[All plans](https://xquik.com) from \$0.00012/credit · Supports [guest paid reads](https://docs.xquik.com/guides/guest-wallets.md)

```bash cURL theme={null}
curl "https://xquik.com/api/v1/x/users/nasa/shadowban" \
  -H "x-api-key: xq_your_api_key_here" | jq
```

```javascript Node.js theme={null}
const response = await fetch("https://xquik.com/api/v1/x/users/nasa/shadowban", {
  headers: { "x-api-key": "xq_your_api_key_here" },
});
const body = await response.json();
if (!response.ok) throw new Error(JSON.stringify(body));

for (const [name, check] of Object.entries(body.checks)) {
  console.log(`${name}: ${check.verdict} (${check.reason})`);
}
```

```python Python theme={null}
import requests

response = requests.get(
    "https://xquik.com/api/v1/x/users/nasa/shadowban",
    headers={"x-api-key": "xq_your_api_key_here"},
)
body = response.json()
if not response.ok:
    raise RuntimeError(body)

for name, check in body["checks"].items():
    print(f'{name}: {check["verdict"]} ({check["reason"]})')
```

## 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

**id** `string` *required*

User ID, username with or without `@`, or URL-encoded profile URL, such as `x.com/nasa`. See
[path IDs](https://docs.xquik.com/api-reference/overview.md#path-ids).

## Query parameters

**fields** `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.

**omit** `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

**x-api-key** `string`

Full account key. Sessions and OAuth also work.

**Authorization** `string`

`Bearer xq_your_guest_key_here` for `paid_reads`.

## Response

### 200 OK

**username** `string | null`

Username of the account. `null` for a suspended account named by user ID.

**userId** `string | null`

ID of the account. `null` for a suspended account named by username.

**account** `string`

`active`, `protected`, or `suspended`.

**checks** `object`

The 4 checks. Each has `verdict`, `reason`, and `evidence`.

**account** `object`

`pass` with `active` or `protected`, or `fail` with `suspended`. `evidence.profileUrl` opens the
profile on X.

**search** `object`

`pass` with `listed` or `fail` with `missing`. `evidence` holds `query`, `searchUrl`,
`recentPostIds`, and `foundPostIds`.

**suggestion** `object`

`pass` with `suggested` or `fail` with `not_suggested`. `evidence` holds `query` and
`suggestedUsernames`.

**replies** `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

```json theme={null}
{ "error": "invalid_user_id" }
```

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

### 404 User not found

```json theme={null}
{ "error": "user_not_found", "message": "X user not found. Check the username." }
```

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.

```json theme={null}
{ "error": "unauthenticated" }
```

### 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

```json theme={null}
{ "error": "x_api_unavailable" }
```

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

> [!NOTE]
>
> **Related.** [Get user](https://docs.xquik.com/api-reference/x/twitter-profile-lookup.md) · [Search tweets](https://docs.xquik.com/api-reference/x/search-tweets.md) · [Search autocomplete](https://docs.xquik.com/api-reference/x/search-autocomplete.md)

> [accordion] Related tweet, reply & media APIs
>
> * Tweets
>   * [Get tweet](https://docs.xquik.com/api-reference/x/get-tweet.md)
>   * [Tweet insights](https://docs.xquik.com/api-reference/x/tweet-engagement-insights.md)
>   * [Batch tweets](https://docs.xquik.com/api-reference/x/batch-tweets.md)
>   * [Tweet thread](https://docs.xquik.com/api-reference/x/tweet-thread.md)
>   * [Hidden replies](https://docs.xquik.com/api-reference/x/tweet-hidden-replies.md)
>   * [Translate tweet](https://docs.xquik.com/api-reference/x/tweet-translation.md)
>   * [Embed tweet](https://docs.xquik.com/api-reference/x/tweet-embed.md)
>   * [Resolve links](https://docs.xquik.com/api-reference/x/resolve-links.md)
>   * [Tweet subtitles](https://docs.xquik.com/api-reference/x/tweet-subtitles.md)
>   * [X Article](https://docs.xquik.com/api-reference/x/get-article.md)
> * Analysis
>   * [Sentiment analysis](https://docs.xquik.com/api-reference/x/sentiment-analysis.md)
>   * [Brand mentions](https://docs.xquik.com/api-reference/x/brand-monitoring.md)
>   * [News classification](https://docs.xquik.com/api-reference/x/news-classification.md)
>   * [Market signals](https://docs.xquik.com/api-reference/x/market-signals.md)
>   * [Viral score](https://docs.xquik.com/api-reference/x/viral-score.md)
>   * [Classify posts](https://docs.xquik.com/api-reference/x/classify-tweets.md)
> * Engagement
>   * [Tweet replies](https://docs.xquik.com/api-reference/x/tweet-replies.md)
>   * [Quote tweets](https://docs.xquik.com/api-reference/x/tweet-quotes.md)
>   * [Likers](https://docs.xquik.com/api-reference/x/favoriters.md)
>   * [Reposters](https://docs.xquik.com/api-reference/x/retweeters.md)
>   * [Reposter IDs](https://docs.xquik.com/api-reference/x/retweeter-ids.md)
>   * [Check repost](https://docs.xquik.com/api-reference/x/tweet-repost-check.md)
> * Profiles
>   * [User tweets](https://docs.xquik.com/api-reference/x/user-tweets.md)
>   * [Batch user tweets](https://docs.xquik.com/api-reference/x/batch-user-tweets.md)
>   * [User replies](https://docs.xquik.com/api-reference/x/user-replies.md)
>   * [User likes](https://docs.xquik.com/api-reference/x/user-likes.md)
>   * [User media](https://docs.xquik.com/api-reference/x/user-media.md)
>   * [User highlights](https://docs.xquik.com/api-reference/x/user-highlights.md)
>   * [User articles](https://docs.xquik.com/api-reference/x/user-articles.md)
> * Feeds
>   * [List tweets](https://docs.xquik.com/api-reference/x/list-tweets.md)
>   * [Trends](https://docs.xquik.com/api-reference/x/trends.md)
>   * [Trends history](https://docs.xquik.com/api-reference/x/trends-history.md)
>   * [Top tweets](https://docs.xquik.com/api-reference/x/top-tweets.md)
>   * [Trend locations](https://docs.xquik.com/api-reference/x/trend-locations.md)
>   * [Search Spaces](https://docs.xquik.com/api-reference/x/search-spaces.md)
>   * [Get Space](https://docs.xquik.com/api-reference/x/get-space.md)
>   * [Space replay](https://docs.xquik.com/api-reference/x/space-replay.md)
>   * [Get broadcast](https://docs.xquik.com/api-reference/x/get-broadcast.md)
>   * [User live status](https://docs.xquik.com/api-reference/x/user-live-status.md)
>   * [User shadowban](https://docs.xquik.com/api-reference/x/user-shadowban.md)
>   * [Notes contributor](https://docs.xquik.com/api-reference/x/community-notes-contributor.md)
>   * [Contributor notes](https://docs.xquik.com/api-reference/x/community-notes-contributor-notes.md)
>   * [Deleted notes](https://docs.xquik.com/api-reference/x/community-notes-contributor-deleted-notes.md)
>   * [Hashflags](https://docs.xquik.com/api-reference/x/hashflags.md)
>   * [Search places](https://docs.xquik.com/api-reference/x/search-places.md)
>   * [Download media](https://docs.xquik.com/api-reference/x/download-media.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.