Help Center/ Virtual Private Cloud/ API Reference/ VPC APIs (V3)/ Supplementary Network Interface/ Creating Supplementary Network Interfaces in Batches
Updated on 2025-08-19 GMT+08:00

Creating Supplementary Network Interfaces in Batches

Function

A supplementary network interface is a derivative resource based on an elastic network interface. You can use this API to create supplementary network interfaces in batches.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{project_id}/vpc/sub-network-interfaces/batch-create

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Definition:

ID of the project that a supplementary network interface belongs to. For details about how to obtain a project ID, see Obtaining a Project ID.

Range:

N/A

Request Parameters

Table 2 Request body parameters

Parameter

Mandatory

Type

Description

dry_run

No

Boolean

Definition:

Whether to only check the request.

Constraints:

N/A

Range:

  • true: A check request will be sent and no supplementary network interface will be created. Check items include mandatory parameters, request format, and constraints. If the check fails, an error will be returned. If the check succeeds, response code 202 will be returned.

  • false: A request will be sent and a supplementary network interface will be created.

Default Value:

false

sub_network_interface

Yes

BatchCreateSubNetworkInterfaceOption object

Definition:

Request body for creating a supplementary network interface.

Constraints:

N/A

Range:

N/A

Default Value:

N/A

count

Yes

Integer

Definition:

Number of supplementary network interfaces to be created in batches.

Constraints:

N/A

Range:

N/A

Default Value:

N/A

Table 3 BatchCreateSubNetworkInterfaceOption

Parameter

Mandatory

Type

Description

virsubnet_id

Yes

String

Definition:

ID of the virtual subnet that a supplementary network interface is located.

Constraints:

The value is in UUID format with hyphens (-).

Range:

N/A

Default Value:

N/A

parent_id

Yes

String

Definition:

ID of the elastic network interface that a supplementary network interface is attached to.

Constraints:

The value must be an existing elastic network interface ID.

Range:

N/A

Default Value:

N/A

security_groups

No

Array of strings

Definition:

IDs of the security groups that a supplementary network interface is associated with. For example, "security_groups": ["a0608cbf-d047-4f54-8b28-cd7b59853fff"].

Constraints:

If this parameter is not specified in the request, the supplementary network interface is automatically associated with the default security group after being created.

Range:

N/A

Default Value:

N/A

description

No

String

Definition:

Description of a supplementary network interface.

Constraints:

The value can contain 0 to 255 characters and cannot contain angle brackets (< or >).

Range:

N/A

Default Value:

N/A

ipv6_enable

No

Boolean

Definition:

Whether IPv6 is enabled for a supplementary network interface.

Constraints:

N/A

Range:

  • true: IPv6 is enabled.

  • false: IPv6 is disabled.

Default Value:

false

project_id

No

String

Definition:

ID of the project that a supplementary network interface belongs to.

Constraints:

This parameter can only be set to the tenant ID of the current tenant. If this parameter is not specified, the project ID of the current tenant is used by default.

Range:

N/A

Default Value:

N/A

allowed_address_pairs

No

Array of AllowedAddressPair objects

Definition:

IP/MAC address pair list of a supplementary network interface. For details, see the AllowedAddressPair object list.

Constraints:

  • Configure a dedicated security group if a large CIDR block (subnet mask less than 24) is configured for parameter allowed_address_pairs.

  • In the hardware SDN networking plan, the ip_address attribute value cannot be in CIDR format.

Range:

N/A

Default Value:

N/A

Table 4 AllowedAddressPair

Parameter

Mandatory

Type

Description

ip_address

No

String

Definition:

IP address.

Constraints:

Configure a dedicated security group if a large CIDR block (subnet mask less than 24) is configured for parameter allowed_address_pairs.

Range:

Single IP address, for example, 192.168.21.25

A CIDR block, for example, 192.168.21.0/24

Default Value:

N/A

mac_address

No

String

Definition:

MAC address.

Constraints:

N/A

Range:

N/A

Default Value:

N/A

Response Parameters

Status code: 201

Table 5 Response body parameters

Parameter

Type

Description

request_id

String

Definition:

Request ID.

Range:

N/A

sub_network_interfaces

