# Create an NIC Multi-Queue ready Virtual Machine (VM)

To create a VM with NIC Multi-Queue turned on using [<mark style="color:blue;">Cloud API</mark>](https://api.ionos.com/docs/cloud/v6/#tag/Servers), set the `nicMultiQueue` boolean property to `true` in your `/server` API request.

## Endpoint

Use the following endpoint to create an NIC Multi-Queue ready [<mark style="color:blue;">Virtual Machine (VM)</mark>](https://docs.ionos.com/cloud/support/general-information/glossary-of-terms#virtual-machine-vm): `https://api.ionos.com/cloudapi/v6/datacenters/{datacenterId}/servers`.

{% hint style="info" %}
**Note:** Remember to update the `datacenterId` and the `server-uuid` with relevant values.
{% endhint %}

## Request

```bash
curl --location \
--request POST 'https://api.ionos.com/cloudapi/v6/datacenters/fd16-e4-44-b9-daaaaah75/servers' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJraWQiO' \
--header 'Content-Type: application/json' \
--data-raw '{
    "properties": {
        "name": "My resource",
        "hostname": "myHostname",
        "cores": 4,
        "ram": 4096,
        "availabilityZone": "AUTO",
        "cpuFamily": "INTEL_ICELAKE",
        "type": "ENTERPRISE",
        "nicMultiQueue": true
    }
}'
```

{% tabs %}
{% tab title="Path Parameters" %}
Remember to update the `datacenterId` value with your data center's ID:

| **Path Parameter** | **Type** | **Description**                   | **Example**               |
| ------------------ | -------- | --------------------------------- | ------------------------- |
| `datacenterId`     | string   | The ID (UUID) of the data center. | `fd16-e4-44-b9-daaaaah75` |
| {% endtab %}       |          |                                   |                           |

{% tab title="Request Body Parameters" %}
Below is the list of mandatory body parameters for creating an NIC Multi-Queue ready VM:

| **Body Parameters**           | **Required** | **Type**                                         | **Description**                                                                                                                                                                                                                                                                                                                                                                  | **Example**                           |
| ----------------------------- | ------------ | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| `metadata`                    | no           | object                                           | Metadata                                                                                                                                                                                                                                                                                                                                                                         | `{}`                                  |
| `properties.name`             | yes          | string                                           | The name of the resource.                                                                                                                                                                                                                                                                                                                                                        | `My resource`                         |
| `properties.hostname`         | yes          | string                                           | The hostname of the resource. Allowed characters are `a-z`, `0-9` and `-` (minus). Hostname should not begin with a minus and should not be longer than 63 characters.                                                                                                                                                                                                           | `Tunnel connecting site A to site B.` |
| `properties.cores`            | yes          | integer                                          | The total number of cores for the server.                                                                                                                                                                                                                                                                                                                                        | `203.0.113.1`                         |
| `properties.ram`              | yes          | integer                                          | The memory size for the server in MB, such as `2048`. Size must be specified in multiples of `256` MB with a minimum of `256` MB; however, if you set `ramHotPlug` to `TRUE` then you must use a minimum of `1024` MB. If you set the RAM size more than `240GB`, then `ramHotPlug` will be set to `FALSE` and cannot be set to `TRUE` unless RAM size is not less than `240GB`. | `4096`                                |
| `properties.availabilityZone` | yes          | string. **Enum:** `AUTO` `ZONE_1` `ZONE_2`       | The availability zone in which the server should be provisioned.                                                                                                                                                                                                                                                                                                                 | `AUTO`                                |
| `properties.cpuFamily`        | yes          | string                                           | CPU architecture on which server gets provisioned; not all CPU architectures are available in all datacenter regions; available CPU architectures can be retrieved from the datacenter resource; must not be provided for VCPU servers. If the field is omitted from the request or the value is empty or null, an available CPU architecture will be automatically selected.    | `INTEL_ICELAKE`                       |
| `properties.type`             | yes          | string. **Server type:** `ENTERPRISE` or `VCPU`. | `ENTERPRISE`                                                                                                                                                                                                                                                                                                                                                                     |                                       |
| `properties.nicMultiQueue`    | yes          | boolean                                          | Setting the property to `true` turns the feature on while setting it to `false` sets it to off on all NICs of this server. This feature is beneficial when the NICs are experiencing performance issues, such as low throughput. Activating this feature will also initiate a server restart.                                                                                    | `true`                                |
| {% endtab %}                  |              |                                                  |                                                                                                                                                                                                                                                                                                                                                                                  |                                       |

{% tab title="Request Header Parameters" %}
To make authenticated requests to the API, the following fields are mandatory in the request header:

| **Header Parameters** | **Required** | **Type** | **Description**                                                                  |
| --------------------- | ------------ | -------- | -------------------------------------------------------------------------------- |
| `Authorization`       | yes          | string   | The bearer token to allow requests to authenticate using a JSON Web Token (JWT). |
| `Content-Type`        | yes          | string   | Set this to `application/json`.                                                  |
| {% endtab %}          |              |          |                                                                                  |
| {% endtabs %}         |              |          |                                                                                  |

## Response

**201 Successful operation**

```json
{
"id": "15f67991-0f51-4efc-a8ad-ef1fb31a480c",
"type": "server",
"href": "<RESOURCE-URI>",
"metadata": {
"etag": "45480eb3fbfc31f1d916c1eaa4abdcc3",
"createdDate": "2015-12-04T14:34:09.809Z",
"createdBy": "user@example.com",
"createdByUserId": "user@example.com",
"lastModifiedDate": "2015-12-04T14:34:09.809Z",
"lastModifiedBy": "user@example.com",
"lastModifiedByUserId": "63cef532-26fe-4a64-a4e0-de7c8a506c90",
"state": "AVAILABLE"
},
"properties": {
"name": "My resource",
"hostname": "myHostname",
"cores": 4,
"ram": 4096,
"availabilityZone": "AUTO",
"vmState": "RUNNING",
"cpuFamily": "INTEL_ICELAKE",
"type": "ENTERPRISE",
"nicMultiQueue": true
}
}
```
