---
title: "Redeploy a node"
method: PUT
path: "/v1/nodes/{id}/redeploy"
tags: ["Nodes"]
---

# Redeploy a node

`PUT /v1/nodes/{id}/redeploy`

Redeploy a node by replacing its current VM with a new one. Optionally update the VM image and cloud init user data.

## Path parameters

- `id` string, required

## Request body

- NodeApiRedeployNodeRequest
  - `image_id` string — Redeploy node with this VM image ID
  - `cloud_init_user_data` string, byte — Update the cloud init user data for VMs running on this node Data should be base64 encoded
  - `override_empty` boolean — If false, then the new VM will inherit any configuration (like image_id, cloud_init_user_data) that is left empty in this request from the current VM. If true, then any configuration left empty will be set as empty in the new VM. E.g if cloud_init_user_data is left unset and override_empty is true, then the new VM will not have any cloud init user data. override_empty defaults to false.

## Response `200`

Node redeployed successfully

- NodeApiNode
  - `object` string, required
  - `id` string, required
  - `name` string, required
  - `zone` string, nullable
  - `gpu_type` 'H100' | 'H200', required
  - `owner` string, required
  - `status` 'pending' | 'awaitingcapacity' | 'running' | 'released' | 'terminated' | 'deleted' | 'failed' | 'unknown', required — Node Status
  - `created_at` integer, nullable — Creation time as Unix timestamp in seconds
  - `updated_at` integer, nullable — Last updated time as Unix timestamp in seconds
  - `start_at` integer, nullable — Start time as Unix timestamp in seconds
  - `end_at` integer, nullable — End time as Unix timestamp in seconds
  - `deleted_at` integer, nullable — Deletion time as Unix timestamp in seconds
  - `procurement_id` string, nullable
  - `max_price_per_node_hour` integer, nullable — Max price per hour you're willing to pay for a node in cents
  - `node_type` 'autoreserved' | 'reserved', required
  - `vms` NodeApiVmList
    - `object` string, required
    - `data` NodeApiVm[], required
      - `object` string, required
      - `id` string, required
      - `status` 'Pending' | 'Running' | 'Destroyed' | 'NodeFailure' | 'Unspecified', required
      - `created_at` integer, required
      - `updated_at` integer, required
      - `start_at` integer, nullable, required
      - `end_at` integer, nullable, required
      - `image_id` string, nullable
      - `zone` string, required
  - `current_vm` NodeApiVm
    - `object` string, required
    - `id` string, required
    - `status` 'Pending' | 'Running' | 'Destroyed' | 'NodeFailure' | 'Unspecified', required
    - `created_at` integer, required
    - `updated_at` integer, required
    - `start_at` integer, nullable, required
    - `end_at` integer, nullable, required
    - `image_id` string, nullable
    - `zone` string, required

## Other responses

- `400` — Bad request
- `401` — Unauthorized request
- `403` — Forbidden
- `404` — Node not found
- `422` — Redeploy failed due to invalid state
- `500` — Internal server error

---

[API](https://skmtc.net/sfcompute/apis/san-francisco-compute-documentation.md) · [All operations](https://skmtc.net/sfcompute/apis/san-francisco-compute-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sfcompute/san-francisco-compute-documentation/revisions/93dd7661e9bb/schema)
