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

# userRole | Hyperliquid info

> The info endpoint with type: "userRole" retrieves the role and account type information for a specific user on the Hyperliquid network.

<Info>
  This method is available on Chainstack. Not all Hyperliquid methods are available on Chainstack, as the open-source node implementation does not support them yet — see [Hyperliquid methods](/docs/hyperliquid-methods) for the full availability breakdown.
</Info>

The `info` endpoint with `type: "userRole"` retrieves the role and account type information for a specific user on the Hyperliquid network. This endpoint is essential for understanding the account structure, permissions, and relationships within the Hyperliquid ecosystem.

## Parameters

### Request body

* `type` (string, required) — The request type. Must be `"userRole"` to retrieve user role information.
* `user` (string, required) — User address in 42-character hexadecimal format (e.g., `0x31ca8395cf837de08b24da3f660e77761dfb974b`).

## Response

The response varies based on the user's role type. All responses include a `role` field, with additional `data` for certain role types:

### Role types

#### User

```json theme={"system"}
{"role": "user"}
```

* **role** (string) — Standard user account with full trading capabilities

#### Agent

```json theme={"system"}
{"role": "agent", "data": {"user": "0x..."}}
```

* **role** (string) — Agent account that acts on behalf of another user
* **data.user** (string) — Address of the user this agent represents

#### Vault

```json theme={"system"}
{"role": "vault"}
```

* **role** (string) — Vault account for collective asset management

#### Sub-account

```json theme={"system"}
{"role": "subAccount", "data": {"master": "0x..."}}
```

* **role** (string) — Sub-account linked to a master account
* **data.master** (string) — Address of the master account

#### Missing

```json theme={"system"}
{"role": "missing"}
```

* **role** (string) — Unrecognized or non-existent account

### Understanding user roles

**User accounts:**

* Standard individual or institutional trading accounts
* Full access to trading, staking, and governance features
* Independent account management and permissions

**Agent accounts:**

* Authorized to act on behalf of other users
* Used for automated trading, portfolio management, or custody services
* Maintains connection to the principal user account

**Vault accounts:**

* Collective investment vehicles or fund structures
* May have multiple participants or beneficiaries
* Often used for institutional asset management

**Sub-accounts:**

* Linked to a master account for organizational purposes
* Useful for separating trading strategies or risk management
* Master account typically maintains oversight and control

**Missing accounts:**

* Address exists but has no recognized role or activity
* May indicate new, inactive, or invalid addresses
* Useful for validation and error handling

## Example request

<CodeGroup>
  ```shell Shell theme={"system"}
  curl -X POST \
    -H "Content-Type: application/json" \
    -d '{"type": "userRole", "user": "0x31ca8395cf837de08b24da3f660e77761dfb974b"}' \
    https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/info
  ```

  ```python Python (hyperliquid-python-sdk) theme={"system"}
  from hyperliquid.info import Info

  # Pass your full Chainstack endpoint as the base URL.
  info = Info("YOUR_CHAINSTACK_ENDPOINT", skip_ws=True)

  result = info.user_role(user="0x31ca8395cf837de08b24da3f660e77761dfb974b")
  print(result)
  ```

  ```typescript TypeScript (@nktkas/hyperliquid) theme={"system"}
  import { HttpTransport, InfoClient } from "@nktkas/hyperliquid";

  // apiUrl points the transport at your full Chainstack endpoint.
  const transport = new HttpTransport({ apiUrl: "YOUR_CHAINSTACK_ENDPOINT" });
  const info = new InfoClient({ transport });

  const result = await info.userRole({
    user: "0x31ca8395cf837de08b24da3f660e77761dfb974b",
  });
  console.log(result);
  ```
</CodeGroup>

<Note>
  **Use your own endpoint in your code.** The code examples use a placeholder Chainstack endpoint (YOUR\_CHAINSTACK\_ENDPOINT) — replace it with your own Hyperliquid node endpoint from the [Chainstack console](https://console.chainstack.com/). The curl above uses a shared public endpoint for quick checks only; do not use it in production.
</Note>

## Example response

```json theme={"system"}
{"role": "user"}
```

## Use case

The `info` endpoint with `type: "userRole"` is essential for applications that need to:

* **Access control**: Determine appropriate permissions and features for different account types
* **User interface**: Customize UI elements based on account role and capabilities
* **Compliance monitoring**: Track different account types for regulatory requirements
* **Risk management**: Apply role-specific risk controls and limits
* **Agent verification**: Validate agent relationships and authorization
* **Sub-account management**: Display master-sub account hierarchies
* **Vault operations**: Identify collective investment accounts and structures
* **Account validation**: Verify account existence and type before operations
* **Automated systems**: Route operations based on account role and permissions
* **Reporting systems**: Categorize accounts for analytics and compliance
* **Customer support**: Understand account structure for troubleshooting
* **Onboarding flows**: Guide users through role-specific setup processes
* **API integration**: Implement role-based API access and functionality
* **Audit trails**: Track activities across different account types

This endpoint is particularly valuable for institutional platforms managing multiple account types, compliance systems requiring role-based monitoring, automated trading systems that need to understand account relationships, and applications providing differentiated services based on user roles on the Hyperliquid network.


## OpenAPI

````yaml openapi/hyperliquid_node_api/hypercore_info/info_user_role.json post /4f8d8f4040bdacd1577bff8058438274/info
openapi: 3.0.0
info:
  title: Hyperliquid Node API
  version: 1.0.0
  description: This is an API for interacting with Chainstack Hyperliquid node.
servers:
  - url: https://hyperliquid-mainnet.core.chainstack.com
security: []
paths:
  /4f8d8f4040bdacd1577bff8058438274/info:
    post:
      tags:
        - hyperliquid operations
      summary: info (userRole)
      operationId: infoUserRole
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  default: userRole
                  enum:
                    - userRole
                  description: Request type to retrieve user's role information
                user:
                  type: string
                  default: '0x31ca8395cf837de08b24da3f660e77761dfb974b'
                  description: User address in 42-character hexadecimal format
              required:
                - type
                - user
      responses:
        '200':
          description: User's role information and associated data
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    description: Regular user role
                    properties:
                      role:
                        type: string
                        enum:
                          - user
                        description: User role type
                    required:
                      - role
                  - type: object
                    description: Agent role with associated user
                    properties:
                      role:
                        type: string
                        enum:
                          - agent
                        description: Agent role type
                      data:
                        type: object
                        properties:
                          user:
                            type: string
                            description: Address of the user this agent represents
                        required:
                          - user
                    required:
                      - role
                      - data
                  - type: object
                    description: Vault role
                    properties:
                      role:
                        type: string
                        enum:
                          - vault
                        description: Vault role type
                    required:
                      - role
                  - type: object
                    description: Sub-account role with master account
                    properties:
                      role:
                        type: string
                        enum:
                          - subAccount
                        description: Sub-account role type
                      data:
                        type: object
                        properties:
                          master:
                            type: string
                            description: Address of the master account
                        required:
                          - master
                    required:
                      - role
                      - data
                  - type: object
                    description: Missing or unrecognized role
                    properties:
                      role:
                        type: string
                        enum:
                          - missing
                        description: Missing role type
                    required:
                      - role

````