> For the complete documentation index, see [llms.txt](https://docs.console.zenlayer.com/api-reference/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.console.zenlayer.com/api-reference/cn/zec/vpc-network/createsubnets.md).

# CreateSubnets

## 1. 接口描述

本接口(CreateSubnets)用于在同一个VPC下批量创建多个子网。

{% hint style="info" %}
**注意事项**

* 批量创建的子网必须属于同一个VPC，单次请求最多支持创建10个子网。
* 该批次内的子网要么全部创建成功，要么全部不创建：只要其中任意一个子网的参数校验或创建失败，整个请求都不会创建任何子网。
* 同一个VPC能创建的子网资源个数也是有限制的，每个子网的CIDR网段必须属于VPC的CIDR网段内。
* 同一个VPC内，子网的CIDR地址段不可有重叠，本次请求内的多个子网之间的CIDR地址段也不可有重叠：与VPC下已有子网冲突返回`OPERATION_DENIED_SUBNET_CIDR_CONFLICT`，与本次请求内其他子网冲突返回`OPERATION_DENIED_SUBNET_CIDR_CONFLICT_WITH_BATCH`。
* 调用 [DescribeSubnetRegions](/api-reference/cn/zec/vpc-network/describesubnetregions.md) 接口查询子网区域是否支持创建。
  {% endhint %}

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称    | 必选 | 类型                                                                                   | 描述                                                                                                                                         |
| ------- | -- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| vpcId   | 是  | String                                                                               | <p>需要添加子网的VPC ID。</p><p>批量创建的子网均属于同一个VPC。</p><p>可通过调用 <a href="/api-reference/cn/zec/vpc-network/describevpcs.md">DescribeVpcs</a> 获取。</p> |
| subnets | 是  | Array of [SubnetCreateItem](/api-reference/cn/zec/datastructure.md#subnetcreateitem) | <p>待创建的子网列表。</p><p>单次请求最多支持创建10个子网。</p><p>该批次内的子网要么全部创建成功，要么全部不创建。</p>                                                                     |

## 3. 响应结果

| 参数名称      | 类型              | 描述                                                       |
| --------- | --------------- | -------------------------------------------------------- |
| requestId | String          | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |
| subnetIds | Array of String | 创建的子网ID列表，顺序与请求中的子网列表一致。                                 |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 在同一个VPC下批量创建2个子网。**

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

Request：
{
  "vpcId": "<vpcId>",
  "subnets": [
    {
      "regionId": "asia-east-1",
      "stackType": "IPv4_IPv6",
      "ipv6Type": "Public",
      "name": "Subnet-asia-east-1-01",
      "cidrBlock": "10.0.0.0/24"
    },
    {
      "regionId": "asia-east-1",
      "stackType": "IPv4",
      "name": "Subnet-asia-east-1-02",
      "cidrBlock": "10.0.1.0/24"
    }
  ]
}

Response：
{
  "requestId": "TBFC01FCF-6439-4530-ADBC-16809F0C3E8F",
  "response": {
    "requestId": "TBFC01FCF-6439-4530-ADBC-16809F0C3E8F",
    "subnetIds": ["xxxx1", "xxxx2"]
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](/api-reference/cn/api-introduction/toolkit.md)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](/api-reference/cn/api-introduction/instruction/commonerrorcode.md)

| HTTP状态码 | 错误码                                                    | 说明                          |
| ------- | ------------------------------------------------------ | --------------------------- |
| 400     | INVALID\_CIDR\_BLOCK\_FORMAT                           | CIDR格式不正确。                  |
| 400     | INVALID\_CIDR\_BLOCK\_NOT\_EMPTY                       | CIDR不能为空。                   |
| 400     | INVALID\_CIDR\_BLOCK\_STATUS                           | CIDR地址段状态不合法。               |
| 404     | INVALID\_CIDR\_IPV6\_NOT\_FOUND                        | IPv6 Cidr不存在。               |
| 400     | INVALID\_CIDR\_IPV6\_ONLY                              | 堆栈类型指定为IPv6,不支持指定IPv4 CIDR。 |
| 400     | INVALID\_CIDR\_REGION\_MISMATCH                        | 子网区域与客户ipv6网段区域不一致。         |
| 404     | INVALID\_DHCP\_OPTIONS\_SET\_NOT\_FOUND                | DHCP选项集不存在。                 |
| 400     | INVALID\_IP\_BROADCAST\_ADDRESS                        | IP为广播地址不可用。                 |
| 400     | INVALID\_MASK\_LENGTH                                  | IPv6地址掩码值需大于等于子网ipv6网段。     |
| 400     | INVALID\_PARAMETER\_SUBNET\_CIDR\_NOT\_BELONG\_VPC     | 指定的Subnet不属于指定的VPC。         |
| 400     | INVALID\_PARAMETER\_SUBNET\_IPV6\_TYPE\_NOT\_FOUND     | 参数ipv6Type缺失。               |
| 404     | INVALID\_REGION\_NOT\_FOUND                            | 区域不存在。                      |
| 400     | INVALID\_REGION\_NOT\_ON\_SALE                         | 指定的区域未开售。                   |
| 400     | INVALID\_SUBNET\_NETMASK\_MAX\_RANGE                   | 子网网掩码位数超过最大值。               |
| 404     | INVALID\_VPC\_NOT\_FOUND                               | VPC不存在。                     |
| 400     | OPERATION\_DENIED\_CIDR\_BLOCK\_IS\_EXIST              | CIDR已经存在。                   |
| 400     | OPERATION\_DENIED\_NO\_AVAILABLE\_CIDR                 | 无空余的CIDR地址段。                |
| 400     | OPERATION\_DENIED\_REGION\_NOT\_SUPPORT\_PUB\_IPV6     | 指定的区域不支持公网IPV6。             |
| 400     | OPERATION\_DENIED\_SUBNET\_CIDR\_CONFLICT              | 子网CIDR地址有冲突。                |
| 400     | OPERATION\_DENIED\_SUBNET\_CIDR\_CONFLICT\_WITH\_BATCH | 子网CIDR地址与本次批量创建请求中的其他子网冲突。  |
| 400     | OPERATION\_DENIED\_VPC\_NOT\_SUPPORT\_PRI\_IPV6        | 指定的VPC不支持内网IPV6。            |
