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

# Rebuild instance

> Rebuild instance with a new image while preserving its configuration.



## OpenAPI

````yaml /api-reference/services_docs_mintlify_enriched/cloud_api.yaml post /cloud/v3/instances/{project_id}/{region_id}/{instance_id}/rebuild
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: 15b45b190fd4
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: Bare Metal
  - name: Container as a Service
  - name: Cost Reports
  - name: DDoS Protection
  - name: Everywhere Inference
  - name: Everywhere Inference Apps
  - name: File Shares
  - name: Floating IPs
  - name: Function as a Service
  - name: GPU Bare Metal
  - name: GPU Virtual
  - name: IP Ranges
  - name: Images
  - name: Instances
  - name: Load Balancers
  - name: Logging
  - name: Managed Kubernetes
  - name: Managed PostgreSQL
  - name: Networks
  - name: Placement Groups
  - name: Ports
  - name: Pricing
  - name: Projects
  - name: Quotas
  - name: Regions
  - name: Registry
  - name: Reservations
  - name: Reserved IPs
  - name: Routers
  - name: SSH Keys
  - name: Secrets
  - name: Security Groups
  - name: Snapshot Schedules
  - name: Snapshots
  - name: Tasks
  - name: User Actions
  - name: User Role Assignments
  - name: Volumes
paths:
  /cloud/v3/instances/{project_id}/{region_id}/{instance_id}/rebuild:
    post:
      tags:
        - Instances
      summary: Rebuild instance
      description: Rebuild instance with a new image while preserving its configuration.
      operationId: InstanceRebuildHandler.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
        - in: path
          name: instance_id
          required: true
          description: Instance ID
          schema:
            description: Instance ID
            example: a314d566-2772-4124-a4c4-5688ab76b928
            examples:
              - a314d566-2772-4124-a4c4-5688ab76b928
            format: uuid4
            title: Instance Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RebuildInstanceSerializer'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDsSerializer'
        '400':
          $ref: '#/components/responses/ProblemBadRequest'
        '401':
          $ref: '#/components/responses/ProblemUnauthorized'
        '403':
          $ref: '#/components/responses/ProblemForbidden'
        '404':
          $ref: '#/components/responses/ProblemNotFound'
        '409':
          $ref: '#/components/responses/ProblemConflict'
        '500':
          $ref: '#/components/responses/ProblemInternalServerError'
        '503':
          $ref: '#/components/responses/ProblemServiceUnavailable'
