> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/open-webui/open-webui/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Note

Update an existing note by ID.

## Authorization

Requires user permission `features.notes` or admin role, plus write access to the note.

## Path Parameters

<ParamField path="id" type="string" required>
  Unique identifier of the note to update
</ParamField>

## Request Body

<ParamField body="title" type="string" optional>
  Updated title of the note
</ParamField>

<ParamField body="data" type="object" optional>
  Updated note content data

  <Expandable title="properties">
    <ParamField body="content.md" type="string">
      Updated markdown content
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="folder_id" type="string" optional>
  ID of the folder to move the note to
</ParamField>

<ParamField body="access_grants" type="array" optional>
  Updated access control grants for sharing the note

  <Expandable title="properties">
    <ParamField body="grantee_type" type="string">
      Type of grantee: `user`, `group`, or `public`
    </ParamField>

    <ParamField body="grantee_id" type="string">
      ID of the user or group (omit for public)
    </ParamField>

    <ParamField body="permission" type="string">
      Permission level: `read` or `write`
    </ParamField>
  </Expandable>
</ParamField>

## Response

Returns the updated note object.

<ResponseField name="id" type="string" required>
  Unique identifier for the note
</ResponseField>

<ResponseField name="user_id" type="string" required>
  ID of the note owner
</ResponseField>

<ResponseField name="title" type="string" required>
  Updated title of the note
</ResponseField>

<ResponseField name="data" type="object" optional>
  Updated note content data
</ResponseField>

<ResponseField name="folder_id" type="string" optional>
  ID of the folder containing the note
</ResponseField>

<ResponseField name="access_grants" type="array">
  Updated access control grants for the note
</ResponseField>

<ResponseField name="updated_at" type="integer" required>
  Unix timestamp of last update
</ResponseField>

<ResponseField name="created_at" type="integer" required>
  Unix timestamp of creation
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://your-domain.com/api/notes/note_abc123/update" \
    -H "Authorization: Bearer YOUR_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "title": "Updated Meeting Notes",
      "data": {
        "content": {
          "md": "# Meeting Summary (Updated)\n\nAdded action items..."
        }
      }
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "note_abc123",
    "user_id": "user_123",
    "title": "Updated Meeting Notes",
    "data": {
      "content": {
        "md": "# Meeting Summary (Updated)\n\nAdded action items..."
      }
    },
    "folder_id": null,
    "access_grants": [],
    "updated_at": 1709395500,
    "created_at": 1709308800
  }
  ```

  ```json 401 Unauthorized theme={null}
  {
    "detail": "Unauthorized"
  }
  ```

  ```json 403 Forbidden theme={null}
  {
    "detail": "An error occurred"
  }
  ```

  ```json 404 Not Found theme={null}
  {
    "detail": "Not Found"
  }
  ```

  ```json 400 Bad Request theme={null}
  {
    "detail": "An error occurred"
  }
  ```
</ResponseExample>

## Access Control

* Users must have `features.notes` permission enabled
* User must be the note owner OR have write access via access grants
* Admin users can update any note
* Access grants are filtered based on `sharing.public_notes` permission
* Emits WebSocket event `note-events` to room `note:{id}` after successful update
