---
title: "Overwrite a note's content"
method: PUT
path: "/v1/vault/notes/{id}"
tags: ["Vault"]
---

# Overwrite a note's content

`PUT /v1/vault/notes/{id}`

## Request

- Base URL: `http://localhost:9998`
- URL: `http://localhost:9998/v1/vault/notes/{id}`
- Auth: HTTP bearer

Re-seals the note's blob in place (same id, same blob name; atomic
temp-plus-rename so a crash never halves a note) and bumps `updatedAt`.

## Path parameters

- `id` string, required

## Request body

- object
  - `content` string, required: The full replacement markdown content.

## Response `200`

The updated note (content echoed)

- WireVaultNote: A single decrypted note. `content` is markdown plus RTE entities.
  - `id` string, required
  - `path` string, required
  - `content` string, required
  - `updatedAt` integer, required: Epoch milliseconds of the last write.

## Other responses

- `400`: Invalid request
- `404`: Resource not found
- `423`: The vault is locked (no VMK loaded). Unlock natively in ToolPiper — there is no unlock route. The body is the standard nested error envelope with type `vault_locked`.
- `503`: Vault service unavailable

---

[API](https://skmtc.dev/modelpiper/apis/toolpiper-api.md) · [All operations](https://skmtc.dev/modelpiper/apis/toolpiper-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelpiper/apis/toolpiper-api/revisions/6722bf56385c?raw)
