---
title: "Get user profile with follower counts and verification"
method: GET
path: "/x/users/{id}"
tags: ["Users"]
---

# Get user profile with follower counts and verification

`GET /x/users/{id}`

## Path parameters

- `id` string, required

## Response `200`

User profile

- UserProfile — X user profile with bio, follower counts, and verification status.
  - `id` string, required
  - `username` string, required
  - `name` string, required
  - `description` string
  - `followers` integer
  - `following` integer
  - `verified` boolean
  - `isBlueVerified` boolean — Whether X shows a blue verification badge
  - `isVerified` boolean — Whether X marks the profile as verified
  - `profilePicture` string
  - `coverPicture` string
  - `profileBannerUrl` string — Original X profile banner field when available
  - `location` string
  - `createdAt` string
  - `statusesCount` integer
  - `mediaCount` integer
  - `protected` boolean — Whether the profile protects its posts
  - `url` string
  - `favouritesCount` integer
  - `hasCustomTimelines` boolean
  - `isTranslator` boolean
  - `withheldInCountries` string[]
  - `possiblySensitive` boolean
  - `pinnedTweetIds` string[]
  - `isAutomated` boolean
  - `automatedBy` string
  - `unavailable` boolean
  - `unavailableReason` string
  - `verifiedType` string
  - `affiliatesHighlightedLabel` UserAffiliateLabel — Organization affiliation label shown on an X profile.
    - `badgeUrl` string
    - `description` string
    - `url` string
    - `urlType` string
    - `userLabelDisplayType` string
    - `userLabelType` string
  - `businessAccountAffiliatesCount` integer
  - `creatorSubscriptionsCount` integer
  - `hasGraduatedAccess` boolean
  - `hasHiddenSubscriptionsOnProfile` boolean
  - `highlightsInfo` UserHighlightsInfo — Profile highlight availability and count metadata.
    - `canHighlightTweets` boolean
    - `highlightedTweets` string
  - `identityVerification` UserIdentityVerification — Identity verification metadata displayed by X.
    - `description` string
    - `isIdentityVerified` boolean
    - `verifiedSinceMsec` string
  - `isProfileTranslatable` boolean
  - `parodyCommentaryFanLabel` string
  - `profileDescriptionLanguage` string
  - `profileImageShape` string
  - `profileInterstitialType` string
  - `profileSortEnabled` boolean
  - `profileTranslatorType` string
  - `superFollowEligible` boolean
  - `communityRole` string — Community role when returned by community member reads
  - `profile_bio` object — Structured profile bio with entity annotations

## Other responses

- `400` — Invalid input
- `401` — Unauthenticated
- `402` — Payment required. Fixed-price direct MPP requests return a Machine Payments Protocol problem document and a WWW-Authenticate challenge. Authenticated X data requests return balances and explicit Stripe checkout-creation actions. Guest paid-read keys receive only the accountless guest top-up action. Direct MPP challenges also advertise the Stripe wallet action. Other authenticated endpoints return a legacy error shape. A failed request never creates checkout. Create checkout only after the user confirms a payment option.
- `404` — User not found
- `424` — Dependency unavailable, unauthorized, or rate limited. Default v1 returns 502. The best-practice response contract returns 424 for transparent dependency failures.
- `429` — Xquik tier rate limit exceeded. The response includes a `Retry-After` header with the number of seconds to wait before retrying.
- `502` — Dependency unavailable, unauthorized, or rate limited. Default v1 returns 502. The best-practice response contract returns 424 for transparent dependency failures.

## Changes

- **2026-07-31** `d0ee2927ac71` — 3 warning, 15 info
  - removed the optional property `canDm` from the response with the `200` status
  - removed the optional property `viewerFollowedBy` from the response with the `200` status
  - removed the optional property `viewerFollowing` from the response with the `200` status
  - added the optional property `affiliatesHighlightedLabel` to the response with the `200` status
  - …14 more
- **2026-07-22** `37e31f0b5439` — 1 breaking
  - added `#/components/schemas/XWritePaymentRequired` to the response body `oneOf` list for the response status `402` (media type: application/json)
  - …this revision’s changelog is incomplete
- **2026-07-13** `83005363f122` — 11 breaking, 126 info
  - added `#/components/schemas/AuthenticatedPaymentRequired, #/components/schemas/GuestPaymentRequired, subschema #3` to the response body `oneOf` list for the response status `402`
  - the response's body type/format changed from `object`/`` to ``/`` for status `402`
  - added `subschema #1: LegacyErrorCode, subschema #2: StructuredError` to the `error` response property `oneOf` list for the response status `400`
  - added `subschema #1: LegacyErrorCode, subschema #2: StructuredError` to the `error` response property `oneOf` list for the response status `401`
  - …133 more
- …earlier changes not shown

[Full history](https://skmtc.dev/xquik-dev/apis/xquik-api/changes/x/users/:id/get.md)

---

[API](https://skmtc.dev/xquik-dev/apis/xquik-api.md) · [All operations](https://skmtc.dev/xquik-dev/apis/xquik-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/xquik-dev/xquik-api/revisions/d0ee2927ac71/schema)
