Quick Reference for AI Agents & Developers // Create a public group
const group = new CometChat . Group ( "guid" , "Group Name" , CometChat . GROUP_TYPE . PUBLIC );
const createdGroup = await CometChat . createGroup ( group );
// Create a password-protected group
const group = new CometChat . Group ( "guid" , "Name" , CometChat . GROUP_TYPE . PASSWORD , "password" );
await CometChat . createGroup ( group );
// Create a private group (invite-only)
const group = new CometChat . Group ( "guid" , "Name" , CometChat . GROUP_TYPE . PRIVATE );
await CometChat . createGroup ( group );
// Create group with initial members
const members = [
new CometChat . GroupMember ( "user1" , CometChat . GROUP_MEMBER_SCOPE . ADMIN ),
new CometChat . GroupMember ( "user2" , CometChat . GROUP_MEMBER_SCOPE . PARTICIPANT )
];
await CometChat . createGroupWithMembers ( group , members , []);
// Group types: PUBLIC | PASSWORD | PRIVATE
// Member scopes: ADMIN | MODERATOR | PARTICIPANT
Create groups to enable multi-user conversations. Groups can be public (anyone can join), password-protected, or private (invite-only).
Availability : SDK, API, UI Kits
Group Types
Type Description PUBLICAnyone can join without approval PASSWORDRequires password to join PRIVATEInvite-only, not visible in group list
Create a Group
Public Group
Password Group
Private Group
Async/Await
const GUID = "group-123" ;
const groupName = "Team Chat" ;
const groupType = CometChat . GROUP_TYPE . PUBLIC ;
const group = new CometChat . Group ( GUID , groupName , groupType );
CometChat . createGroup ( group ). then (
( group ) => console . log ( "Group created:" , group ),
( error ) => console . log ( "Failed:" , error )
);
const GUID = "group-123" ;
const groupName = "Private Team" ;
const groupType = CometChat . GROUP_TYPE . PASSWORD ;
const password = "secret123" ;
const group = new CometChat . Group ( GUID , groupName , groupType , password );
CometChat . createGroup ( group ). then (
( group ) => console . log ( "Group created:" , group ),
( error ) => console . log ( "Failed:" , error )
);
const GUID = "group-123" ;
const groupName = "Executive Team" ;
const groupType = CometChat . GROUP_TYPE . PRIVATE ;
const group = new CometChat . Group ( GUID , groupName , groupType );
CometChat . createGroup ( group ). then (
( group ) => console . log ( "Group created:" , group ),
( error ) => console . log ( "Failed:" , error )
);
async function createGroup ( guid , name , type , password = "" ) {
const group = new CometChat . Group ( guid , name , type , password );
try {
const createdGroup = await CometChat . createGroup ( group );
console . log ( "Group created:" , createdGroup . getName ());
return createdGroup ;
} catch ( error ) {
console . error ( "Failed to create group:" , error );
throw error ;
}
}
// Create a public group
await createGroup ( "team-123" , "Team Chat" , CometChat . GROUP_TYPE . PUBLIC );
// Create a password-protected group
await createGroup ( "vip-room" , "VIP Room" , CometChat . GROUP_TYPE . PASSWORD , "secret" );
// Create a private group
await createGroup ( "exec-team" , "Executive Team" , CometChat . GROUP_TYPE . PRIVATE );
GUID Requirements : Alphanumeric characters, underscores, and hyphens only. No spaces, punctuation, or special characters.
Create with Full Properties
const GUID = "group-123" ;
const groupName = "Engineering Team" ;
const groupType = CometChat . GROUP_TYPE . PUBLIC ;
const password = "" ;
const icon = "https://example.com/group-icon.png" ;
const description = "Engineering team discussions" ;
const group = new CometChat . Group (
GUID ,
groupName ,
groupType ,
password ,
icon ,
description
);
// Set additional properties
group . setMetadata ({ department: "Engineering" , project: "Alpha" });
group . setTags ([ "engineering" , "development" ]);
CometChat . createGroup ( group ). then (
( group ) => console . log ( "Group created:" , group ),
( error ) => console . log ( "Failed:" , error )
);
Create Group with Members
Create a group and add members in a single operation:
const GUID = "group-123" ;
const groupName = "Project Team" ;
const groupType = CometChat . GROUP_TYPE . PUBLIC ;
const group = new CometChat . Group ( GUID , groupName , groupType );
// Members to add
const members = [
new CometChat . GroupMember ( "user1" , CometChat . GROUP_MEMBER_SCOPE . ADMIN ),
new CometChat . GroupMember ( "user2" , CometChat . GROUP_MEMBER_SCOPE . MODERATOR ),
new CometChat . GroupMember ( "user3" , CometChat . GROUP_MEMBER_SCOPE . PARTICIPANT )
];
// Users to ban
const banMembers = [ "user4" , "user5" ];
CometChat . createGroupWithMembers ( group , members , banMembers ). then (
( response ) => {
console . log ( "Group:" , response . group );
console . log ( "Member results:" , response . members );
// { user1: "success", user2: "success", user3: "success" }
},
( error ) => console . log ( "Failed:" , error )
);
const GUID : string = "group-123" ;
const groupName : string = "Project Team" ;
const groupType : string = CometChat . GROUP_TYPE . PUBLIC ;
const group : CometChat . Group = new CometChat . Group ( GUID , groupName , groupType );
const members : CometChat . GroupMember [] = [
new CometChat . GroupMember ( "user1" , CometChat . GROUP_MEMBER_SCOPE . ADMIN ),
new CometChat . GroupMember ( "user2" , CometChat . GROUP_MEMBER_SCOPE . PARTICIPANT )
];
const banMembers : string [] = [ "user4" ];
CometChat . createGroupWithMembers ( group , members , banMembers ). then (
( response : Object ) => {
console . log ( "Group created:" , response );
},
( error : CometChat . CometChatException ) => console . log ( "Failed:" , error )
);
Member Scopes
Scope Description ADMINFull control over group settings and members MODERATORCan manage members but not group settings PARTICIPANTRegular member, can send/receive messages
Group Properties Reference
Property Editable Description guidCreate only Unique identifier nameYes Display name typeNo PUBLIC, PASSWORD, or PRIVATE passwordNo Password for PASSWORD type groups iconYes URL to group icon descriptionYes Group description ownerYes UID of group owner metadataYes Custom JSON data createdAtNo Creation timestamp updatedAtNo Last update timestamp hasJoinedNo If logged-in user is a member joinedAtNo When user joined scopeYes User’s scope in group membersCountNo Number of members tagsYes Tags for categorization
Real-Time Group Events
Listen for group creation events:
const listenerID = "GROUP_LISTENER" ;
CometChat . addGroupListener (
listenerID ,
new CometChat . GroupListener ({
onGroupMemberJoined : ( message , joinedUser , joinedGroup ) => {
console . log ( "User joined:" , joinedUser . getName ());
},
onGroupMemberLeft : ( message , leftUser , leftGroup ) => {
console . log ( "User left:" , leftUser . getName ());
}
})
);
// Remove listener when done
CometChat . removeGroupListener ( listenerID );
Best Practices
Use meaningful GUIDs that relate to your app’s data model
Consider prefixing GUIDs by type (e.g., “team-123”, “project-456”)
Keep GUIDs consistent with your backend identifiers
Use PUBLIC for open communities
Use PASSWORD for semi-private groups
Use PRIVATE for invite-only groups (support teams, executive chats)
Add the creator as ADMIN automatically
Consider adding relevant users during creation to avoid multiple API calls
Next Steps