---
title: "Verify Boot Attestation"
method: POST
path: "/servers/boot/attestation"
tags: ["Servers"]
---

# Verify Boot Attestation

`POST /servers/boot/attestation`

Verify boot attestation and return LUKS passphrase.

Both VM generations reach this route, so the hotkey proof is EXTRACTED rather than required:
a presented signature is verified here and 401s if it does not hold, but its absence is left
for the handler to judge once the quote names the attested image. See
process_boot_attestation, which requires a proof from any image whose measured initramfs
ships the signer.

Verifies the TDX quote against the expected boot measurements and returns the LUKS passphrase
for disk decryption if valid. For VMs >= 1.3.0 it also returns a luks_quote_nonce for the
following runtime call (POST /provision on 1.4.0+, POST /luks/attest on 1.3.x); for 1.4.0+ it
additionally returns root_next + root_confirm_nonce and the VM's ephemeral auth SS58.

## Headers

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

## Request body

- BootAttestationArgs — Request model for boot attestation.
  - `quote` string, required — Base64 encoded TDX quote
  - `miner_hotkey` string, required — Miner hotkey that owns this VM
  - `vm_name` string, required — VM name/identifier
  - `first_boot` boolean — True when the VM detected a fresh (re-downloaded) image via its LUKS2 header token

## Response `200`

Successful Response

- BootAttestationResponse — Response model for successful boot attestation.
  - `key` string, required
  - `luks_quote_nonce` string, nullable
  - `root_next` string, nullable — New root passphrase the VM should rotate to (None for pre-1.4.0 VMs)
  - `root_confirm_nonce` string, nullable — Single-use nonce for confirming root passphrase rotation via POST /luks/confirm
  - `vm_auth_ss58` string, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-02** `37e3c562aa28` — 2 warning
  - deleted the `header` request parameter `X-Chutes-Signature`
  - deleted the `header` request parameter `X-Operator-Signature`
- **2026-08-26** `8d909638091e` — 1 info
  - endpoint added
- **2026-08-22** `05d9af05d87e` — 1 breaking
  - api path removed without deprecation
- **2026-08-04** `352418d4e3a2` — 4 info
  - added the new optional request property `first_boot`
  - added the optional property `root_confirm_nonce` to the response with the `200` status
  - added the optional property `root_next` to the response with the `200` status
  - added the optional property `vm_auth_ss58` to the response with the `200` status
- **2026-07-26** `9fed8100e50d` — 1 warning
  - removed the optional property `boot_token` from the response with the `200` status

[Change history](https://skmtc.dev/chutes/apis/fastapi/changes/servers/boot/attestation/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/37e3c562aa28/schema)
