Skip to main content
Quick Reference for AI Agents & Developers
// Get logged-in user
val user = CometChat.getLoggedInUser()

// Fetch user list with filters
val usersRequest = UsersRequestBuilder()
    .setLimit(30)
    .setSearchKeyword("john")
    .hideBlockedUsers(true)
    .build()

usersRequest.fetchNext(object : CallbackListener<List<User?>>() {
    override fun onSuccess(list: List<User?>) { }
    override fun onError(e: CometChatException) { }
})

// Get specific user details
CometChat.getUser("UID", object : CometChat.CallbackListener<User>() {
    override fun onSuccess(user: User) { }
    override fun onError(e: CometChatException) { }
})
Available via: SDK | REST API | UI Kits

Retrieve Logged In User Details

You can get the details of the logged-in user using the getLoggedInUser() method. This method can also be used to check if the user is logged in or not. If the method returns null, it indicates that the user is not logged in and you need to log the user into CometChat.
User user = CometChat.getLoggedInUser();
This method will return a User object containing all the information related to the logged-in user.

Retrieve List of Users

To fetch the list of users, you can use the UsersRequest class. To create an object of the UsersRequest class, you need to use the UsersRequestBuilder class. The UsersRequestBuilder class allows you to set the parameters based on which the users are to be fetched. The UsersRequestBuilder class allows you to set the following parameters:

Set Limit

This method sets the limit i.e. the number of users that should be fetched in a single iteration.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(30)
.build();

Set Search Keyword

This method allows you to set the search string based on which the users are to be fetched.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.setSearchKeyword("abc")
.build();

Search In

This method allows you to define in which user property the searchKeyword should be searched. This method only works in combination with setSearchKeyword(). By default, the keyword is searched in both UID and Name.
List<String> searchInList = new ArrayList<>();
searchInList.add("uid");

UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(20)
.setSearchKeyword("super")
.searchIn(searchInList)
.build();

Set Status

The status based on which the users are to be fetched. The status parameter can contain one of the following values:
  • CometChat.USER_STATUS.ONLINE - Returns the list of only online users.
  • CometChat.USER_STATUS.OFFLINE - Returns the list of only offline users.
If this parameter is not set, all available users will be returned.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.setUserStatus(UsersRequest.USER_STATUS_ONLINE)
.build();  
If this parameter is not set, all users will be returned.

Hide Blocked Users

This method determines if blocked users should be returned as part of the user list. If set to true, the user list will not contain users blocked by the logged-in user.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.hideBlockedUsers(true)
.build();   

Set Roles

This method allows you to fetch the users based on multiple roles.
List<String> roles = new ArrayList<>();
roles.add("role1");
roles.add("role2");
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.setRoles(roles)
.build();

Friends Only

This property when set to true will return only the friends of the logged-in user.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.friendsOnly(true)
.build();

Set Tags

This method accepts a list of tags based on which the list of users is to be fetched. The list fetched will only contain the users that have been tagged with the specified tags.
List<String> tags = new ArrayList<>();
tags.add("tag1");
tags.add("tag2");
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.setTags(tags)
.build();

With Tags

This property when set to true will fetch tags data along with the list of users.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.withTags(true)
.build();

Set UIDs

This method accepts a list of UIDs based on which the list of users is fetched. A maximum of 25 users can be fetched.
List<String> uids = new ArrayList<>();
uids.add("cometchat-uid-1");
uids.add("cometchat-uid-2");
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(limit)
.setUIDs(uids)
.build();

Sort By

This method allows you to sort the User List by a specific property of User. By default, the User List is sorted by status => name => UID. If name is passed to the sortBy() method, the user list will be sorted by name => UID.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(20)
.sortBy(CometChatConstants.SORT_BY_NAME)
.build();

Sort By Order

This method allows you to sort the User List in a specific order. By default the user list is sorted in ascending order.
UsersRequest usersRequest = new UsersRequest.UsersRequestBuilder()
.setLimit(20)
.sortByOrder(CometChatConstants.SORT_ORDER_DESCENDING)
.build();
Finally, once all the parameters are set to the builder class, you need to call the build() method to get the object of the UsersRequest class. Once you have the object of the UsersRequest class, you need to call the fetchNext() method. Calling this method will return a list of User objects containing X number of users depending on the limit set.
private UsersRequest usersRequest = null;
private int limit = 30;

usersRequest = new UsersRequest.UsersRequestBuilder().setLimit(limit).build();

usersRequest.fetchNext(new CometChat.CallbackListener<List<User>>() {
@Override
public void onSuccess(List <User> list) {
  Log.d(TAG, "User list received: " + list.size());
}
@Override
public void onError(CometChatException e) {
  Log.d(TAG, "User list fetching failed with exception: " + e.getMessage());
}
});

Retrieve Particular User Details

To get the information of a user, you can use the getUser() method.
private String UID = "UID";

CometChat.getUser(UID, new CometChat.CallbackListener<User>() {
@Override
public void onSuccess(User user) {
  Log.d(TAG, "User details fetched for user: " + user.toString());
}
@Override
public void onError(CometChatException e) {
  Log.d(TAG, "User details fetching failed with exception: " + e.getMessage());
}
});
The getUser() method takes the following parameters:
ParameterDescription
UIDThe UID of the user for whom the details are to be fetched
On success, the User object containing the details of the user is returned.

Get online user count

To get the total count of online users for your app, you can use the getOnlineUserCount() method.
CometChat.getOnlineUserCount(new CometChat.CallbackListener<Integer>() {
@Override
public void onSuccess(Integer count) {
  Log.d(TAG, "Online users : " + count);
}

@Override
public void onError(CometChatException e) {
  Log.d(TAG, "Error : " + e.getMessage());
}
});

Best Practices

Always set a reasonable limit (20-50 users) and use fetchNext() to paginate through results. This prevents memory issues and improves performance when dealing with large user bases.
Use UsersRequestBuilder filters (search, status, roles, tags) to fetch only the users you need rather than fetching all users and filtering client-side. This reduces bandwidth and improves response times.
Store frequently accessed user details locally to reduce API calls. Use getLoggedInUser() to check login status without making network requests.
You can chain multiple filters like setSearchKeyword(), hideBlockedUsers(), and setUserStatus() to create precise queries that return exactly the users you need.

Next Steps