---
title: "Confirm Luks Rotation"
method: POST
path: "/servers/{vm_name}/luks/confirm"
tags: ["Servers"]
---

# Confirm Luks Rotation

`POST /servers/{vm_name}/luks/confirm`

Confirm or discard pending LUKS passphrase rotation results.

DEPRECATED for the storage-rotation flow: new VMs use POST /provision/confirm (same
shared logic). Kept for legacy in-field VMs; note the boot-phase root-passphrase confirm
still uses this route until /luks/* is fully retired.

The VM reports per-volume success/failure. require_confirm_nonce validates
and consumes the nonce before the handler runs. Volumes with rotated=True
have pending passphrases promoted to current; rotated=False discards pending.

## Path parameters

- `vm_name` string, required

## Headers

- `X-Chutes-Hotkey` string, nullable
- `X-Confirm-Nonce` string, nullable

## Request body

- LuksConfirmRequest — Request model for POST /luks/confirm.
  - `volumes` object, required — Per-volume rotation result reported by the VM

## Response `200`

Successful Response

- LuksConfirmResponse — Response model for POST /luks/confirm.
  - `status` string, required
  - `volumes` object, required

## Other responses

- `422` — Validation Error

## Changes

- **2026-08-26** `8d909638091e` — 1 info
  - endpoint added
- **2026-08-22** `05d9af05d87e` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/chutes/apis/fastapi/changes/servers/:vm_name/luks/confirm/post.md)

---

[API](https://skmtc.dev/chutes/apis/fastapi.md) · [All operations](https://skmtc.dev/chutes/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/chutes/fastapi/revisions/7be1aa2fe1a0/schema)
