---
title: "Update note"
method: PUT
path: "/notes/{id}"
tags: ["Notes"]
---

# Update note

`PUT /notes/{id}`

## Request

- Base URL: `https://api.caliuapp.com`
- URL: `https://api.caliuapp.com/notes/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `caliu_session`

Update a note. Supports optimistic concurrency via `expected_updated_at`.

## Path parameters

- `id` string, required: Resource ID

## Request body

- object
  - `content` string: Note content in markdown. Title is derived from the first line.
  - `is_pinned` boolean
  - `expected_updated_at` string: For optimistic concurrency — rejected if server version is newer
  - `base_rev` integer: The `rev` of the note your content was edited from. With it, edits made since are kept and merged instead of answering 409.
  - `auto_sync_tags` boolean: Opt-in: when content is provided, extract #hashtags and replace the note's tags. Default false for backward compatibility — existing clients managing tags via /tags endpoints are unaffected.
  - `auto_link_notes` boolean: Opt-in: when content is provided, resolve bare [[Note Title]] wiki links against your existing notes and rewrite them to the canonical [[id|Title]] form. Unresolved titles are left as-is. Default false for backward compatibility.

## Response `200`

Note updated

- object
  - `note` Note, required
    - `id` string, required
    - `title` string, required
    - `content` string, required
    - `isPinned` boolean, required
    - `isEncrypted` boolean, required
    - `encryptionHint` string, nullable, required
    - `wordCount` number, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `deletedAt` string, nullable, required
    - `archivedAt` string, nullable, required
    - `sharedAt` string, nullable, required
    - `sortOrder` number, nullable, required
    - `rev` number: Content revision: one more for every accepted content change. Send it back as `base_rev` on `PUT /notes/{id}`.
    - `tags` object[]
      - `id` string, required
      - `name` string, required
    - `role` 'editor' | 'viewer': The requester's role, on notes shared with them (get and search).
    - `ownerId` string: The owner, on notes shared with the requester.

## Other responses

- `404`: Not found
- `409`: Conflict — note modified by another client
- `413`: Content above 1,000,000 UTF-8 bytes
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/caliuapp/apis/caliu-api.md) · [All operations](https://skmtc.dev/caliuapp/apis/caliu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/caliuapp/apis/caliu-api/revisions/1ba4d3f687fe?raw)
