> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-agent-native-development.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create A Group

> Create A Group — CometChat documentation.

## Create a Group

*In other words, as a logged-in user, how do I create a public, private or password-protected group?*

You can create a group using `createGroup()` method. This method takes a `Group` object as input.

To create an object of `Group` class, you can use either of the below two constructors:

1. `new Group(String GUID, String name, String groupType, String password)`
2. `new Group(String GUID, String name, String groupType, String password, String icon, String description)`

The `groupType` needs to be either of the below 3 values:

1.`CometChat.GROUP_TYPE.PUBLIC`

2.`CometChat.GROUP_TYPE.PASSWORD`

3.`CometChat.GROUP_TYPE.PRIVATE`

<Tabs>
  <Tab title="Create Group">
    ```javascript theme={null}
    var GUID = "GUID";
    var groupName = "Hello Group!";
    var groupType = CometChat.GROUP_TYPE.PUBLIC;
    var password = "";

    var group = new CometChat.Group(GUID, groupName, groupType, password);

    CometChat.createGroup(group).then(
    	group => {
    		console.log("Group created successfully:", group);
    	}, error => {
    		console.log("Group creation failed with exception:", error);
    	}
    );
    ```
  </Tab>
</Tabs>

The createGroup() method takes the following parameters:

| Parameter | Description |
| - | - |
| `group` | An instance of `Group` class |

After successful creation of the group, you will receive an instance of `Group` class which contains all the information about the particular group.

<Warning>
  GUID can be alphanumeric with underscore and hyphen. Spaces, punctuation and other special characters are not allowed.
</Warning>

## Group Class

| Field | Editable | Information |
| - | - | - |
| guid | Needs to be specified at group creation. Cannot be edited later | A unique identifier for a group |
| name | Yes | Name of the group |
| type | No | Type of the group: Can be 1. Public 2. Password 3. Private |
| password | No | Password for the group in case the group is of type password. |
| icon | Yes | An URL to group icon |
| description | Yes | Description about the group |
| owner | Yes | UID of the owner of the group. |
| metadata | Yes | Additional data for the group as JSON |
| createdAt | No | The unix timestamp of the time the group was created |
| updatedAt | No | The unix timestamp of the time the group was last updated |
| hasJoined | No | A boolean to determine if the logged in user is a member of the group. |
| joinedAt | No | The unix timestamp of the time the logged in user joined the group. |
| scope | Yes | Scope of the logged in user. Can be: 1. Admin 2. Moderator 3. Participant |
| membersCount | No | The number of members in the groups |
| tags | Yes | A list of tags to identify specific groups. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.