[Yandex Cloud documentation](../../../index.md) > [Yandex Compute Cloud](../../index.md) > API reference > [REST](../index.md) > [Image](index.md) > Create

# Compute Cloud API, REST: Image.Create

Creates an image in the specified folder.
You can create an image from a disk, snapshot, other image or URI.
Method starts an asynchronous operation that can be cancelled while it is in progress.

## HTTP request

```
POST https://compute.api.cloud.yandex.net/compute/v1/images
```

## Body parameters {#yandex.cloud.compute.v1.CreateImageRequest}

```json
{
  "folderId": "string",
  "name": "string",
  "description": "string",
  "labels": "object",
  "family": "string",
  "minDiskSize": "string",
  "productIds": [
    "string"
  ],
  // Includes only one of the fields `imageId`, `diskId`, `snapshotId`, `uri`
  "imageId": "string",
  "diskId": "string",
  "snapshotId": "string",
  "uri": "string",
  // end of the list of possible fields
  "os": {
    "type": "string",
    "nvidia": {
      "driver": "string"
    }
  },
  "pooled": "boolean",
  "hardwareGeneration": {
    // Includes only one of the fields `legacyFeatures`, `generation2Features`
    "legacyFeatures": {
      "pciTopology": "string"
    },
    "generation2Features": "object"
    // end of the list of possible fields
  }
}
```

#|
||Field | Description ||
|| folderId | **string**

