# CreateSecurityGroup

## 1. API Description

This API (CreateSecurityGroup) is used to create a security group.

{% hint style="info" %} <mark style="color:blue;">**Note**</mark>

* <mark style="color:blue;">A single team can create a limited number of security groups. If you need more, please contact us.</mark>
* <mark style="color:blue;">A security group has a limited number of rules. If you need more, please contact us.</mark>
* <mark style="color:blue;">Rules in the same direction cannot be duplicated.</mark>
  {% endhint %}

## 2. Input Parameters

The following request parameter list only provides API request parameters.

| Parameter Name    | Required | Type                                                                                                                          | Description                                                                                                                  |
| ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| securityGroupName | Yes      | String                                                                                                                        | <p>Security group name.</p><p>The length is 1 to 64 characters. Only letters, numbers, - and periods (.) are supported.</p>  |
| scope             | No       | String                                                                                                                        | <p>Deployment scope.</p><p>Only Global is supported currently.</p><p>Default value: Global .</p><p>Default value: Global</p> |
| ruleInfos         | No       | Array of [SecurityGroupRuleInfo](https://docs.console.zenlayer.com/api-reference/compute/datastructure#securitygroupruleinfo) | Security group rules.                                                                                                        |

## 3. Output Parameters

| Parameter Name  | Type   | Description                                                                                                           |
| --------------- | ------ | --------------------------------------------------------------------------------------------------------------------- |
| requestId       | String | <p>The unique request ID, which is returned for each request.</p><p>RequestId is required for locating a problem.</p> |
| securityGroupId | String | The security group ID.                                                                                                |

## 4. Code Example

{% tabs %}
{% tab title="Example" %}
**Create a security group.**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: CreateSecurityGroup
<Common Request Params>

Request:
{
  "securityGroupName": "test123",
  "ruleInfos": [
    {
      "direction": "ingress",
      "policy": "accept",
      "priority": 1,
      "ipProtocol": "tcp",
      "portRange": "22",
      "cidrIp": "0.0.0.0/0",
      "desc": "aaa"
    },
    {
      "direction": "egress",
      "policy": "accept",
      "priority": 1,
      "ipProtocol": "tcp",
      "portRange": "22",
      "cidrIp": "0.0.0.0/0",
      "desc": "xxx"
    }
  ]
}

Response:
{
  "requestId": "TA851AB85-577F-41BE-8E76-68171F021E36",
  "response": {
    "requestId": "TA851AB85-577F-41BE-8E76-68171F021E36",
    "securityGroupId": "your-security-group-id"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. Developer Resources

Zenlayer Cloud API 2.0 integrates [SDKs](https://docs.console.zenlayer.com/api-reference/api-introduction/toolkit/api-sdk)，to make it easier for you to call APIs. More programming languages will be supported.

## 6. Error Codes

The following only lists the error codes related to the API business logic. For other error codes, see [Common Error Codes](https://docs.console.zenlayer.com/api-reference/api-introduction/instruction/commonerrorcode).

| HTTP Status Code | Error Code                                              | Description                                            |
| ---------------- | ------------------------------------------------------- | ------------------------------------------------------ |
| 400              | INVALID\_PARAMETER\_SECURITY\_GROUP\_CIDR\_IP           | Invalid source IP address range.                       |
| 400              | INVALID\_PARAMETER\_SECURITY\_GROUP\_DESC               | The rule description contains invalid characters.      |
| 400              | INVALID\_PARAMETER\_SECURITY\_GROUP\_DIRECTION          | Inbound or outbound rules error.                       |
| 400              | INVALID\_PARAMETER\_SECURITY\_GROUP\_IP\_PROTOCOL       | Invalid IP protocol.                                   |
| 400              | INVALID\_PARAMETER\_SECURITY\_GROUP\_PORT\_RANGE        | Invalid security group rule PortRange parameter.       |
| 400              | INVALID\_PARAMETER\_SECURITY\_GROUP\_PRIORITY           | Invalid security group rule Priority parameter.        |
| 400              | OPERATION\_DENIED\_SECURITY\_GROUP\_TEAM\_EXCEED\_LIMIT | The number of security groups exceeds the quota limit. |