Array of SubNetworkInterface objects

Definition:

Response body for creating supplementary network interfaces in batches.

Range:

N/A

Table 6 SubNetworkInterface

Parameter

Type

Description

id

String

Definition:

ID of a supplementary network interface. After a supplementary network interface is created, a supplementary network interface ID is generated, which uniquely identifies the supplementary network interface.

Range:

The value is in UUID format with hyphens (-).

virsubnet_id

String

Definition:

ID of the virtual subnet that a supplementary network interface is located.

Range:

The value is in UUID format with hyphens (-).

private_ip_address

String

Definition:

Private IPv4 address of a supplementary network interface.

Range:

N/A

ipv6_ip_address

String

Definition:

Private IPv6 address of a supplementary network interface.

Range:

N/A

mac_address

String

Definition:

MAC address of a supplementary network interface.

Range:

The value is a valid MAC address assigned by the system randomly.

parent_device_id

String

Definition:

Device ID of the host network interface that a supplementary network interface is attached to.

Range:

The value is in UUID format with hyphens (-).

parent_id

String

Definition:

ID of the elastic network interface that a supplementary network interface is attached to.

Range:

The value is in UUID format with hyphens (-).

description

String

Definition:

Description of a supplementary network interface.

Range:

The value can contain 0 to 255 characters and cannot contain angle brackets (< or >).

vpc_id

String

Definition:

ID of the VPC that a supplementary network interface belongs to.

Range:

The value is in UUID format with hyphens (-).

vlan_id

Integer

Definition:

VLAN ID of a supplementary network interface.

Range:

1 to 4094

security_groups

Array of strings

Definition:

IDs of the security groups that a supplementary network interface is associated with. For example, "security_groups": ["a0608cbf-d047-4f54-8b28-cd7b59853fff"].

Range:

If this parameter is not specified in the request, the supplementary network interface is automatically associated with the default security group after being created.

tags

Array of ResponseTag objects

Definition:

Tags of a supplementary network interface, including tag keys and tag values, which can be used to classify and identify resources. For details, see the tag objects.

Range:

N/A

project_id

String

Definition:

ID of the project that a supplementary network interface belongs to.

Range:

N/A

created_at

String

Definition:

Time when a supplementary network interface was created.

Range:

The value is a UTC time in the format of yyyy-MM-ddTHH:mm:ssZ.

allowed_address_pairs

Array of AllowedAddressPair objects

Definition:

IP/MAC address pair list of a supplementary network interface. For details, see the AllowedAddressPair object list.

Range:

N/A

state

String

Definition:

Status of a supplementary network interface.

Range:

  • NORMAL: The supplementary network interface is attached to an elastic network interface.

  • UNBOUND: The supplementary network interface is not attached to an elastic network interface.

instance_id

String

Definition:

ID of the cloud service instance that a supplementary network interface is attached to, for example, RDS instance ID.

Range:

N/A

instance_type

String

Definition:

Type of the cloud service instance that a supplementary network interface is attached to, for example, RDS.

Range:

N/A

scope

String

Definition:

Public network egress information of the site where a supplementary network interface works.

Range:

  • center: default value, indicating the central AZ.

  • AZ ID: a specific AZ

security_enabled

Boolean

Definition:

Whether the security option is enabled for a supplementary network interface. If the option is not enabled, the security group does not take effect.

Range:

N/A

Table 7 ResponseTag

Parameter

Type

Description

key

String

Definition:

Tag key.

Range:

  • A tag key can contain a maximum of 128 Unicode characters and cannot be left blank.

  • Each tag key of a resource must be unique.

  • The value can contain:

    • Letters

    • Digits

    • Special characters: underscores (_), hyphens (-)

    • Chinese characters

value

String

Definition:

Tag value.

Range:

  • Each value can contain a maximum of 255 Unicode characters and can be left blank.

  • The value can contain:

    • Letters

    • Digits

    • Special characters: underscores (_), hyphens (-), periods (.)

    • Chinese characters

Table 8 AllowedAddressPair

Parameter

Type

Description

ip_address

String

Definition:

IP address.

Constraints:

