---
name: "Users Api v1"
last_updated: 2026-06-11T23:12:12Z
type: legacy
api_base_url: "https://users.roblox.com"
versions: [v1]
endpoints: 18
auth: [cookie]
---

# Users Api v1

> **Warning:** Legacy APIs with cookie authentication can incorporate breaking changes without notice. We don't recommend them for production applications.

**Base URL:** `https://users.roblox.com`
**Versions:** v1

## Endpoints

### GET `/v1/birthdate`

Get the user's birthdate

**Responses:**

- `200`: OK → `Roblox.Users.Api.BirthdateResponse`
- `400`: 1: User not found.
- `401`: 0: Authorization has been denied for this request.

**Response fields** (`Roblox.Users.Api.BirthdateResponse`)

See [Roblox.Users.Api.BirthdateResponse](#roblox-users-api-birthdateresponse) in Models.

**Response example:**
```json
{
  "birthMonth": 0,
  "birthDay": 0,
  "birthYear": 0
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/birthdate"
```

### POST `/v1/birthdate`

Update the user's birthdate

**Request Body:** `application/json` — Type: `Roblox.Users.Api.BirthdateRequest`

See [Roblox.Users.Api.BirthdateRequest](#roblox-users-api-birthdaterequest) in Models.

**Request example:**
```json
{
  "birthMonth": 0,
  "birthDay": 0,
  "birthYear": 0,
  "password": "string"
}
```

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.ApiEmptyResponseModel`
- `400`: 1: User not found. 4: The birthdate provided is invalid. 8: Password is incorrect.
- `401`: 0: Authorization has been denied for this request.
- `403`: 0: Token Validation Failed 2: PIN is locked. 5: Invalid birthdate change.
- `500`: 0: An unknown error occured. 5: Invalid birthdate change.

**Response fields** (`Roblox.Web.WebAPI.ApiEmptyResponseModel`)

See [Roblox.Web.WebAPI.ApiEmptyResponseModel](#roblox-web-webapi-apiemptyresponsemodel) in Models.

**Error handling:** `401`: Check that your API key/token is valid and not expired. `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -X POST -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/birthdate" \
  -H "Content-Type: application/json" \
  -d '{
  "birthMonth": 0,
  "birthDay": 0,
  "birthYear": 0,
  "password": "string"
}'
```

### GET `/v1/description`

Get the user's description

**Responses:**

- `200`: OK → `Roblox.Users.Api.DescriptionResponse`
- `400`: 1: User not found.
- `401`: 0: Authorization has been denied for this request.

**Response fields** (`Roblox.Users.Api.DescriptionResponse`)

See [Roblox.Users.Api.DescriptionResponse](#roblox-users-api-descriptionresponse) in Models.

**Response example:**
```json
{
  "description": "string"
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/description"
```

### POST `/v1/description`

Update the user's description

**Request Body:** `application/json` — Type: `Roblox.Users.Api.DescriptionRequest`

See [Roblox.Users.Api.DescriptionRequest](#roblox-users-api-descriptionrequest) in Models.

**Request example:**
```json
{
  "description": "string"
}
```

**Responses:**

- `200`: OK → `Roblox.Users.Api.DescriptionResponse`
- `400`: 1: User not found.
- `401`: 0: Authorization has been denied for this request.
- `403`: 0: Token Validation Failed 2: PIN is locked.
- `500`: 0: An unknown error occured.
- `503`: 3: This feature is currently disabled. Please try again later.

**Response fields** (`Roblox.Users.Api.DescriptionResponse`)

See [Roblox.Users.Api.DescriptionResponse](#roblox-users-api-descriptionresponse) in Models.

**Response example:**
```json
{
  "description": "string"
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -X POST -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/description" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "string"
}'
```

### GET `/v1/display-names/validate`

Validate a display name for a new user.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `displayName` | query | `string` | Yes | The display name. |
| `birthdate` | query | `string (date-time)` | Yes | The new user's birthdate |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.ApiEmptyResponseModel`
- `400`: 1: Display name is too short 2: Display name is too long 3: Display name contains invalid characters 4: Display name has been moderated 6: Request must contain a birthdate 8: Display name has too many combinations of character sets
- `429`: 5: Display name updates for this user have been throttled

**Response fields** (`Roblox.Web.WebAPI.ApiEmptyResponseModel`)

See [Roblox.Web.WebAPI.ApiEmptyResponseModel](#roblox-web-webapi-apiemptyresponsemodel) in Models.

**Error handling:** `429`: Retry with exponential backoff (start at 1s). 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/display-names/validate?displayName={VALUE}&birthdate={VALUE}"
```

### GET `/v1/gender`

Get the user's gender

**Responses:**

- `200`: OK → `Roblox.Users.Api.GenderResponse`
- `400`: 1: User not found.
- `401`: 0: Authorization has been denied for this request.

**Response fields** (`Roblox.Users.Api.GenderResponse`)

See [Roblox.Users.Api.GenderResponse](#roblox-users-api-genderresponse) in Models.

**Response example:**
```json
{
  "gender": 0
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/gender"
```

### POST `/v1/gender`

Update the user's gender

**Request Body:** `application/json` — Type: `Roblox.Users.Api.GenderRequest`

See [Roblox.Users.Api.GenderRequest](#roblox-users-api-genderrequest) in Models.

**Request example:**
```json
{
  "gender": 1
}
```

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.ApiEmptyResponseModel`
- `400`: 1: User not found. 6: The gender provided is invalid.
- `401`: 0: Authorization has been denied for this request.
- `403`: 0: Token Validation Failed 2: PIN is locked.
- `500`: 0: An unknown error occured.

**Response fields** (`Roblox.Web.WebAPI.ApiEmptyResponseModel`)

See [Roblox.Web.WebAPI.ApiEmptyResponseModel](#roblox-web-webapi-apiemptyresponsemodel) in Models.

**Error handling:** `401`: Check that your API key/token is valid and not expired. `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -X POST -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/gender" \
  -H "Content-Type: application/json" \
  -d '{
  "gender": 1
}'
```

### GET `/v1/users/{userId}`

Gets detailed user information by id.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userId` | path | `integer (int64)` | Yes | The user id. |

**Responses:**

- `200`: OK → `Roblox.Users.Api.GetUserResponse`
- `404`: 3: The user id is invalid.

**Response fields** (`Roblox.Users.Api.GetUserResponse`)

See [Roblox.Users.Api.GetUserResponse](#roblox-users-api-getuserresponse) in Models.

**Response example:**
```json
{
  "description": "string",
  "created": "2024-01-01T00:00:00Z",
  "isBanned": false,
  "externalAppDisplayName": "string",
  "hasVerifiedBadge": false,
  "id": 0
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/{USERID}"
```

### GET `/v1/users/{userId}/display-names/validate`

Validate a display name for an existing user.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userId` | path | `integer (int64)` | Yes | The user id. |
| `displayName` | query | `string` | Yes | The display name. |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.ApiEmptyResponseModel`
- `400`: 1: Display name is too short 2: Display name is too long 3: Display name contains invalid characters 4: Display name has been moderated 8: Display name has too many combinations of character sets
- `401`: 0: Authorization has been denied for this request.
- `403`: 7: The user id is invalid.
- `429`: 5: Display name updates for this user have been throttled

**Response fields** (`Roblox.Web.WebAPI.ApiEmptyResponseModel`)

See [Roblox.Web.WebAPI.ApiEmptyResponseModel](#roblox-web-webapi-apiemptyresponsemodel) in Models.

**Error handling:** `429`: Retry with exponential backoff (start at 1s). `401`: Check that your API key/token is valid and not expired. `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/{USERID}/display-names/validate?displayName={VALUE}"
```

### GET `/v1/users/{userId}/username-history`

Retrieves the username history for a particular user.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userId` | path | `integer (int64)` | Yes |  |
| `limit` | query | `integer (int32)` | No | The number of results per request. Valid values: `10`, `25`, `50`, `100` |
| `cursor` | query | `string` | No | The paging cursor for the previous or next page. |
| `sortOrder` | query | `string` | No | The order the results are sorted in. Valid values: `Asc`, `Desc` |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.UsernameHistoryResponse]`
- `400`: 3: The user id is invalid.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.UsernameHistoryResponse]`)

See [Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.UsernameHistoryResponse]](#roblox-web-webapi-models-apipageresponse-roblox-users-api-usernamehistoryresponse-) in Models.

**Response example:**
```json
{
  "previousPageCursor": "string",
  "nextPageCursor": "string",
  "data": [
    {
      "name": "..."
    }
  ]
}
```

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/{USERID}/username-history"
```

### GET `/v1/users/authenticated`

Gets the minimal authenticated user.

**Responses:**

- `200`: OK → `Roblox.Users.Api.AuthenticatedGetUserResponse`
- `401`: 0: Authorization has been denied for this request.

**Response fields** (`Roblox.Users.Api.AuthenticatedGetUserResponse`)

See [Roblox.Users.Api.AuthenticatedGetUserResponse](#roblox-users-api-authenticatedgetuserresponse) in Models.

**Response example:**
```json
{
  "id": 0,
  "name": "string",
  "displayName": "string"
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/authenticated"
```

### GET `/v1/users/authenticated/age-bracket`

Gets the age bracket of the authenticated user.

**Responses:**

- `200`: OK → `Roblox.Users.Api.UserAgeBracketResponse`
- `401`: 0: Authorization has been denied for this request.

**Response fields** (`Roblox.Users.Api.UserAgeBracketResponse`)

See [Roblox.Users.Api.UserAgeBracketResponse](#roblox-users-api-useragebracketresponse) in Models.

**Response example:**
```json
{
  "ageBracket": 0
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/authenticated/age-bracket"
```

### GET `/v1/users/authenticated/country-code`

Gets the country code of the authenticated user.

**Responses:**

- `200`: OK → `Roblox.Users.Api.UserCountryCodeResponse`
- `401`: 0: Authorization has been denied for this request.

**Response fields** (`Roblox.Users.Api.UserCountryCodeResponse`)

See [Roblox.Users.Api.UserCountryCodeResponse](#roblox-users-api-usercountrycoderesponse) in Models.

**Response example:**
```json
{
  "countryCode": "string"
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/authenticated/country-code"
```

### GET `/v1/users/authenticated/roles`

Gets the (public) roles of the authenticated user, such as `"Soothsayer"` and `"BetaTester"`.

**Responses:**

- `200`: OK → `Roblox.Users.Api.UserRolesResponse`
- `401`: 0: Authorization has been denied for this request.

**Response fields** (`Roblox.Users.Api.UserRolesResponse`)

See [Roblox.Users.Api.UserRolesResponse](#roblox-users-api-userrolesresponse) in Models.

**Response example:**
```json
{
  "roles": [
    "string"
  ]
}
```

**Error handling:** `401`: Check that your API key/token is valid and not expired. 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/authenticated/roles"
```

### GET `/v1/users/search`

Searches for users by keyword.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `keyword` | query | `string` | Yes | The search keyword. |
| `sessionId` | query | `string` | No |  |
| `limit` | query | `integer (int32)` | No | The number of results per request. Valid values: `10`, `25`, `50`, `100` |
| `cursor` | query | `string` | No | The paging cursor for the previous or next page. |

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.SearchGetUserResponse]`
- `400`: 5: The keyword was filtered. 6: The keyword is too short.
- `429`: 4: Too many requests.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.SearchGetUserResponse]`)

See [Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.SearchGetUserResponse]](#roblox-web-webapi-models-apipageresponse-roblox-users-api-searchgetuserresponse-) in Models.

**Response example:**
```json
{
  "previousPageCursor": "string",
  "nextPageCursor": "string",
  "data": [
    {
      "previousUsernames": "...",
      "hasVerifiedBadge": "...",
      "id": "...",
      "name": "...",
      "displayName": "..."
    }
  ]
}
```

**Error handling:** `429`: Retry with exponential backoff (start at 1s). 

**Example:**
```bash
curl -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/search?keyword={VALUE}"
```

### POST `/v1/usernames/users`

Get users by usernames.

This endpoint will also check previous usernames.
Does not require X-CSRF-Token protection because this is essentially a get request but as a POST to avoid URI limits.

**Request Body:** `application/json` — Type: `Roblox.Users.Api.MultiGetByUsernameRequest`

See [Roblox.Users.Api.MultiGetByUsernameRequest](#roblox-users-api-multigetbyusernamerequest) in Models.

**Request example:**
```json
{
  "usernames": [
    "string"
  ],
  "excludeBannedUsers": false
}
```

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserByNameResponse]`
- `400`: 2: Too many usernames.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserByNameResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserByNameResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-users-api-multigetuserbynameresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "requestedUsername": "...",
      "hasVerifiedBadge": "...",
      "id": "...",
      "name": "...",
      "displayName": "..."
    }
  ]
}
```

**Example:**
```bash
curl -X POST -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/usernames/users" \
  -H "Content-Type: application/json" \
  -d '{
  "usernames": [
    "string"
  ],
  "excludeBannedUsers": false
}'
```

### POST `/v1/users`

Get users by ids.

Does not require X-CSRF-Token protection because this is essentially a get request but as a POST to avoid URI limits.

**Request Body:** `application/json` — Type: `Roblox.Users.Api.MultiGetByUserIdRequest`

See [Roblox.Users.Api.MultiGetByUserIdRequest](#roblox-users-api-multigetbyuseridrequest) in Models.

**Request example:**
```json
{
  "userIds": [
    0
  ],
  "excludeBannedUsers": false
}
```

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserResponse]`
- `400`: 1: Too many ids.

**Response fields** (`Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserResponse]`)

See [Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserResponse]](#roblox-web-webapi-models-apiarrayresponse-roblox-users-api-multigetuserresponse-) in Models.

**Response example:**
```json
{
  "data": [
    {
      "hasVerifiedBadge": "...",
      "id": "...",
      "name": "...",
      "displayName": "..."
    }
  ]
}
```

**Example:**
```bash
curl -X POST -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users" \
  -H "Content-Type: application/json" \
  -d '{
  "userIds": [
    0
  ],
  "excludeBannedUsers": false
}'
```

### PATCH `/v1/users/{userId}/display-names`

Set the display name for the authorized user.

**Parameters:**

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `userId` | path | `integer (int64)` | Yes | the user id |

**Request Body:** `application/json` — Type: `Roblox.Users.Api.SetDisplayNameRequest`

See [Roblox.Users.Api.SetDisplayNameRequest](#roblox-users-api-setdisplaynamerequest) in Models.

**Request example:**
```json
{
  "newDisplayName": "string"
}
```

**Responses:**

- `200`: OK → `Roblox.Web.WebAPI.ApiEmptyResponseModel`
- `400`: 1: Display name is too short 2: Display name is too long 3: Display name contains invalid characters 4: Display name has been moderated 8: Display name has too many combinations of character sets
- `401`: 0: Authorization has been denied for this request.
- `403`: 0: Token Validation Failed 7: The user id is invalid.
- `429`: 5: Display name updates for this user have been throttled

**Response fields** (`Roblox.Web.WebAPI.ApiEmptyResponseModel`)

See [Roblox.Web.WebAPI.ApiEmptyResponseModel](#roblox-web-webapi-apiemptyresponsemodel) in Models.

**Error handling:** `429`: Retry with exponential backoff (start at 1s). `401`: Check that your API key/token is valid and not expired. `403`: Verify your API key has the required scopes listed above. 

**Example:**
```bash
curl -X PATCH -H "Authorization: Bearer $ROBLOX_ACCESS_TOKEN" \
  "https://users.roblox.com/v1/users/{USERID}/display-names" \
  -H "Content-Type: application/json" \
  -d '{
  "newDisplayName": "string"
}'
```

## Models

### Roblox.Users.Api.AuthenticatedGetUserResponse

A response model representing absolute minimal authenticating user information.
No new attributes should be added to this response since it is in the critical path of app launch and we want to minimize dependencies.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `id` | `integer` | No | The user Id. |
| `name` | `string` | No | The user name. |
| `displayName` | `string` | No | The user DisplayName. |

### Roblox.Users.Api.BirthdateRequest

The birthdate request

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `birthMonth` | `integer` | No | The birth month |
| `birthDay` | `integer` | No | The birth day |
| `birthYear` | `integer` | No | The birth year |
| `password` | `string` | No | Password |

### Roblox.Users.Api.BirthdateResponse

The birthdate response

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `birthMonth` | `integer` | No | The birth month |
| `birthDay` | `integer` | No | The birth day |
| `birthYear` | `integer` | No | The birth year |

### Roblox.Users.Api.DescriptionRequest

The description request

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `description` | `string` | No | The description |

### Roblox.Users.Api.DescriptionResponse

The description response

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `description` | `string` | No | The description |

### Roblox.Users.Api.GenderRequest

The gender request

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `gender` | `1 \| 2 \| 3` | No | The gender ['Unknown' = 1, 'Male' = 2, 'Female' = 3] |

### Roblox.Users.Api.GenderResponse

The gender response

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `gender` | `integer` | No | The gender |

### Roblox.Users.Api.GetUserResponse

A response model representing user information.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `description` | `string` | No | The user description. |
| `created` | `string` | No | When the user signed up. |
| `isBanned` | `boolean` | No | Whether the user is banned |
| `externalAppDisplayName` | `string` | No | Unused, legacy attribute. For now always null to not disturb existing client code that might rely on its existence. |
| `hasVerifiedBadge` | `boolean` | No | The user's verified badge status. |
| `id` | `integer` | No | The user Id. |
| `name` | `string` | No | The user name. |
| `displayName` | `string` | No | The user DisplayName. |

### Roblox.Users.Api.MultiGetByUserIdRequest

Request model for getting users by ids.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `userIds` | `integer[]` | No | The user ids. |
| `excludeBannedUsers` | `boolean` | No | Whether the response should exclude banned users |

### Roblox.Users.Api.MultiGetByUsernameRequest

Request model for getting users by usernames.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `usernames` | `string[]` | No | The usernames. |
| `excludeBannedUsers` | `boolean` | No | Whether the response should exclude banned users |

### Roblox.Users.Api.MultiGetUserByNameResponse

A response model specific to multi-get user by name.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `requestedUsername` | `string` | No | The username the user was requested with. |
| `hasVerifiedBadge` | `boolean` | No | The user's verified badge status. |
| `id` | `integer` | No | The user Id. |
| `name` | `string` | No | The user name. |
| `displayName` | `string` | No | The user DisplayName. |

### Roblox.Users.Api.MultiGetUserResponse

<p>A response model specific to multi-get user.</p>
<p>
            Note: Currently the MultiGet responses don't have all the data that the single gets have, to reduce payload size!
            We might want to revisit this decision in the future.
            </p>

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `hasVerifiedBadge` | `boolean` | No | The user's verified badge status. |
| `id` | `integer` | No | The user Id. |
| `name` | `string` | No | The user name. |
| `displayName` | `string` | No | The user DisplayName. |

### Roblox.Users.Api.SearchGetUserResponse

A user response model specific to getting a user from user search.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `previousUsernames` | `string[]` | No | Previous usernames for a user. |
| `hasVerifiedBadge` | `boolean` | No | The user's verified badge status. |
| `id` | `integer` | No | The user Id. |
| `name` | `string` | No | The user name. |
| `displayName` | `string` | No | The user DisplayName. |

### Roblox.Users.Api.SetDisplayNameRequest

Request model for changing a display name.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `newDisplayName` | `string` | No | The users new display name. |

### Roblox.Users.Api.UserAgeBracketResponse

A user age bracket response model.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `ageBracket` | `integer` | No | The age bracket of the user. |

### Roblox.Users.Api.UserCountryCodeResponse

A user country code response model.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `countryCode` | `string` | No | The country code of the user. |

### Roblox.Users.Api.UserRolesResponse

A user roles response model.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `roles` | `string[]` | No | The roles of the user. |

### Roblox.Users.Api.UsernameHistoryResponse

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | No | A past username belonging to a particular userId |

### Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserByNameResponse]

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `data` | `Roblox.Users.Api.MultiGetUserByNameResponse[]` | No |  |

### Roblox.Web.WebAPI.Models.ApiArrayResponse[Roblox.Users.Api.MultiGetUserResponse]

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `data` | `Roblox.Users.Api.MultiGetUserResponse[]` | No |  |

### Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.SearchGetUserResponse]

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `previousPageCursor` | `string` | No |  |
| `nextPageCursor` | `string` | No |  |
| `data` | `Roblox.Users.Api.SearchGetUserResponse[]` | No |  |

### Roblox.Web.WebAPI.Models.ApiPageResponse[Roblox.Users.Api.UsernameHistoryResponse]

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `previousPageCursor` | `string` | No |  |
| `nextPageCursor` | `string` | No |  |
| `data` | `Roblox.Users.Api.UsernameHistoryResponse[]` | No |  |