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

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



## OpenAPI

````yaml https://api.sorsa.io/v3/swagger.json get /check-shadowban
openapi: 3.0.3
info:
  contact: {}
  title: API Sorsa.io
  version: '3.0'
servers:
  - url: https://api.sorsa.io/v3
security: []
paths:
  /check-shadowban:
    get:
      tags:
        - Verification
      summary: Check Shadowban
      description: >-
        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.
      parameters:
        - description: Twitter/X handle (without @).
          in: query
          name: username
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/verification.CheckShadowbanResp'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
          description: Not Found
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponse'
          description: Internal Server Error
      security:
        - ApiKeyAuth: []
components:
  schemas:
    verification.CheckShadowbanResp:
      properties:
        account:
          $ref: '#/components/schemas/verification.ShadowbanAccountState'
        checked_at:
          description: >-
            When the measurement actually happened. Results are cached, so this
            can be older than the request.
          example: '2026-08-01T10:00:00Z'
          type: string
        checks:
          $ref: '#/components/schemas/verification.ShadowbanChecks'
        is_shadowbanned:
          description: >-
            `true` when at least one check found a restriction. Checks that are
            `unknown` never count.
          example: false
          type: boolean
        user_id:
          example: '44196397'
          type: string
        username:
          example: elonmusk
          type: string
      type: object
    handler.ErrorResponse:
      properties:
        message:
          type: string
      type: object
    verification.ShadowbanAccountState:
      properties:
        possibly_sensitive:
          description: >-
            Whether the account is flagged as possibly containing sensitive
            content.
          example: false
          type: boolean
        protected:
          description: Whether the account is private.
          example: false
          type: boolean
        statuses_count:
          description: Total posts on the profile, across the account's whole life.
          example: 41230
          type: integer
      type: object
    verification.ShadowbanChecks:
      properties:
        search_ban:
          allOf:
            - $ref: '#/components/schemas/verification.ShadowbanCheckResult'
          description: Whether the account's posts are returned by search.
        search_suggestion_ban:
          allOf:
            - $ref: '#/components/schemas/verification.ShadowbanCheckResult'
          description: >-
            Whether the account surfaces in search suggestions when its exact
            handle is typed.
      type: object
    verification.ShadowbanCheckResult:
      properties:
        reason:
          description: Why the check came out `unknown`. Absent otherwise.
          example: no_tweets
          type: string
        status:
          description: >-
            `clean`, `banned` or `unknown`. `unknown` means the measurement did
            not happen and is never an accusation.
          example: clean
          type: string
        tweets_found:
          description: >-
            Evidence behind the search ban verdict: how many posts search
            returned.
          example: 18
          type: integer
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: ApiKey
      type: apiKey

````