Configure a dedicated security group if a large CIDR block (subnet mask less than 24) is configured for parameter allowed_address_pairs.

Range:

Single IP address, for example, 192.168.21.25

A CIDR block, for example, 192.168.21.0/24

Default Value:

N/A

mac_address

String

Definition:

MAC address.

Constraints:

N/A

Range:

N/A

Default Value:

N/A

Example Requests

Create two supplementary network interfaces in batches. Set the virtual subnet ID to 115b5a84-31dc-4b1e-8de9-bf5a75d2c566, elastic network interface ID to 8b6c46f1-c68d-4bba-a922-2d97da185af5, and associated security group to 6727c950-9f01-47a2-a7aa-7d3686c4c95b.

POST https://{Endpoint}/v3/8c6fb137a48a428aaf9a0229dca4edb3/vpc/sub-network-interfaces/batch-create

{
  "sub_network_interface" : {
    "virsubnet_id" : "115b5a84-31dc-4b1e-8de9-bf5a75d2c566",
    "security_groups" : [ "6727c950-9f01-47a2-a7aa-7d3686c4c95b" ],
    "parent_id" : "8b6c46f1-c68d-4bba-a922-2d97da185af5"
  },
  "count" : 2
}

Example Responses

Status code: 201

Normal response to the POST operation. For more status codes, see Status Codes.

{
  "sub_network_interfaces" : [ {
    "id" : "4c2b455a-4c75-4c4d-bada-727be4d0f7b5",
    "project_id" : "8c6fb137a48a428aaf9a0229dca4edb3",
    "virsubnet_id" : "115b5a84-31dc-4b1e-8de9-bf5a75d2c566",
    "private_ip_address" : "192.168.0.160",
    "ipv6_ip_address" : null,
    "mac_address" : "fa:16:3e:26:7e:1e",
    "parent_device_id" : "285b2e45-2968-4f4c-8992-54e0d4c8da1d",
    "security_enabled" : true,
    "security_groups" : [ "6727c950-9f01-47a2-a7aa-7d3686c4c95b" ],
    "allowed_address_pairs" : [ ],
    "vpc_id" : "c10e1e02-9db2-4bd0-89ef-52536952627e",
    "instance_id" : "",
    "instance_type" : "",
    "description" : "",
    "parent_id" : "8b6c46f1-c68d-4bba-a922-2d97da185af5",
    "vlan_id" : 3413,
    "state" : "NORMAL",
    "tags" : [ ],
    "scope" : "center",
    "created_at" : "2025-02-10T08:21:16Z"
  }, {
    "id" : "a9ecbff0-d24f-493d-b62c-ee9b916db23a",
    "project_id" : "8c6fb137a48a428aaf9a0229dca4edb3",
    "virsubnet_id" : "115b5a84-31dc-4b1e-8de9-bf5a75d2c566",
    "private_ip_address" : "192.168.0.20",
    "ipv6_ip_address" : null,
    "mac_address" : "fa:16:3e:26:7e:92",
    "parent_device_id" : "285b2e45-2968-4f4c-8992-54e0d4c8da1d",
    "security_enabled" : true,
    "security_groups" : [ "6727c950-9f01-47a2-a7aa-7d3686c4c95b" ],
    "allowed_address_pairs" : [ ],
    "vpc_id" : "c10e1e02-9db2-4bd0-89ef-52536952627e",
    "instance_id" : "",
    "instance_type" : "",
    "description" : "",
    "parent_id" : "8b6c46f1-c68d-4bba-a922-2d97da185af5",
    "vlan_id" : 595,
    "state" : "NORMAL",
    "tags" : [ ],
    "scope" : "center",
    "created_at" : "2025-02-10T08:21:16Z"
  } ],
  "request_id" : "3f8a9620bea08c3e6ce0d4004d71f0c8"
}

SDK Sample Code

The SDK sample code is as follows.

Create two supplementary network interfaces in batches. Set the virtual subnet ID to 115b5a84-31dc-4b1e-8de9-bf5a75d2c566, elastic network interface ID to 8b6c46f1-c68d-4bba-a922-2d97da185af5, and associated security group to 6727c950-9f01-47a2-a7aa-7d3686c4c95b.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.vpc.v3.region.VpcRegion;
import com.huaweicloud.sdk.vpc.v3.*;
import com.huaweicloud.sdk.vpc.v3.model.*;

