---
title: "Edit a note (owner only)"
method: PUT
path: "/api/notes/{note_id}"
tags: ["Notes"]
---

# Edit a note (owner only)

`PUT /api/notes/{note_id}`

## Path parameters

- `note_id` integer, required

## Headers

- `x-api-token` string, nullable

## Request body

- NoteUpdate — Partial edit. Only fields the client actually sent are written, so an omitted `due_at` keeps its value while an explicit `null` clears it — `model_dump(exclude_unset=True)` is what separates the two. `recipients` and `reminder` are DESIRED STATE, not deltas: send the full list the note should end up with and the server reconciles. Omit either to leave that overlay untouched; send `null` to clear it. This is what makes the edit idempotent — see notes_db.update_note_composite.
  - `body` string, nullable
  - `title` string, nullable
  - `priority` integer, nullable
  - `color` string, nullable
  - `due_at` string, nullable
  - `pinned` boolean, nullable
  - `is_archived` boolean, nullable
  - `id_modulo` integer, nullable
  - `id_modulo_id` integer, nullable
  - `recipients` integer[], nullable
  - `reminder` ReminderPayload
    - `channel` string, nullable
    - `next_fire_at` string, nullable
    - `recurrence_unit` string, nullable
    - `recurrence_interval` integer, nullable
    - `snoozed_until` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/multigest/apis/multigest-protected-api.md) · [All operations](https://skmtc.dev/multigest/apis/multigest-protected-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/multigest/multigest-protected-api/revisions/4b44eb76b3ee/schema)
