---
source_url: https://www.pubnub.com/docs/chat/kotlin-chat-sdk/build/features/users/list
title: List all users
updated_at: 2026-06-15T12:11:36.097Z
---

> Documentation Index
> For a curated overview of PubNub documentation, see: https://www.pubnub.com/docs/llms.txt
> For the full list of all documentation pages, see: https://www.pubnub.com/docs/llms-full.txt


# List all users

`getUsers()` returns a paginated list of all users with their metadata.

:::note Requires App Context
Enable [App Context](https://youtu.be/9UEoSlngpYI) in the [Admin Portal](https://admin.pubnub.com/) to store user data. If using [Access Manager](https://www.pubnub.com/docs/chat/kotlin-chat-sdk/build/features/users/permissions), uncheck `Disallow Get All User Metadata` in the [App Context configuration](https://www.pubnub.com/docs/general/metadata/basics#configuration).
:::

### Method signature

This method takes the following parameters:

```kotlin
chat.getUsers(
    filter: String?,
    sort: Collection<PNSortKey<PNKey>> = listOf(),
    limit: Int?,
    page: PNPage?,
): PNFuture<GetUsersResponse>
```

#### Input

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| filter | String | Optional |  | Expression used to filter the results. Returns only these users whose properties satisfy the given expression are returned. The filtering language is [defined here](https://www.pubnub.com/docs/general/metadata/filtering). |
| sort | Collection<PNSortKey<PNKey>> | Optional | `listOf()` | A collection to specify the sort order. Available options are `id`, `name`, and `updated`. Use `asc` or `desc` to specify the sorting direction, or specify `null` to take the default sorting direction (ascending). For example: `{name: "asc"}`. Unless specified otherwise, the items are sorted by the last updated date. Defaults to an empty list. |
| limit | Int | Optional | `100` | Number of objects to return in response. The default (and maximum) value is `100`. |
| page | PNPage | Optional |  | Object used for pagination to define which previous or next result page you want to fetch. |

#### Output

| Type | Description |
| --- | --- |
| `PNFuture<GetUsersResponse>` | `PNFuture` containing a set of users with pagination information (`next`, `prev`, `total`). |

### Sample code

Fetch all existing user IDs.

```kotlin
// reference the "chat" object and invoke the "getUsers()" method
chat.getUsers().async { result ->
result.onSuccess {
        // handle success
    }.onFailure {
        // handle failure
    }
}
```

### Other examples

#### Pagination

Get the total number of 25 users and then specify that you want to fetch the results from the next page using a string that was previously returned from the PubNub server.

```kotlin
chat.getUsers(limit = 25).async { result ->
    result.onSuccess { usersObject: GetUsersResponse ->
        chat.getUsers(limit = 25, page = usersObject.next)
            .async { result2 ->
                result2.onSuccess { usersObjectPage2 -> ... }
                    .onFailure { ... }
            }
    }.onFailure { ... }
}
```

#### Archived users

Get all archived users. This request will return all users removed with the `soft` option set to `true`, whose data is still stored in the App Context storage.

```kotlin
chat.getUsers(filter = "status=='deleted'").async { result ->
    result.onSuccess { getUsersResponse: GetUsersResponse ->
        // handle success
        println("Number of soft deleted users is: ${getUsersResponse.users.size}")
    }.onFailure { e: PubNubException ->
         // handle failure
    }
}
```