Xquik Users API

Look up, search, and explore user profiles and relationships

Operations 15

GET /api/v1/x/users/batch Look up multiple users by IDs in one call #
GET /api/v1/x/users/search Search users by name or username #
GET /api/v1/x/users/{id} Get user profile with follower counts and verification #
GET /api/v1/x/followers/check Check if one user follows another #
GET /api/v1/x/users/{id}/tweets List recent tweets posted by a user #
GET /api/v1/x/users/{id}/replies List a user's With Replies timeline #
GET /api/v1/x/users/{id}/likes List tweets liked by a user #
GET /api/v1/x/users/{id}/media List media tweets posted by a user #
GET /api/v1/x/users/{id}/followers-you-know List mutual followers between you and a user #
GET /api/v1/x/notifications Get notifications #
GET /api/v1/x/dm/{userId}/history Get DM conversation history #
GET /api/v1/x/users/{id}/followers List followers of a user #
GET /api/v1/x/users/{id}/following List accounts a user follows #
GET /api/v1/x/users/{id}/mentions List tweets mentioning a user #
GET /api/v1/x/users/{id}/verified-followers List verified followers of a user #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/xquik-api-users-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

xquik-api-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Xquik Users API
  version: '1.0'
  description: "Xquik is an independent third-party service. Not affiliated with X Corp. \"Twitter\" and \"X\" are trademarks of X Corp. Look up tweets, users, and X trends. Search tweets, check follow relationships, download media, and monitor accounts. 33 paid-read endpoints accept prepaid credits without a subscription. 7 fixed-price lookups also accept direct MPP payments. Write and automation endpoints require an API key or OAuth 2.1 bearer token.\n\n## Xquik SDKs\n\nStainless generates each SDK from this OpenAPI schema. Pick a language:\n\n- TypeScript / Node.js: `npm i x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-typescript](https://github.com/Xquik-dev/x-twitter-scraper-typescript)\n\n- Python: `pip install x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-python](https://github.com/Xquik-dev/x-twitter-scraper-python)\n\n- Go: `go get github.com/Xquik-dev/x-twitter-scraper-go` -\n  [Xquik-dev/x-twitter-scraper-go](https://github.com/Xquik-dev/x-twitter-scraper-go)\n\n- Ruby: `gem install x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-ruby](https://github.com/Xquik-dev/x-twitter-scraper-ruby)\n\n- Java (source build; Maven Central pending) -\n  [Xquik-dev/x-twitter-scraper-java](https://github.com/Xquik-dev/x-twitter-scraper-java)\n\n- Kotlin (source build; Maven Central pending) -\n  [Xquik-dev/x-twitter-scraper-kotlin](https://github.com/Xquik-dev/x-twitter-scraper-kotlin)\n\n- C# / .NET: `dotnet add package XTwitterScraper` -\n  [Xquik-dev/x-twitter-scraper-csharp](https://github.com/Xquik-dev/x-twitter-scraper-csharp)\n\n- PHP: `composer require xquik/x-twitter-scraper` -\n  [Xquik-dev/x-twitter-scraper-php](https://github.com/Xquik-dev/x-twitter-scraper-php)\n\n- CLI: `go install github.com/Xquik-dev/x-twitter-scraper-cli/cmd/x-twitter-scraper@latest` -\n  [Xquik-dev/x-twitter-scraper-cli](https://github.com/Xquik-dev/x-twitter-scraper-cli)\n\n- Terraform Provider (Terraform Registry) -\n  [Xquik-dev/terraform-provider-x-twitter-scraper](https://github.com/Xquik-dev/terraform-provider-x-twitter-scraper)\n\n\nOpenClaw plugin: [Xquik-dev/tweetclaw](https://github.com/Xquik-dev/tweetclaw) (`openclaw plugins install clawhub:@xquik/tweetclaw`)."
  x-guidance: '## Common tasks


    **Find a tweet** - GET /x/tweets/{id} with a numeric tweet ID. Returns full tweet data: text, author, metrics (likes, retweets, replies, views), media URLs, and creation timestamp. Cost: $0.00015 per lookup.


    **Search tweets** - GET /x/tweets/search?q={query}&limit={n}. Supports X search operators, structured filters like fromUser, mediaType, minFaves, hashtags, and verifiedOnly, plus exact lookup for a pasted Tweet ID or X status URL. Plain from:user date windows are optimized for timeline completeness. Returns up to 200 tweets per page with cursor-based pagination. Cost: $0.00015 per tweet returned.


    **Find a user** - GET /x/users/{id} where {id} is a numeric user ID or @username. Returns profile data: name, bio, follower/following counts, verification status, join date. Cost: $0.00015 per lookup.


    **Check if A follows B** - GET /x/followers/check?source={a}&target={b} where source and target are usernames, @usernames, or X or Twitter profile URLs. Cost: $0.00075.


    **Get trending topics** - GET /trends?woeid={region}&count={n}. WOEID 1 = worldwide, 23424977 = US, 23424975 = UK, 23424969 = Turkey. Cost: $0.00045.


    **Download media** - POST /x/media/download with {"tweetIds": ["123", "456"]} body. Returns download URLs for images and videos. Cost: 1 credit per fresh tweet processed with media; cached repeat downloads are free.


    **Read an article** - GET /x/articles/{tweetId} for long-form X Articles. Returns full article HTML, cover image, and metadata. Cost: $0.00075.


    ## Pagination


    Default v1 responses keep their existing pagination fields for compatibility. Platform list endpoints return `hasMore` and `nextCursor`; X data endpoints return `has_next_page` and `next_cursor`. Send `xquik-api-contract: 2026-04-29` to receive the unified best-practice fields `has_more` and `next_cursor`. Pass the cursor back as `?cursor={cursor}`; legacy `?after={cursor}` still works. Dynamic-priced endpoints charge per item returned, not per request.


    ## Authentication


    Eligible paid read endpoints accept accountless prepaid credit wallets. Fixed-price lookups also accept direct MPP payments. Media downloads, write endpoints, and automation features require authentication. Send an Xquik API key through `x-api-key`, `Xquik-Api-Key`, or `Authorization: Bearer xq_...`. Send an OAuth 2.1 access token through `Authorization: Bearer`.


    ## Best-Practice Response Contract


    v1 keeps its original response contract by default so existing integrations do not break. Send `xquik-api-contract: 2026-04-29` to opt in to the best-practice contract: snake_case response fields, Unix timestamps in seconds, structured error objects, `has_more` and `next_cursor` pagination fields, `object` resource identifiers, and prefixed IDs where available. Dependency failures that returned 502 in default v1 return 424 in the opt-in contract. Future major API versions should make this contract the default.'
  contact:
    name: Xquik
    url: https://xquik.com
    email: support@xquik.com
