> ## Documentation Index
> Fetch the complete documentation index at: https://gcore.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create instance

> Create an instance with specified configuration.

How to get access:

For Linux,

 - Use the `user_data` field to provide a
[cloud-init script](https://cloudinit.readthedocs.io/en/latest/reference/examples.html)
in base64 to apply configurations to the instance.
- Specify the `username` and `password` to create a new user.
- When only `password` is provided, it is set as the password for the default user of the image.
- The `user_data` is ignored when the `password` is specified.


For Windows,

 - Use the `user_data` field to provide a
[cloudbase-init script](https://cloudbase-init.readthedocs.io/en/latest/userdata.html#cloud-config)
in base64 to create new users on Windows.
- Use the `password` field to set the password for the 'Admin' user on Windows.
- The password of the Admin user cannot be updated via `user_data`.
- The `username` cannot be specified in the request.



## OpenAPI

````yaml /api-reference/services_documented/cloud_api.yaml post /cloud/v2/instances/{project_id}/{region_id}
openapi: 3.1.0
info:
  title: Gcore OpenAPI – Cloud API
  description: >-
    This OpenAPI is an aggregated OpenAPI specification that unifies all Gcore
    products into a single file. It covers Cloud, CDN, DNS, WAAP, DDoS
    Protection, Object Storage, Streaming, and FastEdge services.
  version: '2026-05-07T20:33:46.548242+00:00'
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: Bare Metal
    x-displayName: Bare Metal
  - name: Container as a Service
    x-displayName: Container as a Service
  - name: Cost Reports
    x-displayName: Cost Reports
  - name: DDoS Protection
    x-displayName: DDoS Protection
  - name: Everywhere Inference
    x-displayName: Everywhere Inference
  - name: Everywhere Inference Apps
    x-displayName: Everywhere Inference Apps
  - name: File Shares
    x-displayName: File Shares
  - name: Floating IPs
    x-displayName: Floating IPs
  - name: Function as a Service
    x-displayName: Function as a Service
  - name: GPU Bare Metal
    x-displayName: GPU Bare Metal
  - name: GPU Virtual
    x-displayName: GPU Virtual
  - name: IP Ranges
    x-displayName: IP Ranges
  - name: Images
    x-displayName: Images
  - name: Instances
    x-displayName: Instances
  - name: Load Balancers
    x-displayName: Load Balancers
  - name: Logging
    x-displayName: Logging
  - name: Managed Kubernetes
    x-displayName: Managed Kubernetes
  - name: Managed PostgreSQL
    x-displayName: Managed PostgreSQL
  - name: Networks
    x-displayName: Networks
  - name: Placement Groups
    x-displayName: Placement Groups
  - name: Projects
    x-displayName: Projects
  - name: Quotas
    x-displayName: Quotas
  - name: Regions
    x-displayName: Regions
  - name: Registry
    x-displayName: Registry
  - name: Reservations
    x-displayName: Reservations
  - name: Reserved IPs
    x-displayName: Reserved IPs
  - name: Routers
    x-displayName: Routers
  - name: SSH Keys
    x-displayName: SSH Keys
  - name: Secrets
    x-displayName: Secrets
  - name: Security Groups
    x-displayName: Security Groups
  - name: Snapshot Schedules
    x-displayName: Snapshot Schedules
  - name: Snapshots
    x-displayName: Snapshots
  - name: Tasks
    x-displayName: Tasks
  - name: User Actions
    x-displayName: User Actions
  - name: User Role Assignments
    x-displayName: User Role Assignments
  - name: Volumes
    x-displayName: Volumes
paths:
  /cloud/v2/instances/{project_id}/{region_id}:
    post:
      tags:
        - Instances
      summary: Create instance
      description: >-
        Create an instance with specified configuration.


        How to get access:


        For Linux,

         - Use the `user_data` field to provide a
        [cloud-init
        script](https://cloudinit.readthedocs.io/en/latest/reference/examples.html)

        in base64 to apply configurations to the instance.

        - Specify the `username` and `password` to create a new user.

        - When only `password` is provided, it is set as the password for the
        default user of the image.

        - The `user_data` is ignored when the `password` is specified.



        For Windows,

         - Use the `user_data` field to provide a
        [cloudbase-init
        script](https://cloudbase-init.readthedocs.io/en/latest/userdata.html#cloud-config)

        in base64 to create new users on Windows.

        - Use the `password` field to set the password for the 'Admin' user on
        Windows.

        - The password of the Admin user cannot be updated via `user_data`.

        - The `username` cannot be specified in the request.
      operationId: InstanceCreateSetV2.post
      parameters:
        - in: path
          name: project_id
          required: true
          description: Project ID
          schema:
            description: Project ID
            example: 1
            examples:
              - 1
            title: Project Id
            type: integer
        - in: path
          name: region_id
          required: true
          description: Region ID
          schema:
            description: Region ID
            example: 1
            examples:
              - 1
            title: Region Id
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInstanceSerializerV2'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDsSerializer'
      x-codeSamples:
        - lang: Python
          source: |-
            import os
            from gcore import Gcore

            client = Gcore(
                api_key=os.environ.get("GCORE_API_KEY"),  # This is the default and can be omitted
            )
            task_id_list = client.cloud.instances.create(
                project_id=1,
                region_id=1,
                flavor="g2-standard-32-64",
                interfaces=[{
                    "type": "external"
                }],
                volumes=[{
                    "image_id": "e460e48c-6836-447e-bc9c-16fc4225d318",
                    "source": "image",
                }],
            )
            print(task_id_list.tasks)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/G-Core/gcore-go\"\n\t\"github.com/G-Core/gcore-go/cloud\"\n\t\"github.com/G-Core/gcore-go/option\"\n)\n\nfunc main() {\n\tclient := gcore.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\ttaskIDList, err := client.Cloud.Instances.New(context.TODO(), cloud.InstanceNewParams{\n\t\tProjectID: gcore.Int(1),\n\t\tRegionID:  gcore.Int(1),\n\t\tFlavor:    \"g2-standard-32-64\",\n\t\tInterfaces: []cloud.InstanceNewParamsInterfaceUnion{{\n\t\t\tOfExternal: &cloud.InstanceNewParamsInterfaceExternal{},\n\t\t}},\n\t\tVolumes: []cloud.InstanceNewParamsVolumeUnion{{\n\t\t\tOfImage: &cloud.InstanceNewParamsVolumeImage{\n\t\t\t\tImageID: \"e460e48c-6836-447e-bc9c-16fc4225d318\",\n\t\t\t},\n\t\t}},\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", taskIDList.Tasks)\n}\n"
components:
  schemas:
    CreateInstanceSerializerV2:
      example:
        flavor: g2-standard-32-64
        interfaces:
          - type: external
        name: my-instance
        ssh_key_name: my-ssh-key
        volumes:
          - boot_index: 0
            image_id: e460e48c-6836-447e-bc9c-16fc4225d318
            size: 50
            source: image
      examples:
        - flavor: g2-standard-32-64
          interfaces:
            - type: external
          name: my-instance
          ssh_key_name: my-ssh-key
          volumes:
            - boot_index: 0
              image_id: e460e48c-6836-447e-bc9c-16fc4225d318
              size: 50
              source: image
      properties:
        allow_app_ports:
          description: >-
            Set to `true` if creating the instance from an `apptemplate`. This
            allows application ports in the security group for instances created
            from a marketplace application template.
          title: Allow App Ports
          type: boolean
        configuration:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          description: >-
            Parameters for the application template if creating the instance
            from an `apptemplate`.
          title: Configuration
        flavor:
          description: The flavor of the instance.
          example: g2-standard-32-64
          examples:
            - g2-standard-32-64
          title: Flavor
          type: string
        interfaces:
          description: >-
            A list of network interfaces for the instance. You can create one or
            more interfaces - private, public, or both.
          items:
            $ref: '#/components/schemas/NewVmInterfaceSerializersPydantic'
          minItems: 1
          title: Interfaces
          type: array
        name:
          description: Instance name.
          example: my-instance
          examples:
            - my-instance
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        name_template:
          description: >-
            If you want the instance name to be automatically generated based on
            IP addresses, you can provide a name template instead of specifying
            the name manually. The template should include a placeholder that
            will be replaced during provisioning. Supported placeholders are:
            `{ip_octets}` (last 3 octets of the IP), `{two_ip_octets}`, and
            `{one_ip_octet}`.
          example:
            - my-instance-{ip_octets}
          examples:
            - - my-instance-{ip_octets}
          pattern: ^[a-zA-Z0-9{][a-zA-Z 0-9._\-}{]{1,61}[a-zA-Z0-9._}]$
          title: Name Template
          type: string
        password:
          description: >-
            For Linux instances, 'username' and 'password' are used to create a
            new user. When only 'password' is provided, it is set as the
            password for the default user of the image. For Windows instances,
            'username' cannot be specified. Use the 'password' field to set the
            password for the 'Admin' user on Windows. Use the 'user_data' field
            to provide a script to create new users on Windows. The password of
            the Admin user cannot be updated via 'user_data'.
          title: Password
          type: string
        security_groups:
          description: >-
            Specifies security group UUIDs to be applied to all instance network
            interfaces.
          items:
            $ref: '#/components/schemas/MandatoryIdSerializerPydantic'
          title: Security Groups
          type: array
        servergroup_id:
          description: >-
            Placement group ID for instance placement policy.


            Supported group types:

            - `anti-affinity`: Ensures instances are placed on different hosts
            for high availability.

            - `affinity`: Places instances on the same host for low-latency
            communication.

            - `soft-anti-affinity`: Tries to place instances on different hosts
            but allows sharing if needed.
          format: uuid4
          title: Servergroup Id
          type: string
        ssh_key_name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Specifies the name of the SSH keypair, created via the

            [/v1/`ssh_keys`
            endpoint](/docs/api-reference/cloud/ssh-keys/add-or-generate-ssh-key).
          examples:
            - my-ssh-key
          title: Ssh Key Name
        tags:
          $ref: '#/components/schemas/CreateTagsSerializer'
          description: >-
            Key-value tags to associate with the resource. A tag is a key-value
            pair that can be associated with a resource, enabling efficient
            filtering and grouping for better organization and management. Both
            tag keys and values have a maximum length of 255 characters. Some
            tags are read-only and cannot be modified by the user. Tags are also
            integrated with cost reports, allowing cost data to be filtered
            based on tag keys or values.
          examples:
            - my-tag: my-tag-value
          x-stainless-terraform-configurability: computed_optional
        user_data:
          description: >-
            String in base64 format. For Linux instances, 'user_data' is ignored
            when 'password' field is provided. For Windows instances, Admin user
            password is set by 'password' field and cannot be updated via
            'user_data'. Examples of the `user_data`:
            https://cloudinit.readthedocs.io/en/latest/topics/examples.html
          title: User Data
          type: string
        username:
          description: >-
            For Linux instances, 'username' and 'password' are used to create a
            new user. For Windows instances, 'username' cannot be specified. Use
            'password' field to set the password for the 'Admin' user on
            Windows.
          title: Username
          type: string
        volumes:
          description: List of volumes that will be attached to the instance.
          items:
            $ref: '#/components/schemas/CreateInstanceVolumeSerializer'
          minItems: 1
          title: Volumes
          type: array
      required:
        - interfaces
        - flavor
        - volumes
      title: CreateInstanceSerializerV2
      type: object
    TaskIDsSerializer:
      properties:
        tasks:
          description: >-
            List of task IDs representing asynchronous operations. Use these IDs
            to monitor operation progress:

            - `GET /v1/tasks/{task_id}` - Check individual task status and
            details

            Poll task status until completion (`FINISHED`/`ERROR`) before
            proceeding with dependent operations.
          example:
            - d478ae29-dedc-4869-82f0-96104425f565
          examples:
            - - d478ae29-dedc-4869-82f0-96104425f565
          items:
            type: string
          title: Tasks
          type: array
      required:
        - tasks
      title: TaskIDsSerializer
      type: object
    NewVmInterfaceSerializersPydantic:
      discriminator:
        mapping:
          any_subnet:
            $ref: '#/components/schemas/NewInterfaceAnySubnetFipSerializerPydantic'
          external:
            $ref: '#/components/schemas/NewInterfaceExternalSerializerPydantic'
          reserved_fixed_ip:
            $ref: >-
              #/components/schemas/NewInterfaceReservedFixedIpFipSerializerPydantic
          subnet:
            $ref: >-
              #/components/schemas/NewInterfaceSpecificSubnetFipSerializerPydantic
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/NewInterfaceExternalSerializerPydantic'
        - $ref: '#/components/schemas/NewInterfaceSpecificSubnetFipSerializerPydantic'
        - $ref: '#/components/schemas/NewInterfaceAnySubnetFipSerializerPydantic'
        - $ref: >-
            #/components/schemas/NewInterfaceReservedFixedIpFipSerializerPydantic
      title: NewVmInterfaceSerializersPydantic
    MandatoryIdSerializerPydantic:
      properties:
        id:
          description: Resource ID
          example: ae74714c-c380-48b4-87f8-758d656cdad6
          examples:
            - ae74714c-c380-48b4-87f8-758d656cdad6
          format: uuid4
          title: Id
          type: string
      required:
        - id
      title: MandatoryIdSchema schema
      type: object
    CreateTagsSerializer:
      description: >-
        A tag is a key-value pair that can be associated with a resource,

        enabling efficient filtering and grouping for better organization and
        management.

        Some tags are read-only and cannot be modified by the user.

        Tags are also integrated with cost reports, allowing cost data to be
        filtered based on tag keys or values.
      patternProperties:
        ^[^\s=]+$:
          description: >-
            Tag value. Maximum 255 characters. Cannot contain tabs, newlines,
            empty string or start/end with whitespace.
          example: my-tag-value
          examples:
            - my-tag-value
          maxLength: 255
          minLength: 1
          pattern: ^[^ \t\n\r\f\v]([^\t\n\r\f\v]*[^ \t\n\r\f\v])?$
          type: string
      propertyNames:
        description: >-
          Tag key. Maximum 255 characters. Cannot contain spaces, tabs,
          newlines, empty string or '=' character.
        examples:
          - my-tag
        maxLength: 255
        minLength: 1
      title: CreateTagsSerializer
      type: object
    CreateInstanceVolumeSerializer:
      discriminator:
        mapping:
          apptemplate:
            $ref: >-
              #/components/schemas/CreateInstanceCreateVolumeFromApptemplateSerializer
          existing-volume:
            $ref: '#/components/schemas/CreateInstanceExistingVolumeSerializer'
          image:
            $ref: '#/components/schemas/CreateInstanceCreateVolumeFromImageSerializer'
          new-volume:
            $ref: '#/components/schemas/CreateInstanceCreateNewVolumeSerializer'
          snapshot:
            $ref: >-
              #/components/schemas/CreateInstanceCreateVolumeFromSnapshotSerializer
        propertyName: source
      oneOf:
        - $ref: '#/components/schemas/CreateInstanceCreateNewVolumeSerializer'
        - $ref: '#/components/schemas/CreateInstanceCreateVolumeFromImageSerializer'
        - $ref: >-
            #/components/schemas/CreateInstanceCreateVolumeFromSnapshotSerializer
        - $ref: >-
            #/components/schemas/CreateInstanceCreateVolumeFromApptemplateSerializer
        - $ref: '#/components/schemas/CreateInstanceExistingVolumeSerializer'
      title: Create Instance Volume schema
    NewInterfaceAnySubnetFipSerializerPydantic:
      example:
        floating_ip:
          existing_floating_id: 57be69f6-6f6a-4f03-a4ad-8eb86c69ec0a
          source: existing
        interface_name: my-any-subnet-interface
        ip_address: 192.168.6.9
        network_id: 59905c8e-2619-420a-b046-536096473370
        type: any_subnet
      examples:
        - floating_ip:
            existing_floating_id: 57be69f6-6f6a-4f03-a4ad-8eb86c69ec0a
            source: existing
          interface_name: my-any-subnet-interface
          ip_address: 192.168.6.9
          network_id: 59905c8e-2619-420a-b046-536096473370
          type: any_subnet
      properties:
        floating_ip:
          description: >-
            Allows the instance to have a public IP that can be reached from the
            internet.
          discriminator:
            mapping:
              existing:
                $ref: >-
                  #/components/schemas/ExistingInstanceFloatingIpInterfaceSerializer
              new:
                $ref: '#/components/schemas/NewInstanceFloatingIpInterfaceSerializer'
            propertyName: source
          oneOf:
            - $ref: '#/components/schemas/NewInstanceFloatingIpInterfaceSerializer'
            - $ref: >-
                #/components/schemas/ExistingInstanceFloatingIpInterfaceSerializer
          title: Floating Ip
        interface_name:
          description: >-
            Interface name. Defaults to `null` and is returned as `null` in the
            API response if not set.
          maxLength: 37
          title: Interface Name
          type: string
        ip_address:
          description: You can specify a specific IP address from your subnet.
          format: ipvanyaddress
          title: Ip Address
          type: string
        ip_family:
          anyOf:
            - $ref: '#/components/schemas/InterfaceIPFamily'
            - type: 'null'
          default: ipv4
          description: Specify `ipv4`, `ipv6`, or `dual` to enable both.
        network_id:
          description: The network where the instance will be connected.
          format: uuid4
          title: Network Id
          type: string
        security_groups:
          description: >-
            Specifies security group UUIDs to be applied to the instance network
            interface.
          items:
            $ref: '#/components/schemas/MandatoryIdSerializerPydantic'
          title: Security Groups
          type: array
        type:
          const: any_subnet
          description: >-
            Instance will be attached to a subnet with the largest count of free
            IPs.
          title: Type
          type: string
      required:
        - type
        - network_id
      title: NewInterfaceAnySubnetFipSerializerPydantic
      type: object
    NewInterfaceExternalSerializerPydantic:
      description: Instance will be attached to default external network
      example:
        interface_name: eth0
        ip_family: ipv4
        type: external
      examples:
        - interface_name: eth0
          ip_family: ipv4
          type: external
      properties:
        interface_name:
          description: >-
            Interface name. Defaults to `null` and is returned as `null` in the
            API response if not set.
          maxLength: 37
          title: Interface Name
          type: string
        ip_family:
          anyOf:
            - $ref: '#/components/schemas/InterfaceIPFamily'
            - type: 'null'
          default: ipv4
          description: Specify `ipv4`, `ipv6`, or `dual` to enable both.
        security_groups:
          description: >-
            Specifies security group UUIDs to be applied to the instance network
            interface.
          items:
            $ref: '#/components/schemas/MandatoryIdSerializerPydantic'
          title: Security Groups
          type: array
        type:
          const: external
          description: A public IP address will be assigned to the instance.
          title: Type
          type: string
      required:
        - type
      title: NewInterfaceExternalSerializerPydantic
      type: object
    NewInterfaceReservedFixedIpFipSerializerPydantic:
      example:
        floating_ip:
          source: new
        interface_name: my-interface
        port_id: 59905c8e-2619-420a-b046-536096473370
        type: reserved_fixed_ip
      examples:
        - floating_ip:
            source: new
          interface_name: my-interface
          port_id: 59905c8e-2619-420a-b046-536096473370
          type: reserved_fixed_ip
      properties:
        floating_ip:
          description: >-
            Allows the instance to have a public IP that can be reached from the
            internet.
          discriminator:
            mapping:
              existing:
                $ref: >-
                  #/components/schemas/ExistingInstanceFloatingIpInterfaceSerializer
              new:
                $ref: '#/components/schemas/NewInstanceFloatingIpInterfaceSerializer'
            propertyName: source
          oneOf:
            - $ref: '#/components/schemas/NewInstanceFloatingIpInterfaceSerializer'
            - $ref: >-
                #/components/schemas/ExistingInstanceFloatingIpInterfaceSerializer
          title: Floating Ip
        interface_name:
          description: >-
            Interface name. Defaults to `null` and is returned as `null` in the
            API response if not set.
          maxLength: 37
          title: Interface Name
          type: string
        port_id:
          description: >-
            Network ID the subnet belongs to. Port will be plugged in this
            network.
          title: Port Id
          type: string
        security_groups:
          description: >-
            Specifies security group UUIDs to be applied to the instance network
            interface.
          items:
            $ref: '#/components/schemas/MandatoryIdSerializerPydantic'
          title: Security Groups
          type: array
        type:
          const: reserved_fixed_ip
          description: >-
            An existing available reserved fixed IP will be attached to the
            instance. If the reserved IP is not public and you choose to add a
            floating IP, the instance will be accessible from the internet.
          title: Type
          type: string
      required:
        - type
        - port_id
      title: NewInterfaceReservedFixedIpFipSerializerPydantic
      type: object
    NewInterfaceSpecificSubnetFipSerializerPydantic:
      description: >-
        The instance will get an IP address from the selected network.

        If you choose to add a floating IP, the instance will be reachable from
        the internet.

        Otherwise, it will only have a private IP within the network.
      example:
        floating_ip:
          existing_floating_id: 57be69f6-6f6a-4f03-a4ad-8eb86c69ec0a
          source: existing
        network_id: 59905c8e-2619-420a-b046-536096473370
        subnet_id: e3c6ee77-48cb-416b-b204-11b492cc776e3
        type: subnet
      examples:
        - floating_ip:
            existing_floating_id: 57be69f6-6f6a-4f03-a4ad-8eb86c69ec0a
            source: existing
          network_id: 59905c8e-2619-420a-b046-536096473370
          subnet_id: e3c6ee77-48cb-416b-b204-11b492cc776e3
          type: subnet
      properties:
        floating_ip:
          description: >-
            Allows the instance to have a public IP that can be reached from the
            internet.
          discriminator:
            mapping:
              existing:
                $ref: >-
                  #/components/schemas/ExistingInstanceFloatingIpInterfaceSerializer
              new:
                $ref: '#/components/schemas/NewInstanceFloatingIpInterfaceSerializer'
            propertyName: source
          oneOf:
            - $ref: '#/components/schemas/NewInstanceFloatingIpInterfaceSerializer'
            - $ref: >-
                #/components/schemas/ExistingInstanceFloatingIpInterfaceSerializer
          title: Floating Ip
        interface_name:
          description: >-
            Interface name. Defaults to `null` and is returned as `null` in the
            API response if not set.
          maxLength: 37
          title: Interface Name
          type: string
        network_id:
          description: The network where the instance will be connected.
          format: uuid4
          title: Network Id
          type: string
        security_groups:
          description: >-
            Specifies security group UUIDs to be applied to the instance network
            interface.
          items:
            $ref: '#/components/schemas/MandatoryIdSerializerPydantic'
          title: Security Groups
          type: array
        subnet_id:
          description: The instance will get an IP address from this subnet.
          format: uuid4
          title: Subnet Id
          type: string
        type:
          const: subnet
          description: >-
            The instance will get an IP address from the selected network. If
            you choose to add a floating IP, the instance will be reachable from
            the internet. Otherwise, it will only have a private IP within the
            network.
          title: Type
          type: string
      required:
        - type
        - network_id
        - subnet_id
      title: NewInterfaceSpecificSubnetFipSerializerPydantic
      type: object
    CreateInstanceCreateVolumeFromApptemplateSerializer:
      properties:
        apptemplate_id:
          description: App template ID.
          example: grafana
          examples:
            - grafana
          title: Apptemplate Id
          type: string
        attachment_tag:
          description: Block device attachment tag (not exposed in the normal tags)
          example: boot
          examples:
            - boot
            - data
            - logs
          pattern: ^[^,/]{1,60}$
          title: Attachment Tag
          type: string
        boot_index:
          description: |-
            - `0` means that this is the primary boot device;
            - A unique positive value is set for the secondary bootable devices;
            - A negative number means that the boot is prohibited.
          example: 0
          examples:
            - 0
          title: Boot Index
          type: integer
        delete_on_termination:
          default: false
          description: >-
            Set to `true` to automatically delete the volume when the instance
            is deleted.
          example: false
          examples:
            - false
          title: Delete On Termination
          type: boolean
        name:
          description: >-
            The name of the volume. If not specified, a name will be generated
            automatically.
          example: boot-volume
          examples:
            - boot-volume
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        size:
          description: Volume size in GiB.
          example: 20
          examples:
            - 20
          minimum: 1
          title: Size
          type: integer
        source:
          const: apptemplate
          description: >-
            New volume will be created from the app template and attached to the
            instance.
          example: apptemplate
          examples:
            - apptemplate
          title: Source
          type: string
        tags:
          $ref: '#/components/schemas/CreateTagsSerializer'
          description: >-
            Key-value tags to associate with the resource. A tag is a key-value
            pair that can be associated with a resource, enabling efficient
            filtering and grouping for better organization and management. Both
            tag keys and values have a maximum length of 255 characters. Some
            tags are read-only and cannot be modified by the user. Tags are also
            integrated with cost reports, allowing cost data to be filtered
            based on tag keys or values.
          examples:
            - my-tag: my-tag-value
        type_name:
          $ref: '#/components/schemas/VolumeTypeName'
          default: standard
          description: >-
            Volume type name. Supported values:

            - `standard` - Network SSD block storage offering stable performance
            with high random I/O and data reliability (6 IOPS per 1 GiB, 0.4
            MB/s per 1 GiB). Max IOPS: 4500. Max bandwidth: 300 MB/s.

            - `ssd_hiiops` - High-performance SSD storage for latency-sensitive
            transactional workloads (60 IOPS per 1 GiB, 2.5 MB/s per 1 GiB). Max
            IOPS: 9000. Max bandwidth: 500 MB/s.

            - `ssd_lowlatency` - SSD storage optimized for low-latency and
            real-time processing. Max IOPS: 5000. Average latency: 300 µs.
            Snapshots and volume resizing are **not** supported for
            `ssd_lowlatency`.
          examples:
            - ssd_hiiops
      required:
        - source
        - apptemplate_id
      title: CreateInstanceCreateVolumeFromApptemplateSerializer
      type: object
    CreateInstanceExistingVolumeSerializer:
      properties:
        attachment_tag:
          description: Block device attachment tag (not exposed in the normal tags)
          example: boot
          examples:
            - boot
            - data
            - logs
          pattern: ^[^,/]{1,60}$
          title: Attachment Tag
          type: string
        boot_index:
          description: |-
            - `0` means that this is the primary boot device;
            - A unique positive value is set for the secondary bootable devices;
            - A negative number means that the boot is prohibited.
          example: 0
          examples:
            - 0
          title: Boot Index
          type: integer
        delete_on_termination:
          default: false
          description: >-
            Set to `true` to automatically delete the volume when the instance
            is deleted.
          example: false
          examples:
            - false
          title: Delete On Termination
          type: boolean
        source:
          const: existing-volume
          description: Existing available volume will be attached to the instance.
          example: existing-volume
          examples:
            - existing-volume
          title: Source
          type: string
        tags:
          $ref: '#/components/schemas/CreateTagsSerializer'
          description: >-
            Key-value tags to associate with the resource. A tag is a key-value
            pair that can be associated with a resource, enabling efficient
            filtering and grouping for better organization and management. Both
            tag keys and values have a maximum length of 255 characters. Some
            tags are read-only and cannot be modified by the user. Tags are also
            integrated with cost reports, allowing cost data to be filtered
            based on tag keys or values.
          examples:
            - my-tag: my-tag-value
        volume_id:
          description: Volume ID.
          example: f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          examples:
            - f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          format: uuid4
          title: Volume Id
          type: string
      required:
        - source
        - volume_id
      title: CreateInstanceExistingVolumeSerializer
      type: object
    CreateInstanceCreateVolumeFromImageSerializer:
      properties:
        attachment_tag:
          description: Block device attachment tag (not exposed in the normal tags)
          example: boot
          examples:
            - boot
            - data
            - logs
          pattern: ^[^,/]{1,60}$
          title: Attachment Tag
          type: string
        boot_index:
          description: |-
            - `0` means that this is the primary boot device;
            - A unique positive value is set for the secondary bootable devices;
            - A negative number means that the boot is prohibited.
          example: 0
          examples:
            - 0
          title: Boot Index
          type: integer
        delete_on_termination:
          default: false
          description: >-
            Set to `true` to automatically delete the volume when the instance
            is deleted.
          example: false
          examples:
            - false
          title: Delete On Termination
          type: boolean
        image_id:
          description: Image ID.
          example: f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          examples:
            - f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          format: uuid4
          title: Image Id
          type: string
        name:
          description: >-
            The name of the volume. If not specified, a name will be generated
            automatically.
          example: boot-volume
          examples:
            - boot-volume
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        size:
          description: |-
            Volume size in GiB.
            - For instances: **specify the desired volume size explicitly**.
            - For basic VMs: the size is set automatically based on the flavor.
          example: 20
          examples:
            - 20
          minimum: 1
          title: Size
          type: integer
        source:
          const: image
          description: >-
            New volume will be created from the image and attached to the
            instance. Specify `boot_index=0` to boot from this volume.
          example: image
          examples:
            - image
          title: Source
          type: string
        tags:
          $ref: '#/components/schemas/CreateTagsSerializer'
          description: >-
            Key-value tags to associate with the resource. A tag is a key-value
            pair that can be associated with a resource, enabling efficient
            filtering and grouping for better organization and management. Both
            tag keys and values have a maximum length of 255 characters. Some
            tags are read-only and cannot be modified by the user. Tags are also
            integrated with cost reports, allowing cost data to be filtered
            based on tag keys or values.
          examples:
            - my-tag: my-tag-value
        type_name:
          $ref: '#/components/schemas/VolumeTypeName'
          default: standard
          description: >-
            Volume type name. Supported values:

            - `standard` - Network SSD block storage offering stable performance
            with high random I/O and data reliability (6 IOPS per 1 GiB, 0.4
            MB/s per 1 GiB). Max IOPS: 4500. Max bandwidth: 300 MB/s.

            - `ssd_hiiops` - High-performance SSD storage for latency-sensitive
            transactional workloads (60 IOPS per 1 GiB, 2.5 MB/s per 1 GiB). Max
            IOPS: 9000. Max bandwidth: 500 MB/s.

            - `ssd_lowlatency` - SSD storage optimized for low-latency and
            real-time processing. Max IOPS: 5000. Average latency: 300 µs.
            Snapshots and volume resizing are **not** supported for
            `ssd_lowlatency`.
          examples:
            - ssd_hiiops
      required:
        - source
        - image_id
      title: CreateInstanceCreateVolumeFromImageSerializer
      type: object
    CreateInstanceCreateNewVolumeSerializer:
      properties:
        attachment_tag:
          description: Block device attachment tag (not exposed in the normal tags)
          example: boot
          examples:
            - boot
            - data
            - logs
          pattern: ^[^,/]{1,60}$
          title: Attachment Tag
          type: string
        delete_on_termination:
          default: false
          description: >-
            Set to `true` to automatically delete the volume when the instance
            is deleted.
          example: false
          examples:
            - false
          title: Delete On Termination
          type: boolean
        name:
          description: >-
            The name of the volume. If not specified, a name will be generated
            automatically.
          example: boot-volume
          examples:
            - boot-volume
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        size:
          description: Volume size in GiB.
          example: 20
          examples:
            - 20
          minimum: 1
          title: Size
          type: integer
        source:
          const: new-volume
          description: >-
            New volume will be created from scratch and attached to the
            instance.
          example: new-volume
          examples:
            - new-volume
          title: Source
          type: string
        tags:
          $ref: '#/components/schemas/CreateTagsSerializer'
          description: >-
            Key-value tags to associate with the resource. A tag is a key-value
            pair that can be associated with a resource, enabling efficient
            filtering and grouping for better organization and management. Both
            tag keys and values have a maximum length of 255 characters. Some
            tags are read-only and cannot be modified by the user. Tags are also
            integrated with cost reports, allowing cost data to be filtered
            based on tag keys or values.
          examples:
            - my-tag: my-tag-value
        type_name:
          $ref: '#/components/schemas/VolumeTypeName'
          default: standard
          description: >-
            Volume type name. Supported values:

            - `standard` - Network SSD block storage offering stable performance
            with high random I/O and data reliability (6 IOPS per 1 GiB, 0.4
            MB/s per 1 GiB). Max IOPS: 4500. Max bandwidth: 300 MB/s.

            - `ssd_hiiops` - High-performance SSD storage for latency-sensitive
            transactional workloads (60 IOPS per 1 GiB, 2.5 MB/s per 1 GiB). Max
            IOPS: 9000. Max bandwidth: 500 MB/s.

            - `ssd_lowlatency` - SSD storage optimized for low-latency and
            real-time processing. Max IOPS: 5000. Average latency: 300 µs.
            Snapshots and volume resizing are **not** supported for
            `ssd_lowlatency`.
          examples:
            - ssd_hiiops
      required:
        - source
        - size
      title: CreateInstanceCreateNewVolumeSerializer
      type: object
    CreateInstanceCreateVolumeFromSnapshotSerializer:
      properties:
        attachment_tag:
          description: Block device attachment tag (not exposed in the normal tags)
          example: boot
          examples:
            - boot
            - data
            - logs
          pattern: ^[^,/]{1,60}$
          title: Attachment Tag
          type: string
        boot_index:
          description: |-
            - `0` means that this is the primary boot device;
            - A unique positive value is set for the secondary bootable devices;
            - A negative number means that the boot is prohibited.
          example: 0
          examples:
            - 0
          title: Boot Index
          type: integer
        delete_on_termination:
          default: false
          description: >-
            Set to `true` to automatically delete the volume when the instance
            is deleted.
          example: false
          examples:
            - false
          title: Delete On Termination
          type: boolean
        name:
          description: >-
            The name of the volume. If not specified, a name will be generated
            automatically.
          example: boot-volume
          examples:
            - boot-volume
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        size:
          description: Volume size in GiB.
          example: 20
          examples:
            - 20
          minimum: 1
          title: Size
          type: integer
        snapshot_id:
          description: Snapshot ID.
          example: f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          examples:
            - f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          format: uuid4
          title: Snapshot Id
          type: string
        source:
          const: snapshot
          description: >-
            New volume will be created from the snapshot and attached to the
            instance.
          example: snapshot
          examples:
            - snapshot
          title: Source
          type: string
        tags:
          $ref: '#/components/schemas/CreateTagsSerializer'
          description: >-
            Key-value tags to associate with the resource. A tag is a key-value
            pair that can be associated with a resource, enabling efficient
            filtering and grouping for better organization and management. Both
            tag keys and values have a maximum length of 255 characters. Some
            tags are read-only and cannot be modified by the user. Tags are also
            integrated with cost reports, allowing cost data to be filtered
            based on tag keys or values.
          examples:
            - my-tag: my-tag-value
        type_name:
          $ref: '#/components/schemas/SnapshottableVolumeTypeChoices'
          description: >-
            Specifies the volume type. If omitted, the type from the source
            volume will be used by default.
          examples:
            - ssd_hiiops
      required:
        - source
        - snapshot_id
        - size
      title: CreateInstanceCreateVolumeFromSnapshotSerializer
      type: object
    ExistingInstanceFloatingIpInterfaceSerializer:
      properties:
        existing_floating_id:
          description: >-
            An existing available floating IP id must be specified if the source
            is set to `existing`
          example: e3c6ee77-48cb-416b-b204-11b492cc776e3
          examples:
            - e3c6ee77-48cb-416b-b204-11b492cc776e3
          format: uuid4
          title: Existing Floating Id
          type: string
        source:
          const: existing
          description: >-
            An existing available floating IP will be attached to the instance.
            A floating IP is a public IP that makes the instance accessible from
            the internet, even if it only has a private IP. It works like SNAT,
            allowing outgoing and incoming traffic.
          example: existing
          examples:
            - existing
          title: Source
          type: string
      required:
        - source
        - existing_floating_id
      title: Existing floating IP
      type: object
    NewInstanceFloatingIpInterfaceSerializer:
      properties:
        source:
          const: new
          description: >-
            A new floating IP will be created and attached to the instance. A
            floating IP is a public IP that makes the instance accessible from
            the internet, even if it only has a private IP. It works like SNAT,
            allowing outgoing and incoming traffic.
          example: new
          examples:
            - new
          title: Source
          type: string
      required:
        - source
      title: New floating IP
      type: object
    InterfaceIPFamily:
      enum:
        - dual
        - ipv4
        - ipv6
      title: InterfaceIPFamily
      type: string
    VolumeTypeName:
      enum:
        - cold
        - ssd_hiiops
        - ssd_local
        - ssd_lowlatency
        - standard
        - ultra
      title: VolumeTypeName
      type: string
    SnapshottableVolumeTypeChoices:
      description: Snapshots are currently supported only for these volume types.
      enum:
        - ssd_hiiops
        - standard
      title: SnapshottableVolumeTypeChoices
      type: string
  securitySchemes:
    APIKey:
      description: >-
        API key for authentication. Make sure to include the word `apikey`,
        followed by a single space and then your token.

        Example: `apikey 1234$abcdef`
      type: apiKey
      in: header
      name: Authorization

````