Create instance
Updated at:2025-10-20
Prerequisites
Creating an instance requires real-name certification. Users who have not completed real-name certification can proceed to the Personal Certification or Enterprise Certification sections under Security Certification in the Baidu AI Cloud’s console for certification.
BCC instances
-
Notes for billing:
- To create a postpaid instance, the account's cash balance combined with general coupons must exceed 100. For prepaid instances, the account's cash balance must at least match the cost of the instance.
- Specify the public IP bandwidth during creation, with charges based on the selected bandwidth.
-
Notes for instances:
- Determine the virtual machine type to be created using the spec field. Use the instance package specification list API to view available instance packages and their specifications.
- A single instance cannot simultaneously include both GPU and FPGA cards. When purchasing an instance with GPU or FPGA cards, specify the number of these cards to be included via the cardCount field.
-
Notes for storage:
- When creating an instance, you can specify the system disk size within the range of [40 to 500] GB. For available system disk types, refer to [StorageType](BCC/API Reference/Appendix.md#StorageType).
- The system disk added during instance creation is fixed and cannot be modified afterward. It also cannot be created or added separately.
- The system disk cannot be attached, detached, or deleted.
- When creating CDS system disks and data disks, disk sizes can be chosen in 1 GB increments.
- By default, an instance can attach up to five cloud disk servers.
- The system disk of a BCC instance cannot exceed 500 GB in size.
- Each instance can purchase only one temporary data disk, which defaults to the hp1 type.
- When creating a storage-optimized instance, a temporary data disk is mandatory. Specify the size of the temporary data disk through the ephemeralDisks field; the default is an NVMe-type data disk, and no value needs to be provided.
-
Notes for network:
- BCC instances support user-defined security groups and subnets, both of which must be specified within the same VPC. If no security group or subnet is provided, the instance will automatically join the system's default security group and subnet when creating a dedicated instance.
-
Other notes:
- Batch creation is supported. If any instance fails during batch creation, all instances will be rolled back, resulting in no successful creations. If CDS is included in the creation, it will also be rolled back.
- The creation API is asynchronous. Instance status can be queried using the [Query Specified Instance Details](BCC/API Reference/Instance Related Interfaces/Query the details of a specified instance.md) API.
Request
Request structure
Plain Text
1POST /v{version}/instanceBySpec?clientToken={clientToken} HTTP/1.1
2Host: bcc.bj.baidubce.com
3Authorization: authorization string
4
5{
6 "spec": spec,
7 "rootDiskSizeInGb":rootDiskSizeInGb,
8 "rootDiskStorageType":"rootDiskStorageType",
9 "adminPass": "adminPass",
10 "ephemeralDisks": [
11 {
12 "storageType": storageType,
13 "sizeInGB": size
14 },
15 {
16 "storageType": storageType,
17 "sizeInGB": size
18 }
19 ],
20 "createCdsList": [
21 {
22 "storageType": storageType,
23 "cdsSizeInGB": cdsSizeInGB,
24 "snapshotId": snapshotId
25 }
26 ],
27 "name": "name",
28 "hostname": "hostname",
29 "autoSeqSuffix": autoSeqSuffix,
30 "isOpenHostnameDomain": isOpenHostnameDomain,
31 "imageId": "imageId",
32 "networkCapacityInMbps": networkCapacityInMbps,
33 "eipName": "eipName",
34 "autoRenewTimeUnit": "autoRenewTimeUnit",
35 "autoRenewTime": autoRenewTime,
36 "internetChargeType": internetChargeType,
37 "dedicatedHostId": dedicatedHostId,
38 "purchaseCount": purchaseCount,
39 "billing":{
40 "paymentTiming": paymentTiming,
41 "reservation": {
42 "reservationLength": reservationLength
43 }
44 },
45 "zoneName": zoneName,
46 "subnetId": subnetId,
47 "securityGroupId": securityGroupId,
48 "relationTag": relationTag,
49 "isOpenIpv6": isOpenIpv6,
50 "tags": [
51 {
52 "tagKey": tagKey,
53 "tagValue": tagValue
54 }
55 ],
56 "userData": "",
57 "keypairId": keypairId,
58 "aspId": "aspId",
59 "specId": "specId",
60 "resGroupId": "resGroupId",
61 "ehcClusterId": "ehcClusterId"
62}
Request headers
There are no special headers required beyond the common headers.
Request parameters
| Parameter name | Types | Whether required | Parameter location | Description |
|---|---|---|---|---|
| version | String | Yes | URL parameter | API version number |
| clientToken | String | Yes | Query | Idempotence Token, which is an ASCII string with a length not exceeding 64 bits. For details, see the [Link](#ClientToken Idempotency Support) |
| imageId | String | Yes | RequestBody | The image ID for the virtual machine instance to be created. You can select and retrieve the required image ID by calling the Query Image List API. |
| spec | String | No | RequestBody | The package specification for the virtual machine instance to be created (using this parameter can replace filling in instanceType, cpuCount, memoryCapacityInGB, gpuCard, fpgaCard, cardCount and ephemeralDisks parameters). Use the Use Instance Package Specification List API to view available instance packages and their specifications. |
| rootDiskSizeInGb | int | No | RequestBody | Size of system disk for virtual machine instance to be created, in GB. The default is 40 GB, with a range of [40 to 100]GB. Sizes exceeding 40 GB are charged according to cloud disk server prices. Note that the specified system disk size must meet the minimum disk space requirements of the image being used. |
| rootDiskStorageType | String | No | RequestBody | Medium of the system disk for the virtual machine instance to be created. By default, a high-performance cloud disk server (hp1) is used. The disk type for the system disk can be specified; refer to [StorageType](BCC/API Reference/Appendix.md#StorageType). |
| ephemeralDisks | List<[EphemeralDisk](BCC/API Reference/Appendix.md#EphemeralDisk)> | No | RequestBody | BCC instances are limited to using a single local disk, which must use the default disk type, requiring a specified disk size. This parameter does not apply when creating FPGA or GPU instances, as they automatically use local disks of predefined sizes. |
| createCdsList | List<[CreateCdsModel](BCC/API Reference/Appendix.md#CreateCdsModel)> | No | RequestBody | List of CDS disks to be created. For specific data formats, refer to [CreateCdsModel](BCC/API Reference/Appendix.md#CreateCdsModel) below |
| networkCapacityInMbps | int | No | RequestBody | Public network bandwidth in Mbps, an integer from 0 to 200. Setting it to 0 means no public IP will be assigned, with a default of 0 Mbps. |
| eipName | String | No | RequestBody | Name Specifications: Length: 1–65 bytes, must start with a letter. Permitted characters include letters, numbers, and -_/. If no name is specified, one will be automatically generated. |
| internetChargeType | String | No | RequestBody | Charge type for public network bandwidth. Optional parameters are detailed in [internetChargeType](BCC/API Reference/Appendix.md#InternetChargeType). If internetChargeType is not specified, the default bill type is the same as that for BCC instances: prepaid instances default to subscription bandwidth billing, while postpaid instances default to billing based on actual bandwidth use. |
| purchaseCount | int | No | RequestBody | Count of virtual machine instances to be created (purchased) in batch, which must be an integer greater than 0 (optional). The default is 1 |
| name | String | No | RequestBody | Name of the virtual machine (optional) By default, no name is specified. If a name is specified: For batch creation, the name serves as a prefix. The backend will append a suffix, generated as follows: name{-sequence number}. If no name is specified, it will be automatically generated as follows: {instance-eight-digit random string-sequence number}. Note: The random string is generated from 0~9a~z; the sequence number increments according to the magnitude of the count. If the count is 100, the sequence number increments from 000~100; if the count is 10, it increments from 00~10. Support uppercase and lowercase letters, numbers, Chinese characters, and -_/special characters, starting with a letter and a length of 1-65. |
| hostname | String | No | RequestBody | Hostname of the virtual machine (optional). By default, no hostname is specified. If a hostname is specified: For batch creation, the hostname serves as a prefix. The backend will append a suffix, generated as follows: name{-sequence number}. If no name is specified, it will be automatically generated as follows: {instance-eight-digit random string-sequence number}. Note: The random string is generated from 0~9a~z; the sequence number increments according to the magnitude of the count. If the count is 100, the sequence number increments from 000~100; if the count is 10, it increments from 00~10. Only support lowercase letters, numbers and -_/special characters, starting with a letter and a length of 2-64. Not contain consecutive special characters and not start or end with a special character. |
| autoSeqSuffix | boolean | No | RequestBody | Whether to automatically generate ordered suffixes for name and hostname (optional). Yes: true No: false |
| isOpenHostnameDomain | boolean | No | RequestBody | Whether to automatically generate the hostname domain (optional) Yes: true No: false |
| adminPass | String | No | RequestBody | Instance administrator password to be specified: 8-16 characters; it must contain English letters, numbers, and symbols (limited to !@#$%^*()) simultaneously. Password must be encrypted during transmission. The password must be encrypted for transmission |
| billing | [Billing](BCC/API Reference/Appendix.md#Billing) | Yes | RequestBody | Order and billing-related parameters |
| zoneName | String | No | RequestBody | Specify zone information. By default, this field is left blank, and the system selects a zone automatically. The list of available zones can be queried through the Query Availability Zone List API. The naming convention for zoneName follows the format "lowercase country-region-availability zone sequence," such as "cn-bj-a" for Beijing zone A. For dedicated instances, the zone of the dedicated server is used, so this field does not need to be specified. |
| subnetId | String | No | RequestBody | Specify subnet information. If empty, it is the default subnet |
| securityGroupId | String | No | RequestBody | Deprecated. Specify security group information. If empty, the default security group will be used. |
| securityGroupIds | No | RequestBody | Specify security group information list. If empty, the default security group will be used. | |
| enterpriseSecurityGroupIds | No | RequestBody | Specify a list of enterprise security group information. If not empty, securityGroupIds is invalid; if empty, the default security group will be used | |
| eniIds | No | RequestBody | A list of short IDs for elastic network interfaces to be attached. During batch creation, elastic network interfaces will be distributed evenly across instances based on the count provided. Ensure that the number of elastic network interface IDs given is a multiple of the number of instances and that the count of ENIs per instance does not exceed the maximum allowed. Currently, elastic bare metal (EBC) instances are not supported. The maximum count of eniIds is 5,000. | |
| relationTag | boolean | No | RequestBody | Indicate whether to apply tags uniformly to related resources like CDS (data disks), EIPs, snapshots, and snapshot chains. The default setting is false. |
| isOpenIpv6 | boolean | No | RequestBody | Whether to enable IPv6 for the instance to be created. IPv6 can only be enabled if both the image and subnet support it. True indicates enable, false indicates disable, and not specifying the parameter indicates automatic adaptation to the IPv6 support status of the image and subnet |
| tags | List<[TagModel](BCC/API Reference/Appendix.md#TagModel)> | No | RequestBody | List of tags to be created. For the specific data format, refer to the following [TagModel](BCC/API Reference/Appendix.md#TagModel) |
| keypairId | String | No | RequestBody | ID of the key pair to be bound to the instance to be created |
| autoRenewTimeUnit | String | No | RequestBody | Monthly or yearly payment. "month" for monthly, "year" for yearly |
| autoRenewTime | int | No | RequestBody | Auto-renewal period: 1-9 for monthly renewal, 1-3 for yearly renewal |
| cdsAutoRenew | boolean | No | RequestBody | [This parameter is deprecated; CDS automatic renewal remains consistent with BCC.] Whether CDS automatically renews: Yes: true No: false |
| aspId | String | No | RequestBody | Automatic snapshot policy ID |
| bidModel | String | No | RequestBody | Bidding model for spot instance; market price: "market"; custom: "custom". Refer to [BidModel](BCC/API Reference/Appendix.md#BidModel) |
| bidPrice | String | No | RequestBody | Specify the bidding price for spot instances, in RMB per minute. For custom bidding, creation will not proceed if the bidding price is below the market price. This parameter is valid only when bidModel='custom'. |
| dedicatedHostId | String | No | RequestBody | The ID of the dedicated server, required when specifying the placement of the virtual machine. |
| deployId | String | No | RequestBody | Specify IDs of deployment groups where the instance is located |
| deployIdList | No | RequestBody | Specify the list of IDs of deployment groups where the instance is located | |
| userData | String | No | RequestBody | If the instance complies with the requirements for instance custom data, you can specify UserData information. Since UserData is not encrypted when transmitted via API requests, it is advised not to include confidential details such as passwords or private keys in plaintext. If necessary, encrypt the data first, then encode it in Base64 before specifying it. Ensure the data is decrypted in the same way within the instance. |
| specId | String | No | RequestBody | Instance family |
| deletionProtection | int | No | RequestBody | Instance deletion protection: 0 (default) for disabled, 1 for enabled. When enabled, manual release of the virtual machine is prohibited |
| isOpenHostEye | Boolean | No | RequestBody | Whether to enable host security: true for "enabled", false for "disabled". It defaults to "enabled" if it is not specified |
| hosteyeType | String | No | RequestBody | Host security type; take effect when isOpenHostEye is true: "enterprise" indicates enterprise-level host security is enabled; "open" or "not specified" indicates basic host security is enabled |
| resGroupId | String | No | RequestBody | Specify the resource group ID to which the instance is to be bound |
| enableJumboFrame | boolean | No | RequestBody | Specify whether to enable Jumbo frames. Default: false. True: enable; false: disable. Note: Only instances that support Jumbo frames can enable this feature. |
| enableHt | boolean | No | RequestBody | Whether to enable HT for EBC use. Default: true. Enable: true; disable: false |
| dataPartitionType | String | No | RequestBody | Data disk file format, options: xfs, ext4 |
| rootPartitionType | String | No | RequestBody | System disk file format, options: xfs, ext4 |
| fileSystems | List<[FileSystemModel](BCC/API Reference/Appendix.md#FileSystemModel)> | No | RequestBody | Specify a list of CFS file systems to be mounted by the instance |
| disableRootDiskSerial | Boolean | No | RequestBody | Choose whether to hide the system disk SN during instance creation. Default: false. True: hide; false: do not hide. |
| internalIps | No | RequestBody | List of intranet IPs | |
| networkPurchaseType | String | No | RequestBody | EIP line type, including standard BGP (BGP) and enhanced BGP (BGP_S), defaulting to standard BGP |
| ehcClusterId | String | No | RequestBody | Optional for creating a RoCE instance; if empty, the default EHC cluster will be used |
| cpuThreadConfig | String | No | RequestBody | Adjust the count of threads per physical core (vCPU), essentially corresponding to whether the hyper-threading capability of each processor is enabled. Value range: 1, 2 Note: 1. By default, it is default to 2 for Baidu AI Cloud’s instances. 2. Only EBC instance with Intel 7th generation or above and AMD 3rd generation or above supports setting the CPU thread count. |
| numaConfig | String | No | RequestBody | Adjust the NUMA configuration of the CPU, with different meanings for values depending on the processor platform. 1. Intel platform: 0 represents disabling NUMA features, 1 represents enabling NUMA features. 2. AMD platform: mainly affect the NPS (Nodes Per Socket) configuration; possible values are 0, 1, 2, 4, auto, corresponding to NPS0, NPS1, NPS2, NPS4 and automatic, respectively. Note: 1. By default, Baidu AI Cloud’s instances are configured with NUMA optimization enabled (Intel instances) or NPS1 (AMD instances), i.e., a default of 1. 2. Only EBC instance with Intel 7th generation or above and AMD 3rd generation or above supports setting NUMA option. |
Response
Response headers
No special headers are required beyond the standard ones.
Response parameters
| Parameter name | Types | Description |
|---|---|---|
| instanceIds | VM Instance ID Collection: Complies with BCE standards, accepting fixed-length strings comprising uppercase/lowercase letters, numbers, hyphens (-), and underscores (_). | |
| warningList | Warning information generated during virtual machine creation |
Error codes
| Error code | Error description | HTTP status code | Chinese explanation |
|---|---|---|---|
| Instance.InsufficientRootDiskSize | Not enough root disk size. | 400 | The image used is too large, and the system disk size is insufficient |
| Instance.InvalidateRootDiskStorageType | Invalidate root disk storage type. | 400 | Invalid system disk medium |
| Instance.InstanceBeBanned | The instance is banned, contact technical support for assistance. | 403 | The BCC service has been banned |
| Instance.GlobalInstanceQuotaLimitExceeded | Quota exceeds limit for regional postpaid instances pool, contact technical support for further assistance. | 413 | The count of postpaid virtual machines exceeds the pre-sale quota limit for the current region |
| Instance.InstanceQuotaLimitExceeded | Quota exceeds limit. | 413 | The count of instances exceeds the limit |
| Instance.EipQuotaLimitExceeded | The number of eip will exceed the limit. | 413 | The count of EIPs exceeds the limit during purchase |
| Instance.InvalidateConfiguration | Invalidate cpu memory configuration. | 400 | Invalid virtual machine configuration |
| BadRequest | spec is invalid. | 400 | The package specification parameters for the virtual machine instance to be created are invalid |
| Instance.MKTImageInstanceNotSupportCreateSnapshotException | Instance with mkt image not support create system snapshot. | 403 | Market images do not support creating system snapshots |
Example
Request example (creating an instance by specifying the instance package specification spec)
Plain Text
1POST /v2/instanceBySpec?clientToken=be31b98c-5e41-4838-9830-9be700de5a20 HTTP/1.1
2Host: bcc.bj.baidubce.com
3ContentType: application/json
4Authorization: bce-auth-v1/f81d3b34e48048fbb2634dc7882d7e21/2015-08-11T04:17:29Z/3600/host/74c506f68c65e26c633bfa104c863fffac5190fdec1ec24b7c03eb5d67d2e1de
5
6{
7 "spec": "bcc.g3.c4m12",
8 "createCdsList": [
9 {
10 "storageType": "std1",
11 "cdsSizeInGB": 5
12 }
13 ],
14 "name": "example",
15 "imageId": "m-mRjO3cjs",
16 "networkCapacityInMbps": 0,
17 "purchaseCount": 1,
18 "billing":{
19 "paymentTiming":"Prepaid",
20 "reservation": {
21 "reservationLength": 1
22 }
23 }
24}
Response example
Plain Text
1HTTP/1.1 200 OK
2x-bce-request-id: 1214cca7-4ad5-451d-9215-71cb844c0a50
3Date: Wed, 03 Dec 2014 06:42:19 GMT
4Content-Type: application/json;charset=UTF-8
5Server: BWS
6
7{
8 "instanceIds": [
9 "i-T1I3OtUO"
10 ],
11 "warningList": [
12 "warning info"
13 ]
14}
