---
title: "Check Shadowban"
method: GET
path: "/check-shadowban"
tags: ["Verification"]
---

# Check Shadowban

`GET /check-shadowban`

Checks whether a Twitter/X account is restricted in visibility. Runs two independent measurements: `search_suggestion_ban` — whether the account appears in search suggestions when its exact handle is typed — and `search_ban` — whether its posts are returned by search. Each check reports `clean`, `banned` or `unknown`; `unknown` carries a `reason` and means the measurement could not be made, never that the account is restricted. `is_shadowbanned` is true only when at least one check found an actual restriction. Profile flags (`protected`, `possibly_sensitive`) are reported separately and never count as a shadowban. Results are cached for an hour — see `checked_at` for the age of the data.

## Query parameters

- `username` string, required

## Response `200`

OK

- VerificationCheckShadowbanResp
  - `account` VerificationShadowbanAccountState
    - `possibly_sensitive` boolean — Whether the account is flagged as possibly containing sensitive content.
    - `protected` boolean — Whether the account is private.
    - `statuses_count` integer — Total posts on the profile, across the account's whole life.
  - `checked_at` string — When the measurement actually happened. Results are cached, so this can be older than the request.
  - `checks` VerificationShadowbanChecks
    - `search_ban` VerificationShadowbanCheckResult
      - `reason` string — Why the check came out `unknown`. Absent otherwise.
      - `status` string — `clean`, `banned` or `unknown`. `unknown` means the measurement did not happen and is never an accusation.
      - `tweets_found` integer — Evidence behind the search ban verdict: how many posts search returned.
    - `search_suggestion_ban` VerificationShadowbanCheckResult
      - `reason` string — Why the check came out `unknown`. Absent otherwise.
      - `status` string — `clean`, `banned` or `unknown`. `unknown` means the measurement did not happen and is never an accusation.
      - `tweets_found` integer — Evidence behind the search ban verdict: how many posts search returned.
  - `is_shadowbanned` boolean — `true` when at least one check found a restriction. Checks that are `unknown` never count.
  - `user_id` string
  - `username` string

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.net/sorsa/apis/api-sorsa-io.md) · [All operations](https://skmtc.net/sorsa/apis/api-sorsa-io/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sorsa/api-sorsa-io/revisions/7742c72d6966/schema)
