Quick Reference for AI Agents & DevelopersNote: User creation/deletion should ideally happen on your backend via the REST API.
- You add the user details in your database
- You create a user in CometChat
- You log in the user to your app
- You log in the user in CometChat (programmatically)
Creating a user
Ideally, user creation should take place at your backend. You can refer our Rest API to learn more about creating a user and use the appropriate code sample based on your backend language. However, if you wish to create users on the fly, you can use thecreateUser() method. This method takes a User object and the Auth Key as input parameters and returns the created User object if the request is successful.
- JavaScript
- TypeScript
Updating a user
Updating a user similar to creating a user should ideally be achieved at your backend using the Restful APIs. For more information, you can check the update a user section. However, this can be achieved on the fly as well as using theupdateUser() method. This method takes a User object and the Auth Key as inputs and returns the updated User object on the successful execution of the request.
- JavaScript
- TypeScript
User object provided to the updateUser() method has the UID of the user to be updated set.
Updating logged-in user
Updating a logged-in user is similar to updating a user. The only difference being this method does not require an AuthKey. This method takes aUser object as input and returns the updated User object on the successful execution of the request.
- JavaScript
- TypeScript
updateCurrentUserDetails() method one can only update the logged-in user irrespective of the UID passed. Also, it is not possible to update the role of a logged-in user.
Deleting a user
Deleting a user can only be achieved via the Restful APIs. For more information please check the delete a user section.User Class
| Field | Editable | Information |
|---|---|---|
| uid | specified on user creation. Not editable after that | Unique identifier of the user |
| name | Yes | Display name of the user |
| avatar | Yes | URL to profile picture of the user |
| link | Yes | URL to profile page |
| role | Yes | User role of the user for role based access control |
| metadata | Yes | Additional information about the user as JSON |
| status | No | Status of the user. Could be either online/offline |
| statusMessage | Yes | Any custom status message that needs to be set for a user |
| lastActiveAt | No | The unix timestamp of the time the user was last active. |
| hasBlockedMe | No | A boolean that determines if the user has blocked the logged in user |
| blockedByMe | No | A boolean that determines if the logged in user has blocked the user |
| tags | Yes | A list of tags to identify specific users |
Best Practices
Best Practices
| Practice | Details |
|---|---|
| Backend user creation | Always create and update users from your backend server using the REST API to keep your Auth Key secure |
| UID format | Use alphanumeric characters, underscores, and hyphens only. Avoid spaces and special characters |
| Metadata usage | Store additional user info (e.g., department, preferences) in the metadata JSON field rather than creating custom fields |
| Sync on registration | Create the CometChat user immediately when a user registers in your app to avoid login failures |
Troubleshooting
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
createUser() fails with “Auth Key not found” | Invalid or missing Auth Key | Verify the Auth Key from your CometChat Dashboard |
createUser() fails with “UID already exists” | A user with that UID was already created | Use updateUser() instead, or choose a different UID |
updateCurrentUserDetails() doesn’t update role | Role cannot be changed for the logged-in user | Use updateUser() with Auth Key from your backend to change roles |
| User not appearing in user list | User was created but not yet indexed | Wait a moment and retry. Ensure createUser() resolved successfully |