servers:
- url: https://xquik.com
security:
- apiKey: []
- oauthBearer: []
tags:
- name: Users
  description: Look up, search, and explore user profiles and relationships
paths:
  /api/v1/x/users/batch:
    get:
      operationId: getBatchUsers
      summary: Look up multiple users by IDs in one call
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      parameters:
      - name: ids
        in: query
        required: true
        schema:
          type: string
        description: Comma-separated numeric user IDs (1-100 values). Duplicate IDs are ignored while preserving first-seen order.
      responses:
        '200':
          description: Matched users plus reconciliation metadata for unavailable IDs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchUsers'
              example:
                users:
                - id: '9876543210'
                  username: elonmusk
                  name: Elon Musk
                has_next_page: false
                next_cursor: ''
                requested_count: 2
                processed_count: 2
                returned_count: 1
                unavailable_ids:
                - '1234567890'
                unprocessed_ids: []
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/AnonymousGuestAuthenticationRequired'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: Look up multiple users by IDs in one call.
  /api/v1/x/users/search:
    get:
      operationId: searchUsers
      summary: Search users by name or username
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
        description: User search query
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for user search
      responses:
        '200':
          description: User search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUsers'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/AnonymousGuestAuthenticationRequired'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: Search users by name or username.
  /api/v1/x/users/{id}:
    get:
      operationId: getUser
      summary: Get user profile with follower counts and verification
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      x-payment-info:
        offers:
        - amount: '150'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
          intent: charge
          method: tempo
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: X username (without @) or user ID
      responses:
        '200':
          description: User profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfile'
              example:
                id: '9876543210'
                username: elonmusk
                name: Elon Musk
                description: CEO of Tesla, SpaceX, and X
                followers: 150000000
                following: 500
                verified: true
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: user_not_found
                message: X user not found. Check the username.
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: Get user profile with follower counts and verification.
  /api/v1/x/followers/check:
    get:
      operationId: checkFollow
      summary: Check if one user follows another
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      x-payment-info:
        offers:
        - amount: '750'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
          intent: charge
          method: tempo
      parameters:
      - name: source
        in: query
        required: true
        schema:
          type: string
        description: Source username, @username, or X or Twitter profile URL
      - name: target
        in: query
        required: true
        schema:
          type: string
        description: Target username, @username, or X or Twitter profile URL
      responses:
        '200':
          description: Follow check result
          content:
            application/json:
              schema:
                type: object
                required:
                - isFollowing
                - isFollowedBy
                - sourceUsername
                - targetUsername
                properties:
                  isFollowing:
                    type: boolean
                    example: true
                  isFollowedBy:
                    type: boolean
                    example: false
                  sourceUsername:
                    type: string
                    example: elonmusk
                  targetUsername:
                    type: string
                    example: jack
              example:
                isFollowing: true
                isFollowedBy: false
                sourceUsername: elonmusk
                targetUsername: jack
        '400':
          description: Missing or invalid params
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: missing_params
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: Check if one user follows another.
  /api/v1/x/users/{id}/tweets:
    get:
      operationId: getUserTweets
      summary: List recent tweets posted by a user
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: X user ID or username
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for user tweets
      - $ref: '#/components/parameters/ResultPageSize'
      - name: includeReplies
        in: query
        schema:
          type: boolean
          default: false
        description: Include reply tweets
      - name: includeParentTweet
        in: query
        schema:
          type: boolean
          default: false
        description: Include parent tweet for replies
      - $ref: '#/components/parameters/TweetFilterFromUser'
      - $ref: '#/components/parameters/TweetFilterToUser'
      - $ref: '#/components/parameters/TweetFilterMentioning'
      - $ref: '#/components/parameters/TweetFilterLanguage'
      - $ref: '#/components/parameters/TweetFilterSinceDate'
      - $ref: '#/components/parameters/TweetFilterUntilDate'
      - $ref: '#/components/parameters/TweetFilterMediaType'
      - $ref: '#/components/parameters/TweetFilterMinFaves'
      - $ref: '#/components/parameters/TweetFilterMinRetweets'
      - $ref: '#/components/parameters/TweetFilterMinReplies'
      - $ref: '#/components/parameters/TweetFilterMinQuotes'
      - $ref: '#/components/parameters/TweetFilterVerifiedOnly'
      - $ref: '#/components/parameters/TweetFilterReplies'
      - $ref: '#/components/parameters/TweetFilterRetweets'
      - $ref: '#/components/parameters/TweetFilterQuotes'
      - $ref: '#/components/parameters/TweetFilterExactPhrase'
      - $ref: '#/components/parameters/TweetFilterExcludeWords'
      - $ref: '#/components/parameters/TweetFilterAnyWords'
      - $ref: '#/components/parameters/TweetFilterHashtags'
      - $ref: '#/components/parameters/TweetFilterCashtags'
      - $ref: '#/components/parameters/TweetFilterUrl'
      - $ref: '#/components/parameters/TweetFilterConversationId'
      - $ref: '#/components/parameters/TweetFilterInReplyToTweetId'
      - $ref: '#/components/parameters/TweetFilterQuotesOfTweetId'
      - $ref: '#/components/parameters/TweetFilterRetweetsOfTweetId'
      responses:
        '200':
          description: User tweets list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTweets'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/AnonymousGuestAuthenticationRequired'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/NotFound'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: List recent tweets posted by a user.
  /api/v1/x/users/{id}/replies:
    get:
      operationId: getUserReplies
      summary: List a user's With Replies timeline
      description: Returns the user's timeline with replies included by default.
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: Target user ID or username for the replies timeline.
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for user replies
      - $ref: '#/components/parameters/ResultPageSize'
      - name: includeParentTweet
        in: query
        schema:
          type: boolean
          default: false
        description: Include each reply's parent tweet.
      - $ref: '#/components/parameters/TweetFilterFromUser'
      - $ref: '#/components/parameters/TweetFilterToUser'
      - $ref: '#/components/parameters/TweetFilterMentioning'
      - $ref: '#/components/parameters/TweetFilterLanguage'
      - $ref: '#/components/parameters/TweetFilterSinceDate'
      - $ref: '#/components/parameters/TweetFilterUntilDate'
      - $ref: '#/components/parameters/TweetFilterMediaType'
      - $ref: '#/components/parameters/TweetFilterMinFaves'
      - $ref: '#/components/parameters/TweetFilterMinRetweets'
      - $ref: '#/components/parameters/TweetFilterMinReplies'
      - $ref: '#/components/parameters/TweetFilterMinQuotes'
      - $ref: '#/components/parameters/TweetFilterVerifiedOnly'
      - $ref: '#/components/parameters/TweetFilterReplies'
      - $ref: '#/components/parameters/TweetFilterRetweets'
      - $ref: '#/components/parameters/TweetFilterQuotes'
      - $ref: '#/components/parameters/TweetFilterExactPhrase'
      - $ref: '#/components/parameters/TweetFilterExcludeWords'
      - $ref: '#/components/parameters/TweetFilterAnyWords'
      - $ref: '#/components/parameters/TweetFilterHashtags'
      - $ref: '#/components/parameters/TweetFilterCashtags'
      - $ref: '#/components/parameters/TweetFilterUrl'
      - $ref: '#/components/parameters/TweetFilterConversationId'
      - $ref: '#/components/parameters/TweetFilterInReplyToTweetId'
      - $ref: '#/components/parameters/TweetFilterQuotesOfTweetId'
      - $ref: '#/components/parameters/TweetFilterRetweetsOfTweetId'
      responses:
        '200':
          description: User timeline with replies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTweets'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/AnonymousGuestAuthenticationRequired'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/NotFound'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
  /api/v1/x/users/{id}/likes:
    get:
      operationId: getUserLikes
      summary: List tweets liked by a user
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: User ID or username
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for liked tweets
      - $ref: '#/components/parameters/ResultPageSize'
      - $ref: '#/components/parameters/TweetFilterFromUser'
      - $ref: '#/components/parameters/TweetFilterToUser'
      - $ref: '#/components/parameters/TweetFilterMentioning'
      - $ref: '#/components/parameters/TweetFilterLanguage'
      - $ref: '#/components/parameters/TweetFilterSinceDate'
      - $ref: '#/components/parameters/TweetFilterUntilDate'
      - $ref: '#/components/parameters/TweetFilterMediaType'
      - $ref: '#/components/parameters/TweetFilterMinFaves'
      - $ref: '#/components/parameters/TweetFilterMinRetweets'
      - $ref: '#/components/parameters/TweetFilterMinReplies'
      - $ref: '#/components/parameters/TweetFilterMinQuotes'
      - $ref: '#/components/parameters/TweetFilterVerifiedOnly'
      - $ref: '#/components/parameters/TweetFilterReplies'
      - $ref: '#/components/parameters/TweetFilterRetweets'
      - $ref: '#/components/parameters/TweetFilterQuotes'
      - $ref: '#/components/parameters/TweetFilterExactPhrase'
      - $ref: '#/components/parameters/TweetFilterExcludeWords'
      - $ref: '#/components/parameters/TweetFilterAnyWords'
      - $ref: '#/components/parameters/TweetFilterHashtags'
      - $ref: '#/components/parameters/TweetFilterCashtags'
      - $ref: '#/components/parameters/TweetFilterUrl'
      - $ref: '#/components/parameters/TweetFilterConversationId'
      - $ref: '#/components/parameters/TweetFilterInReplyToTweetId'
      - $ref: '#/components/parameters/TweetFilterQuotesOfTweetId'
      - $ref: '#/components/parameters/TweetFilterRetweetsOfTweetId'
      responses:
        '200':
          description: List of liked tweets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTweets'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/AnonymousGuestAuthenticationRequired'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/NotFound'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: List tweets liked by a user.
  /api/v1/x/users/{id}/media:
    get:
      operationId: getUserMedia
      summary: List media tweets posted by a user
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: User ID or username for media lookup
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for media tweets
      - $ref: '#/components/parameters/ResultPageSize'
      - $ref: '#/components/parameters/TweetFilterFromUser'
      - $ref: '#/components/parameters/TweetFilterToUser'
      - $ref: '#/components/parameters/TweetFilterMentioning'
      - $ref: '#/components/parameters/TweetFilterLanguage'
      - $ref: '#/components/parameters/TweetFilterSinceDate'
      - $ref: '#/components/parameters/TweetFilterUntilDate'
      - $ref: '#/components/parameters/TweetFilterMediaType'
      - $ref: '#/components/parameters/TweetFilterMinFaves'
      - $ref: '#/components/parameters/TweetFilterMinRetweets'
      - $ref: '#/components/parameters/TweetFilterMinReplies'
      - $ref: '#/components/parameters/TweetFilterMinQuotes'
      - $ref: '#/components/parameters/TweetFilterVerifiedOnly'
      - $ref: '#/components/parameters/TweetFilterReplies'
      - $ref: '#/components/parameters/TweetFilterRetweets'
      - $ref: '#/components/parameters/TweetFilterQuotes'
      - $ref: '#/components/parameters/TweetFilterExactPhrase'
      - $ref: '#/components/parameters/TweetFilterExcludeWords'
      - $ref: '#/components/parameters/TweetFilterAnyWords'
      - $ref: '#/components/parameters/TweetFilterHashtags'
      - $ref: '#/components/parameters/TweetFilterCashtags'
      - $ref: '#/components/parameters/TweetFilterUrl'
      - $ref: '#/components/parameters/TweetFilterConversationId'
      - $ref: '#/components/parameters/TweetFilterInReplyToTweetId'
      - $ref: '#/components/parameters/TweetFilterQuotesOfTweetId'
      - $ref: '#/components/parameters/TweetFilterRetweetsOfTweetId'
      responses:
        '200':
          description: List of media tweets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTweets'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/AnonymousGuestAuthenticationRequired'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '404':
          $ref: '#/components/responses/NotFound'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: List media tweets posted by a user.
  /api/v1/x/users/{id}/followers-you-know:
    get:
      operationId: getFollowersYouKnow
      summary: List mutual followers between you and a user
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      - {}
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: User ID for followers-you-know lookup
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for followers-you-know
      - $ref: '#/components/parameters/FollowerPageSize'
      responses:
        '200':
          description: List of mutual followers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUsers'
        '400':
          $ref: '#/components/responses/InvalidInput'
        '401':
          $ref: '#/components/responses/AnonymousGuestAuthenticationRequired'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: List mutual followers between you and a user.
  /api/v1/x/notifications:
    get:
      operationId: getNotifications
      summary: Get notifications
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      parameters:
      - name: type
        in: query
        schema:
          type: string
          enum:
          - All
          - Verified
          - Mentions
          default: All
        description: Notification type filter. Unrecognized values fall back to All.
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for notifications
      responses:
        '200':
          description: List of notifications
          content:
            application/json:
              schema:
                type: object
                required:
                - notifications
                - has_next_page
                - next_cursor
                properties:
                  notifications:
                    type: array
                    items:
                      type: object
                      required:
                      - id
                      properties:
                        id:
                          type: string
                          example: '1234567890'
                        type:
                          type: string
                          example: like
                        message:
                          type: string
                          example: elonmusk liked your tweet
                        timestamp:
                          type: string
                          example: '2025-01-15T12:00:00Z'
                    example:
                    - id: '1234567890'
                      type: like
                      message: elonmusk liked your tweet
                      timestamp: '2025-01-15T12:00:00Z'
                  has_next_page:
                    type: boolean
                    example: true
                  next_cursor:
                    type: string
                    example: DAACCgACGRElMJcAAA
              example:
                notifications:
                - id: '1234567890'
                  type: like
                  message: elonmusk liked your tweet
                  timestamp: '2025-01-15T12:00:00Z'
                has_next_page: true
                next_cursor: DAACCgACGRElMJcAAA
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '424':
          $ref: '#/components/responses/XApiError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '502':
          $ref: '#/components/responses/XApiError'
        default:
          content:
            application/json:
              example:
                error: internal_error
                message: Unexpected error. Try again.
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error.
      description: Get notifications.
  /api/v1/x/dm/{userId}/history:
    get:
      operationId: getDmHistory
      summary: Get DM conversation history
      tags:
      - Users
      security:
      - apiKey: []
      - oauthBearer: []
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
        description: Target user ID
      - name: account
        in: query
        required: true
        schema:
          type: string
        description: 'X handle (without the `@` prefix) of the connected X account used to read the conversation. The account must be a participant in the conversation.

          '
      - name: cursor
        in: query
        schema:
          type: string
        description: Pagination cursor for DM history
      - name: maxId
        in: query
        schema:
          type: string
        description: Legacy pagination cursor (backward compat)
      responses:
        '200':
          description: List of DM messages
          content:
            application/json:
              schema:
                type: object
                required:
 

# --- truncated at 32 KB (115 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xquik-api/refs/heads/main/openapi/xquik-api-users-api-openapi.yml