> For the complete documentation index, see [llms.txt](https://docs.console.zenlayer.com/api-reference/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.console.zenlayer.com/api-reference/cn/legacy/vm/virtual-machine-instance/resetinstance.md).

# ResetInstance

## 1. 接口描述

本接口(ResetInstance)用于重装一台虚拟机实例上的操作系统。

#### 准备工作

* 查询镜像：调用[`DescribeImages`](/api-reference/cn/legacy/vm/image/describeimages.md)可以查询到需要重装的操作系统镜像信息。
* 查询密钥对：调用 [`DescribeKeyPairs`](https://github.com/zenlayer/zenlayercloud-api-doc-cn/tree/main/security/key-service/key-pair/describekeypairs.md)可以查询到密钥对ID信息。

{% hint style="info" %}
**注意事项**

* 如果指定了`imageId`参数，则使用指定的镜像重装；否则按照实例当前使用的镜像进行重装。
* 实例的系统盘大小必须大于或等于被重装镜像的大小。否则操作将被拒绝。
* 系统盘将会被格式化，并重置；请确保系统盘中无重要文件。
* 如果密码不指定将会通过邮箱下发随机密码。
* 重装系统必须在实例为关机状态才能进行。
* 重装实例后进入 **`REBUILDING`** (重置中)的状态。如果实例的最新状态变为`RUNNING`(运行中)，则代表操作成功；实例的状态可以通过调用 `DescribeInstancesStatus` 接口查询。
  {% endhint %}

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称         | 必选 | 类型     | 描述                                  |
| ------------ | -- | ------ | ----------------------------------- |
| instanceId   | 是  | String | 待操作的虚拟机实例ID。                        |
| password     | 否  | String | 实例登录密码。                             |
| keyId        | 否  | String | 密钥ID。                               |
| imageId      | 否  | String | 指定有效的镜像ID。                          |
| instanceName | 否  | String | 实例显示名称。                             |
| wanName      | 否  | String | 公网网卡名称。                             |
| lanName      | 否  | String | 内网网卡名称。                             |
| initScript   | 否  | String | 初始化脚本，需进行Base64编码后传入，脚本内容大小不超过32KB。 |

## 3. 响应结果

| 参数名称      | 类型     | 描述                                                       |
| --------- | ------ | -------------------------------------------------------- |
| requestId | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 指定镜像和密码重装指定ID的实例**

```json
POST /api/v2/vm HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: resetInstance
<Common Request Params>

Request：
{
    "instanceId": "instanceId",
    "imageId": "img-xxxxxxxxx",
    "password": "Example+123"
}

Response:
{
  "requestId": "TC1748D3E-452D-4F74-8485-7AA73718E453",
  "response": {
    "requestId": "TC1748D3E-452D-4F74-8485-7AA73718E453"
  }
}
```

**2. 重装实例并指定初始化脚本**

```json
POST /api/v2/vm HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: resetInstance
<Common Request Params>

Request：
{
    "instanceId": "instanceId",
    "imageId": "img-xxxxxxxxx",
    "password": "Example+123",
    "initScript": "IyEvYmluL2Jhc2gKZWNobyAiaGVsbG8gemVubGF5ZXIiID4gL3RtcC9pbml0LmxvZwo="
}

Response:
{
  "requestId": "TC1748D3E-452D-4F74-8485-7AA73718E454",
  "response": {
    "requestId": "TC1748D3E-452D-4F74-8485-7AA73718E454"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](/api-reference/cn/api-introduction/toolkit.md)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](/api-reference/cn/api-introduction/instruction/commonerrorcode.md)

| HTTP状态码 | 错误码                                            | 说明                                 |
| ------- | ---------------------------------------------- | ---------------------------------- |
| 404     | INVALID\_INSTANCE\_NOT\_FOUND                  | 指定的实例不存在。                          |
| 404     | INVALID\_IMAGE\_NOT\_FOUND                     | 未找到指定的镜像。                          |
| 400     | INVALID\_PARAMETER\_VALUE\_PASSWORD\_MALFORMED | 无效密码。指定的密码不符合密码复杂度限制。例如密码长度不符合限制等。 |
| 404     | INVALID\_IMAGE\_SIZE\_EXCEED                   | 镜像的大小超过了当前系统盘的大小。                  |
| 403     | INVALID\_REGION\_SCRIPT\_NOT\_SUPPORT          | 节点不支持脚本。                           |
| 403     | INVALID\_REGION\_SCRIPT\_EXCEED\_LENGTH        | 节点脚本长度超出32kb。                      |
