---
title: "Update a shared note (title, content, tags, archived and/or pinned) — any accepted project member, admin or owner"
method: PATCH
path: "/projects/{project_id}/notes/{note_id}"
tags: ["project-notes"]
---

# Update a shared note (title, content, tags, archived and/or pinned) — any accepted project member, admin or owner

`PATCH /projects/{project_id}/notes/{note_id}`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/projects/{project_id}/notes/{note_id}`
- Auth: HTTP bearer

pinned pins or unpins the note for the caller only; pinned_at in responses is the caller's own pin.

## Path parameters

- `project_id` string, uuid, required
- `note_id` string, uuid, required

## Request body

- UpdateProjectNoteDto
  - `title` string
  - `content` object: TipTap/ProseMirror document JSON snapshot from the editor's autosave.
  - `archived` boolean: True archives the note, false restores it. The timestamp stays server-authoritative — clients never send `archived_at`.
  - `tags` CreateNoteTagDto[]: Replaces the note's tags when present (an empty list removes them all); omitted leaves them.
    - `text` string, required
    - `id` string, uuid
    - `color` string
  - `pinned` boolean: True pins the note for the caller, false unpins it. Pins are per user, so this never reorders a teammate's list, and the timestamp is the server's — clients never send `pinned_at`.
  - `is_private` boolean: True makes the note visible only to its author, false shares it with the project again. Only the author may change it; sending the note's current value is a no-op anyone can make.

## Response `200`

- ProjectNoteResponseDto
  - `id` string, required
  - `project_id` string, required
  - `created_by` string
  - `title` string, required
  - `content` object, nullable: TipTap/ProseMirror document JSON. Present on single-note responses; omitted from list responses (which only return metadata).
  - `is_private` boolean, required: True when only the author (`created_by`) can see the note. Only the author may change it.
  - `archived_at` string, date-time, nullable: Set while the note is archived (filed away, still readable); null when active.
  - `pinned_at` string, date-time, nullable: When the requesting user pinned the note; null when they haven't. Pins are per user.
  - `created_at` string
  - `updated_at` string
  - `tags` ProjectNoteTagResponseDto[], required: The note's tags, in the same shape as a personal note's.
    - `id` string, required
    - `text` string, required
    - `color` string

---

[API](https://skmtc.dev/focusbear/apis/focusbear-api.md) - [All operations](https://skmtc.dev/focusbear/apis/focusbear-api/llms.txt) - [OpenAPI document](https://skmtc.dev/focusbear/apis/focusbear-api/revisions/3a83a3b9a811?raw)