import java.util.List;
import java.util.ArrayList;

public class BatchCreateSubNetworkInterfaceSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                .withAk(ak)
                .withSk(sk);

        VpcClient client = VpcClient.newBuilder()
                .withCredential(auth)
                .withRegion(VpcRegion.valueOf("<YOUR REGION>"))
                .build();
        BatchCreateSubNetworkInterfaceRequest request = new BatchCreateSubNetworkInterfaceRequest();
        BatchCreateSubNetworkInterfaceRequestBody body = new BatchCreateSubNetworkInterfaceRequestBody();
        List<String> listSubNetworkInterfaceSecurityGroups = new ArrayList<>();
        listSubNetworkInterfaceSecurityGroups.add("6727c950-9f01-47a2-a7aa-7d3686c4c95b");
        BatchCreateSubNetworkInterfaceOption subNetworkInterfacebody = new BatchCreateSubNetworkInterfaceOption();
        subNetworkInterfacebody.withVirsubnetId("115b5a84-31dc-4b1e-8de9-bf5a75d2c566")
            .withParentId("8b6c46f1-c68d-4bba-a922-2d97da185af5")
            .withSecurityGroups(listSubNetworkInterfaceSecurityGroups);
        body.withCount(2);
        body.withSubNetworkInterface(subNetworkInterfacebody);
        request.withBody(body);
        try {
            BatchCreateSubNetworkInterfaceResponse response = client.batchCreateSubNetworkInterface(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

Create two supplementary network interfaces in batches. Set the virtual subnet ID to 115b5a84-31dc-4b1e-8de9-bf5a75d2c566, elastic network interface ID to 8b6c46f1-c68d-4bba-a922-2d97da185af5, and associated security group to 6727c950-9f01-47a2-a7aa-7d3686c4c95b.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkvpc.v3.region.vpc_region import VpcRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkvpc.v3 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId)

    client = VpcClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(VpcRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = BatchCreateSubNetworkInterfaceRequest()
        listSecurityGroupsSubNetworkInterface = [
            "6727c950-9f01-47a2-a7aa-7d3686c4c95b"
        ]
        subNetworkInterfacebody = BatchCreateSubNetworkInterfaceOption(
            virsubnet_id="115b5a84-31dc-4b1e-8de9-bf5a75d2c566",
            parent_id="8b6c46f1-c68d-4bba-a922-2d97da185af5",
            security_groups=listSecurityGroupsSubNetworkInterface
        )
        request.body = BatchCreateSubNetworkInterfaceRequestBody(
            count=2,
            sub_network_interface=subNetworkInterfacebody
        )
        response = client.batch_create_sub_network_interface(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

Create two supplementary network interfaces in batches. Set the virtual subnet ID to 115b5a84-31dc-4b1e-8de9-bf5a75d2c566, elastic network interface ID to 8b6c46f1-c68d-4bba-a922-2d97da185af5, and associated security group to 6727c950-9f01-47a2-a7aa-7d3686c4c95b.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    vpc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpc/v3/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        Build()

    client := vpc.NewVpcClient(
        vpc.VpcClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.BatchCreateSubNetworkInterfaceRequest{}
	var listSecurityGroupsSubNetworkInterface = []string{
        "6727c950-9f01-47a2-a7aa-7d3686c4c95b",
    }
	subNetworkInterfacebody := &model.BatchCreateSubNetworkInterfaceOption{
		VirsubnetId: "115b5a84-31dc-4b1e-8de9-bf5a75d2c566",
		ParentId: "8b6c46f1-c68d-4bba-a922-2d97da185af5",
		SecurityGroups: &listSecurityGroupsSubNetworkInterface,
	}
	request.Body = &model.BatchCreateSubNetworkInterfaceRequestBody{
		Count: int32(2),
		SubNetworkInterface: subNetworkInterfacebody,
	}
	response, err := client.BatchCreateSubNetworkInterface(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

201

Normal response to the POST operation. For more status codes, see Status Codes.

Error Codes

See Error Codes.