ID of the folder to create an image in.
To get the folder ID, use a [yandex.cloud.resourcemanager.v1.FolderService.List](../../../resource-manager/api-ref/Folder/list.md#List) request.
The length must be less than or equal to 50.
This field is required. ||
|| name | **string**

Name of the image.
The value must match the regular expression: ```|[a-z]([-_a-z0-9]{0,61}[a-z0-9])?```. ||
|| description | **string**

Description of the image.
The length must be less than or equal to 256. ||
|| labels | **object** (map<**string**, **string**>)

Resource labels as `key:value` pairs.
Each map key must match the regular expression: `[a-z][-_./\\@0-9a-z]*`.
Each map value must match the regular expression: `[-_./\\@0-9a-z]*`.
The length of each map key must be between 1 and 63.
The length of each map value must be less than or equal to 63.
The number of elements must be less than or equal to 64. ||
|| family | **string**

The name of the image family to which this image belongs. For more information, see [Image family](../../concepts/image.md#family).
To get an information about the most recent image from a family, use a [ImageService.GetLatestByFamily](getLatestByFamily.md#GetLatestByFamily) request.
The value must match the regular expression: ```|[a-z][-a-z0-9]{1,61}[a-z0-9]```. ||
|| minDiskSize | **string** (int64)

Minimum size of the disk that will be created from this image.
Specified in bytes. Should be more than the volume of source data.
The value must be between 4194304 and 4398046511104. ||
|| productIds[] | **string**

License IDs that indicate which licenses are attached to this resource.
License IDs are used to calculate additional charges for the use of the virtual machine.
The correct license ID is generated by the platform. IDs are inherited by new resources created from this resource.
If you know the license IDs, specify them when you create the image.
For example, if you create a disk image using a third-party utility and load it into Object Storage, the license IDs will be lost.
You can specify them in this request.
The length of each element must be less than or equal to 50. ||
|| imageId | **string**

ID of the source image to create the new image from.
The length must be less than or equal to 50.

Includes only one of the fields `imageId`, `diskId`, `snapshotId`, `uri`.

Only one field must by specified. ||
|| diskId | **string**

ID of the disk to create the image from.
The length must be less than or equal to 50.

Includes only one of the fields `imageId`, `diskId`, `snapshotId`, `uri`.

Only one field must by specified. ||
|| snapshotId | **string**

ID of the snapshot to create the image from.
The length must be less than or equal to 50.

Includes only one of the fields `imageId`, `diskId`, `snapshotId`, `uri`.

Only one field must by specified. ||
|| uri | **string**

URI of the source image to create the new image from.
Currently only supports links to images that are stored in Object Storage.
Must be a valid [pre-signed URL](../../../storage/concepts/pre-signed-urls.md).
Currently only supports Qcow2, VMDK, and RAW image formats.

Includes only one of the fields `imageId`, `diskId`, `snapshotId`, `uri`.

Only one field must by specified. ||
|| os | **[Os](#yandex.cloud.compute.v1.Os)**

Operating system that is contained in the image.
If not specified and you used the `image_id` or `disk_id` field to set the source, then the value can be inherited from the source resource. ||
|| pooled | **boolean**

When true, an image pool will be created for fast creation disks from the image. ||
|| hardwareGeneration | **[HardwareGeneration](#yandex.cloud.compute.v1.HardwareGeneration)**

Specify the overrides to hardware_generation of a source disk, image or snapshot,
or to the default values if the source does not define it. ||
|#

## Os {#yandex.cloud.compute.v1.Os}

#|
||Field | Description ||
|| type | **enum** (Type)

Operating system type. The default is `LINUX`.

This field is used to correctly emulate a vCPU and calculate the cost of using an instance.

- `LINUX`: Linux operating system.
- `WINDOWS`: Windows operating system. ||
|| nvidia | **[Nvidia](#yandex.cloud.compute.v1.Nvidia)**

Gpu type.
This field is used to correctly select a node with a host gpu that matches the gpu from here, in order to run the VM on it. ||
|#

## Nvidia {#yandex.cloud.compute.v1.Nvidia}

#|
||Field | Description ||
|| driver | **string**

Gpu driver version. ||
|#

## HardwareGeneration {#yandex.cloud.compute.v1.HardwareGeneration}

A set of features, specific to a particular Compute hardware generation.
They are not necessary supported by every host OS or distro, thus they are fixed to an image
and are applied to all instances created with it as their boot disk image.
These features significantly determine how the instance is created, thus cannot be changed after the fact.

#|
||Field | Description ||
|| legacyFeatures | **[LegacyHardwareFeatures](#yandex.cloud.compute.v1.LegacyHardwareFeatures)**

Includes only one of the fields `legacyFeatures`, `generation2Features`. ||
|| generation2Features | **object**

Includes only one of the fields `legacyFeatures`, `generation2Features`. ||
|#

## LegacyHardwareFeatures {#yandex.cloud.compute.v1.LegacyHardwareFeatures}

A first hardware generation, by default compatible with all legacy images.
Allows switching to PCI_TOPOLOGY_V2 and back.

#|
||Field | Description ||
|| pciTopology | **enum** (PCITopology)

- `PCI_TOPOLOGY_V1`
- `PCI_TOPOLOGY_V2` ||
|#

## Response {#yandex.cloud.operation.Operation}

**HTTP Code: 200 - OK**

```json
{
  "id": "string",
  "description": "string",
  "createdAt": "string",
  "createdBy": "string",
  "modifiedAt": "string",
  "done": "boolean",
  "metadata": "object",
  // Includes only one of the fields `error`, `response`
  "error": {
    "code": "integer",
    "message": "string",
    "details": [
      "object"
    ]
  },
  "response": "object"
  // end of the list of possible fields
}
```

An Operation resource. For more information, see [Operation](../../../api-design-guide/concepts/operation.md).

#|
||Field | Description ||
|| id | **string**

ID of the operation. ||
|| description | **string**

Description of the operation. 0-256 characters long. ||
|| createdAt | **string** (date-time)

Creation timestamp.

String in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. The range of possible values is from
`0001-01-01T00:00:00Z` to `9999-12-31T23:59:59.999999999Z`, i.e. from 0 to 9 digits for fractions of a second.

To work with values in this field, use the APIs described in the
[Protocol Buffers reference](https://developers.google.com/protocol-buffers/docs/reference/overview).
In some languages, built-in datetime utilities do not support nanosecond precision (9 digits). ||
|| createdBy | **string**

ID of the user or service account who initiated the operation. ||
|| modifiedAt | **string** (date-time)

The time when the Operation resource was last modified.

String in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. The range of possible values is from
`0001-01-01T00:00:00Z` to `9999-12-31T23:59:59.999999999Z`, i.e. from 0 to 9 digits for fractions of a second.

To work with values in this field, use the APIs described in the
[Protocol Buffers reference](https://developers.google.com/protocol-buffers/docs/reference/overview).
In some languages, built-in datetime utilities do not support nanosecond precision (9 digits). ||
|| done | **boolean**

If the value is `false`, it means the operation is still in progress.
If `true`, the operation is completed, and either `error` or `response` is available. ||
|| metadata | **object**

Service-specific metadata associated with the operation.
It typically contains the ID of the target resource that the operation is performed on.
Any method that returns a long-running operation should document the metadata type, if any. ||
|| error | **[Status](#google.rpc.Status)**

The error result of the operation in case of failure or cancellation.

Includes only one of the fields `error`, `response`.

The operation result.
If `done == false` and there was no failure detected, neither `error` nor `response` is set.
If `done == false` and there was a failure detected, `error` is set.
If `done == true`, exactly one of `error` or `response` is set. ||
|| response | **object**

The normal response of the operation in case of success.
If the original method returns no data on success, such as Delete,
the response is [google.protobuf.Empty](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Empty).
If the original method is the standard Create/Update,
the response should be the target resource of the operation.
Any method that returns a long-running operation should document the response type, if any.

Includes only one of the fields `error`, `response`.

The operation result.
If `done == false` and there was no failure detected, neither `error` nor `response` is set.
If `done == false` and there was a failure detected, `error` is set.
If `done == true`, exactly one of `error` or `response` is set. ||
|#

## Status {#google.rpc.Status}

The error result of the operation in case of failure or cancellation.

#|
||Field | Description ||
|| code | **integer** (int32)

Error code. An enum value of [google.rpc.Code](https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto). ||
|| message | **string**

An error message. ||
|| details[] | **object**

A list of messages that carry the error details. ||
|#