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

# User

A User represents a person on Whop. Users have a public profile and can buy products, join accounts, and access experiences.

Use the Users API to search for users, retrieve or update profiles, and check whether a user has access to an account, product, or experience.

## Endpoints

| Endpoint                                                             | Request                                                                             |
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| [List Users](/api-reference/beta/users/list-users)                   | <Badge color="blue" size="sm" stroke>GET</Badge> `/users`                           |
| [Retrieve User](/api-reference/beta/users/retrieve-user)             | <Badge color="blue" size="sm" stroke>GET</Badge> `/users/{id}`                      |
| [Update User](/api-reference/beta/users/update-user)                 | <Badge color="orange" size="sm" stroke>PATCH</Badge> `/users/{id}`                  |
| [Check User Access](/api-reference/beta/users/check-user-access)     | <Badge color="blue" size="sm" stroke>GET</Badge> `/users/{id}/access/{resource_id}` |
| [Update Current User](/api-reference/beta/users/update-current-user) | <Badge color="orange" size="sm" stroke>PATCH</Badge> `/users/me`                    |

## Attributes

<Columns cols={2}>
  <Column>
    <ResponseField name="balances" type="object[]" required>
      User holdings (crypto and fiat), each with USD value. Empty when `total_usd` is `null`.

      <Accordion title="Properties" defaultOpen={true}>
        <ResponseField name="balance" type="string" required>
          Total amount held in native units, as a decimal string.
        </ResponseField>

        <ResponseField name="breakdown" type="object" required>
          Balance split into available, pending, and reserve amounts, as native-unit
          decimal strings. On-chain crypto is entirely available; good\_funds and fiat
          cash can have pending or reserve portions.
        </ResponseField>

        <ResponseField name="icon_url" type="string | null" required>
          Holding icon URL.
        </ResponseField>

        <ResponseField name="name" type="string" required>
          The holding's display name
        </ResponseField>

        <ResponseField name="price_usd" type="number | null" required>
          USD price per unit, or `null` when no exchange rate is available.
        </ResponseField>

        <ResponseField name="symbol" type="string" required>
          Holding display symbol, such as `USDT`, `cbBTC`, or `EUR`.
        </ResponseField>

        <ResponseField name="value_usd" type="string | null" required>
          Holding USD value, or `null` when no exchange rate is available.
        </ResponseField>
      </Accordion>
    </ResponseField>

    <ResponseField name="bio" type="string | null" required>
      The user's biography
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      When the user was created, as an ISO 8601 timestamp
    </ResponseField>

    <ResponseField name="id" type="string" required>
      User ID, prefixed `user_`.
    </ResponseField>

    <ResponseField name="name" type="string | null" required>
      The user's display name
    </ResponseField>

    <ResponseField name="profile_picture" type="object | null" required>
      The user's profile picture, an object with a url
    </ResponseField>

    <ResponseField name="total_usd" type="string | null" required>
      Total USD value across the user's balances with known exchange rates. Computed
      only on `GET /users/me` self-view for callers with balance-read scope; `null`
      otherwise.
    </ResponseField>

    <ResponseField name="username" type="string" required>
      The user's unique username
    </ResponseField>

    <ResponseField name="verification" type="object" required>
      Identity verification status for the user's `individual` (KYC) and `business`
      (KYB) profiles. Each is `null` until created, otherwise a `status` of
      `not_started`, `pending`, `approved`, or `rejected`.
    </ResponseField>
  </Column>

  <Column>
    <div className="api-resource-sticky-example">
      ```json User theme={null}
      {
      	"balances": [
      		{
      			"balance": "250.00",
      			"breakdown": {
      				"available": "250.00",
      				"pending": "0",
      				"reserve": "0"
      			},
      			"icon_url": "https://cdn.whop.com/tokens/usdt.png",
      			"name": "Tether USD",
      			"price_usd": 1,
      			"symbol": "USDT",
      			"value_usd": "250.00"
      		}
      	],
      	"bio": "Building communities on Whop.",
      	"created_at": "2026-06-01T12:00:00Z",
      	"id": "user_alex123",
      	"name": "Alex Rivera",
      	"profile_picture": {
      		"url": "https://cdn.whop.com/avatar.png"
      	},
      	"total_usd": "250.00",
      	"username": "alex",
      	"verification": {
      		"business": null,
      		"individual": {
      			"status": "approved"
      		}
      	}
      }
      ```
    </div>
  </Column>
</Columns>