components:
  schemas:
    RebuildInstanceSerializer:
      additionalProperties: false
      properties:
        image_id:
          description: Image ID. If you omit it, the instance keeps the current image.
          example: f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          examples:
            - f01fd9a0-9548-48ba-82dc-a8c8b2d6f2f1
          format: uuid4
          title: Image 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](/api-reference/cloud/ssh-keys/add-or-generate-ssh-key).

            Use null to remove the SSH key from the instance. If you omit it,
            the instance keeps

            the current SSH key.
          examples:
            - my-ssh-key
          title: Ssh Key Name
        user_data:
          description: >-
            String in base64 format. Examples of the `user_data`:
            https://cloudinit.readthedocs.io/en/latest/topics/examples.html. If
            you omit it, the instance keeps the current user data.
          title: User Data
          type: string
      title: RebuildInstanceSerializer
      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
    Problem:
      additionalProperties: false
      description: The error body, served as `application/problem+json`.
      properties:
        context:
          anyOf:
            - $ref: '#/components/schemas/ProblemContext'
            - type: 'null'
          default: null
          description: >-
            Data for the `type`. Absent on a type without context keys, and on a
            `not-found` for an unknown URL.
        detail:
          description: The facts of this occurrence.
          title: Detail
          type: string
        errors:
          anyOf:
            - items:
                $ref: '#/components/schemas/ProblemError'
              type: array
            - type: 'null'
          default: null
          description: >-
            One item for each invalid input. Only on `validation-error`, and
            absent when no single input is wrong.
          title: Errors
        hint:
          description: What to do next.
          title: Hint
          type: string
        request_id:
          description: >-
            ID of the request. The response also sends it in the `X-Request-Id`
            header. Quote it to support.
          title: Request Id
          type: string
        status:
          description: Copy of the HTTP status code.
          title: Status
          type: integer
        title:
          description: Fixed sentence for the `type`.
          title: Title
          type: string
        trace_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            W3C trace ID from the `traceparent` of the request. Null when the
            request has no valid `traceparent`.
          title: Trace Id
        type:
          $ref: '#/components/schemas/ProblemType'
          description: >-
            Stable error code in kebab-case, such as `not-found`. Clients branch
            on it. It is not `errors[].code`, which names what is wrong with one
            input in `snake_case`, such as `not_found`.
      required:
        - type
        - title
        - status
        - detail
        - hint
        - request_id
        - trace_id
      title: Problem
      type: object
    ProblemContext:
      additionalProperties: false
      description: >-
        Data for the `type`. One flat object shared by all types. Each `type`
        always sends the same keys, and a key that the server cannot fill is
        `null`. The keys of each type:

        - `resource-in-use`: `blocking_resources`, `blocking_count`

        - `quota-exceeded`: `quotas`

        - `not-available`: `reason`, `region_id`, `resource_type`, `resource_id`

        - `permission-denied`: `operation`, `client_id`, `project_id`

        - `not-found`: `resource_type`, `resource_id`

        - `method-not-allowed`: `allowed_methods`

        - `resource-busy`: `resource_type`, `resource_id`, `resource_status`

        - `rate-limited`: `retry_after`

        - `service-unavailable`: `retry_after`

        The other types send no `context`, and neither does a `not-found` for an
        unknown URL.
      properties:
        allowed_methods:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          default: null
          description: Methods that the endpoint supports.
          title: Allowed Methods
        blocking_count:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: Total number of blocking resources.
          title: Blocking Count
        blocking_resources:
          anyOf:
            - items:
                $ref: '#/components/schemas/ProblemBlockingResource'
              type: array
            - type: 'null'
          default: null
          description: At most 50 resources that block the request.
          title: Blocking Resources
        client_id:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: The account of the operation.
          title: Client Id
        operation:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Name of the operation that the credentials lack.
          title: Operation
        project_id:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: The project of the operation.
          title: Project Id
        quotas:
          anyOf:
            - items:
                $ref: '#/components/schemas/ProblemQuota'
              type: array
            - type: 'null'
          default: null
          description: The quotas that the request exceeds.
          title: Quotas
        reason:
          anyOf:
            - $ref: '#/components/schemas/NotAvailableReason'
            - type: 'null'
          default: null
          description: Why the resource is not available.
        region_id:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: The region of the error.
          title: Region Id
        resource_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: ID or name of the resource.
          title: Resource Id
        resource_status:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Current status of the resource.
          title: Resource Status
        resource_type:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Type of the resource, as the permissions name it, such as
            `instances`.
          title: Resource Type
        retry_after:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: >-
            Seconds to wait before the next request. `null` when the server
            cannot tell.
          title: Retry After
      title: ProblemContext
      type: object
    ProblemError:
      additionalProperties: false
      description: One invalid input.
      properties:
        code:
          description: >-
            What is wrong, as a code from a fixed list, such as `missing`,
            `int_parsing` or `less_than_equal`, or one of the shared codes:
            `not_unique`, `not_found`, `mutually_exclusive`, `missing_one_of`,
            `incompatible_value`, `invalid_format`, `duplicate_item`,
            `invalid_status`. Codes are only added, never renamed or removed.
            Treat an unknown code like `value_error`.
          type: string
        ctx:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          default: null
          description: >-
            Values of the broken constraint, such as `{"le": 4096}`. Absent when
            the check has no values.
          title: Ctx
        detail:
          description: What is wrong with the input.
          title: Detail
          type: string
        loc:
          description: >-
            Path to the input. Starts with `body`, `query`, `path` or `header`.
            A query filter is the parameter, then the operator: `name[contains]`
            is `["query", "name", "contains"]`.
          items:
            anyOf:
              - type: string
              - type: integer
          title: Loc
          type: array
      required:
        - loc
        - code
        - detail
      title: ProblemError
      type: object
    ProblemType:
      enum:
        - internal-server-error
        - method-not-allowed
        - not-available
        - not-found
        - permission-denied
        - quota-exceeded
        - rate-limited
        - resource-busy
        - resource-in-use
        - service-unavailable
        - unauthorized
        - validation-error
      title: ProblemType
      type: string
    ProblemBlockingResource:
      additionalProperties: false
      description: One resource that blocks the request.
      properties:
        resource_id:
          description: ID of the blocking resource.
          title: Resource Id
          type: string
        resource_name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Name of the blocking resource.
          title: Resource Name
        resource_type:
          description: >-
            Type of the blocking resource, as the permissions name it, such as
            `ports`.
          title: Resource Type
          type: string
      required:
        - resource_type
        - resource_id
      title: ProblemBlockingResource
      type: object
    ProblemQuota:
      additionalProperties: false
      description: One quota that the request exceeds.
      properties:
        available:
          anyOf:
            - type: integer
            - type: number
          description: '`limit` minus `usage`.'
          title: Available
        limit:
          anyOf:
            - type: integer
            - type: number
          description: The limit of the quota.
          title: Limit
        name:
          description: Quota name, such as `vm_count`.
          title: Name
          type: string
        overflow:
          anyOf:
            - type: integer
            - type: number
          description: 'The amount above the limit: `resulting_usage` minus `limit`.'
          title: Overflow
        region_id:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            Region of a regional quota. `null` for a global quota, or when
            unknown.
          title: Region Id
        requested:
          anyOf:
            - type: integer
            - type: number
          description: The amount that the request adds.
          title: Requested
        resulting_usage:
          anyOf:
            - type: integer
            - type: number
          description: 'The usage after the request: `usage` plus `requested`.'
          title: Resulting Usage
        scope:
          anyOf:
            - $ref: '#/components/schemas/QuotaScope'
            - type: 'null'
          description: >-
            `regional` for a quota of one region, `global` for a quota of the
            account. `null` when the server cannot tell.
        unit:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Unit of the numbers, such as `MiB`, `GiB` or `bytes`. `null` for a
            quota that counts items.
          title: Unit
        usage:
          anyOf:
            - type: integer
            - type: number
          description: The usage before the request.
          title: Usage
      required:
        - name
        - scope
        - region_id
        - limit
        - usage
        - available
        - requested
        - resulting_usage
        - overflow
        - unit
      title: ProblemQuota
      type: object
    NotAvailableReason:
      enum:
        - account
        - balance
        - capacity
        - plan
        - region
      title: NotAvailableReason
      type: string
    QuotaScope:
      enum:
        - global
        - regional
      title: QuotaScope
      type: string
  responses:
    ProblemBadRequest:
      description: >-
        The request cannot succeed as it is. `type` is `validation-error`,
        `resource-in-use`, `quota-exceeded` or `not-available`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
    ProblemUnauthorized:
      description: The request has no valid credentials. `type` is `unauthorized`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
    ProblemForbidden:
      description: >-
        The credentials do not permit the operation, or another service manages
        the resource. `type` is `permission-denied`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
    ProblemNotFound:
      description: The resource or the URL does not exist. `type` is `not-found`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
    ProblemConflict:
      description: >-
        The resource is in a transient state. `type` is `resource-busy`. Send
        the same request again after the `Retry-After` seconds.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
    ProblemInternalServerError:
      description: >-
        The server cannot complete the request. `type` is
        `internal-server-error`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
    ProblemServiceUnavailable:
      description: >-
        The service is down for a known reason, such as planned maintenance.
        `type` is `service-unavailable`. A 503 without the
        `application/problem+json` media type, and every 502 and 504, comes from
        the gateway and has no problem body.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
  headers:
    RequestId:
      description: The ID of the request, the same as `request_id` in the body.
      schema:
        type: string
    ContentLanguage:
      description: >-
        The language of `title`, `detail`, `hint` and `errors[].detail`, from
        the `Accept-Language` of the request. Any other field is the same in
        every language.
      schema:
        type: string
        enum:
          - en
          - de
          - ru
          - az
          - zh
          - fr
          - es
          - pt
          - ko
          - ja
          - tr
    RetryAfter:
      description: >-
        The number of seconds to wait before the client sends the same request
        again.
      schema:
        type: integer
        minimum: 0
        maximum: 60
  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

````