# Creates a static custom group with explicit member resources Creates a static custom group (`groupCategory=1`) where members are explicitly specified via resource IDs. Required: `groupName`, `groupType`, `groupCategory`, `resourceIds`. Group name must be unique and max 100 characters. Prerequisites: Call [Get Available Resources](https://www.manageengine.com/products/desktop-central/help/api/cloud/custom-groups-get-available-resources.html) to discover valid resource IDs to include in `resourceIds`. ## Endpoint `POST /api/1.4/customgroup/addCg` ### Request URL `https://`[*{serverurl}*](https://www.manageengine.com/products/desktop-central/help/api/cloud/oauth-authentication-endpoint-domain.html)`/api/1.4/customgroup/addCg` ### Scope `DesktopCentralCloud.Common.UPDATE` ### Header `Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52` ## Request Parameters ### Request Headers #### `Content-Type` **Type:** `string` **Mandatory** **Value:** `application/json` Must be `application/json`. Request body must be valid JSON. #### `Accept` **Type:** `string` **Mandatory** **Value:** `application/json` Must be `application/json`. Only JSON responses are supported. ### Request Body `application/json` #### `groupName` **Type:** `string` **Mandatory** Name for the new group. Must be unique. Max 100 chars. > Forbidden characters: ` \ : ; < > ? * " | & # % /` #### `groupCategory` **Type:** `string` **Mandatory** Must be `1` for static groups. #### `groupType` **Type:** `string` **Mandatory** `1` = Computers, `2` = Users. #### `description` **Type:** `string` **Optional** Group description. Max 250 chars. Double quotes not allowed. #### `resourceIds` **Type:** `array` **Mandatory** Array of long resource IDs to add as members. Fetch IDs from [Get Available Resources](https://www.manageengine.com/products/desktop-central/help/api/cloud/custom-groups-get-available-resources.html). ## Sample Request ```curl curl --request POST \ --url https://appdomains/api/1.4/customgroup/addCg \ --header 'Accept: application/json' \ --header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \ --header 'Content-Type: application/json' \ --data '{"groupName":"Windows Servers","groupType":1,"groupCategory":1,"resourceIds":[101,102,103]}' ``` ### Sample Request Body Create a static computer group with three server members. ```json { "groupName": "Windows Servers", "groupType": 1, "groupCategory": 1, "description": "Production Windows Server machines", "resourceIds": [ 101, 102, 103 ] } ``` Create a static user group with two members. ```json { "groupName": "HR Users", "groupType": 2, "groupCategory": 1, "description": "Human Resources department users", "resourceIds": [ 501, 502 ] } ``` ## Response Parameters ### HTTP Code 200 Response body: `application/json` #### `message_type` **Type:** `string` Always `'addCg'` for this endpoint. #### `message_response` **Type:** `JSON Object` Response payload container. #### `message_version` **Type:** `string` API version: `'1.4'`. #### `status` **Type:** `string` `'success'` when the request completed without errors. ### HTTP Code 412 Response body: `application/json` #### `message_type` **Type:** `string` Always `'addCg'` for this endpoint. #### `message_version` **Type:** `string` API version: `'1.4'`. #### `status` **Type:** `string` Always `'error'` for error responses. #### `error_code` **Type:** `string` `'70501'` (CG_CREATE_UPDATE_PARAMS_MISSING), `'70502'` (CG_DUPLICATE_NAME), `'70504'` (CG_INVALID_GROUP_TYPE), `'70505'` (CG_INVALID_GROUP_CATEGORY), `'70503'` (CG_NULL_CRITERIA_PATTERN), `'70517'` (CG_INVALID_CRITERIA_PATTERN), `'70508'` (CG_MORE_COMPUTERS_DUMMY_CG), `'70513'` (CG_INVALID_CREATION_MODE). #### `error_description` **Type:** `string` Resolved I18N message varies by error code: `'Required parameters are missing to create/update Custom Group.'` (70501), `'Custom group name is already in use.'` (70502), `'Invalid group type.'` (70504), `'Invalid group category.'` (70505), `'Criteria pattern is empty.'` (70503), `'Invalid criteria pattern.'` (70517), `'Computer limit exceeded for free edition.'` (70508), `'Only manually created Custom Group is allowed to be accessed using external apis.'` (70513). ### HTTP Code 500 Response body: `application/json` #### `message_type` **Type:** `string` Always `'addCg'` for this endpoint. #### `message_version` **Type:** `string` API version: `'1.4'`. #### `status` **Type:** `string` Always `'error'` for error responses. #### `error_code` **Type:** `string` Internal error code: `'1003'` (INTERNAL_ERROR). #### `error_description` **Type:** `string` Resolved I18N message, typically: An internal error occurred while processing the request. ## Sample Responses ### HTTP 200 Static computer group created with assigned resource ID. ```json { "message_type": "addCg", "message_response": { "addcg": { "groupName": "Windows Servers", "groupType": "1", "groupCategory": "1", "cgResourceId": "301" } }, "message_version": "1.4", "status": "success" } ``` Static group created but some submitted resource IDs were not found. ```json { "message_type": "addCg", "message_response": { "addcg": { "groupName": "Windows Servers", "groupType": "1", "groupCategory": "1", "invalidResourceIds": [ 999, 998 ], "cgResourceId": "301" } }, "message_version": "1.4", "status": "success" } ``` ### HTTP 412 Required field (`groupName`, `groupType`, `groupCategory`, or `resourceIds`) is missing. ```json { "error_description": "Required parameters are missing to create/update Custom Group.", "message_type": "addCg", "error_code": "70501", "message_version": "1.4", "status": "error" } ``` A group with this name already exists. ```json { "error_description": "Custom group name is already in use.", "message_type": "addCg", "error_code": "70502", "message_version": "1.4", "status": "error" } ``` ### HTTP 500 Unexpected server-side failure during group creation. ```json { "error_description": "An internal error occurred while processing the request.", "message_type": "addCg", "error_code": "1003", "message_version": "1.4", "status": "error" } ``` ## Rate Limit **Duration:** 1 minute | **Threshold:** 30 | **Lock period:** 5 minutes Duration - Time window for the threshold. Threshold - Number of API calls allowed within the specified duration. Lock Period - Wait time before consecutive API requests.