---
title: "Check Shadowban and Reply Visibility"
method: POST
path: "/twitter/shadowban/check"
tags: ["Search Endpoints"]
---

# Check Shadowban and Reply Visibility

`POST /twitter/shadowban/check`

## Request

- Base URL: `https://api.twexapi.io`
- URL: `https://api.twexapi.io/twitter/shadowban/check`
- Auth: HTTP bearer

Check account search and reply visibility using only an API key. Returns detection results by default; set `details: true` to view detailed evidence.

[Detection notes](/guides/shadowban-check)

## Request body

- ShadowbanCheckBody
  - `screen_name` string, required: Username with optional @ and surrounding whitespace; 1–15 letters, digits or underscores. Profile URLs are not accepted.
  - `max_pages` integer: Maximum pages per search, reply discovery and parent conversation. Send an integer JSON number from 1 to 3; null and numeric strings are invalid.
  - `check_replies` true | false: Enable Ghost Ban and Reply Deboosting checks. If false, only account and post search affect shadow_ban; both reply flags remain null.
  - `details` true | false: Include the original diagnostic result under data.details. The six compact fields remain unchanged. This option changes output only.
  - `reply_sample_size` integer: Maximum automatically discovered recent replies to inspect, from 1 to 3. Does not limit explicitly supplied reply_ids.
  - `reply_ids` string[]: Optional 1–3 numeric tweet ID strings to inspect instead of automatic sampling. IDs must be target-authored replies to other accounts. Duplicates are checked once; no profile URLs or numeric JSON values.

## Response `200`

true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.

- ShadowbanCheckResponse
  - `code` 200, required
  - `msg` string, required
  - `data` ShadowbanCheckData, required
    - `screen_name` string, required: Username with optional @ and surrounding whitespace; 1–15 letters, digits or underscores. Profile URLs are not accepted.
    - `shadow_ban` boolean, nullable, required: Combined result across enabled checks. Any supported restriction makes this true; unresolved enabled checks make it null when no positive evidence exists. true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
    - `account_search_ban` boolean, nullable, required: Suspected missing visibility in People account search. true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
    - `search_ban` boolean, nullable, required: Suspected missing visibility in default Top post search using from:username. true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
    - `ghost_ban` boolean, nullable, required: Suspected hidden reply: still accessible directly but absent from a completely inspected parent conversation. true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
    - `reply_deboosting` boolean, nullable, required: A sampled reply was found only after loading an explicit folded-replies section. true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
    - `details` ShadowbanCheckEvidence
      - `screen_name` string, required
      - `user_id` string, nullable, required
      - `checked_at` string, date-time, required
      - `status` 'suspected' | 'no_evidence' | 'inconclusive', required
      - `suspected_shadowban` boolean, nullable, required: true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
      - `account_search` ShadowbanSearchEvidence, required
        - `status` 'visible' | 'not_found' | 'inconclusive', required
        - `query` string, required
        - `pages_checked` integer, required
        - `matched_ids` string[], required
        - `reason` string, required
        - `baseline_post_ids` string[]
      - `post_search` ShadowbanSearchEvidence, required
        - `status` 'visible' | 'not_found' | 'inconclusive', required
        - `query` string, required
        - `pages_checked` integer, required
        - `matched_ids` string[], required
        - `reason` string, required
        - `baseline_post_ids` string[]
      - `reply_visibility` ShadowbanReplyVisibility, required
        - `status` 'visible' | 'hidden' | 'deboosted' | 'inconclusive' | 'mixed' | 'skipped', required
        - `sample_count` integer, required
        - `reason` string, required
        - `samples` ShadowbanReplySample[], required
          - `reply_id` string, required
          - `parent_tweet_id` string, nullable, required
          - `status` 'visible' | 'hidden' | 'deboosted' | 'inconclusive', required
          - `reason` string, required
          - `pages_checked` integer, required
          - `reply_accessible` boolean, nullable, required
          - `parent_accessible` boolean, required
          - `matched_entry_id` string
          - `folded_cursor_type` string
          - `folded_action_text` string
      - `ghost_ban` ShadowbanReplySummary, required
        - `status` 'suspected' | 'no_evidence' | 'inconclusive', required
        - `suspected` boolean, nullable, required: true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
        - `checked_replies` integer, required
        - `affected_reply_ids` string[], required
        - `reason` string, required
      - `reply_deboosting` ShadowbanReplySummary, required
        - `status` 'suspected' | 'no_evidence' | 'inconclusive', required
        - `suspected` boolean, nullable, required: true: suspected restriction; false: no evidence in the checks performed; null: inconclusive or skipped.
        - `checked_replies` integer, required
        - `affected_reply_ids` string[], required
        - `reason` string, required
      - `limitations` string, required

## Other responses

- `400`: Invalid request
- `401`: Authentication failed
- `403`: Authentication, quota or query access denied
- `404`: Upstream resource not found
- `429`: Rate limit exceeded
- `500`: Server error
- `502`: Upstream service error
- `503`: Service temporarily unavailable
- `504`: Upstream request timed out

---

[API](https://skmtc.dev/twexapi/apis/twexapi-rest-api.md) · [All operations](https://skmtc.dev/twexapi/apis/twexapi-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/twexapi/apis/twexapi-rest-api/revisions/59a99ac0d8f7?raw)
