---
title: "Update Folder"
method: PATCH
path: "/v1/external/folders/{folderId}"
tags: ["Folder"]
---

# Update Folder

`PATCH /v1/external/folders/{folderId}`

Update a folder's title, description, color, or sharing type (partial update).
Requires edit access.

Changing `sharingType` to `PRIVATE` fails with `403` if the folder still has
other members. `PATCH` cannot change the parent — use
`PUT /v1/external/folders/{folderId}/move` to re-parent or move to the root.

## Path parameters

- `folderId` string, required

## Request body

- PatchFolderRequest — Partial update. Only the fields you include change; omitted fields keep their current value. To re-parent a folder, use `PUT /v1/external/folders/{folderId}/move` — `PATCH` cannot change the parent.
  - `title` string — New folder title. Must not be blank.
  - `sharingType` 'PRIVATE' | 'ALL_MEMBER_VIEWER' | 'ALL_MEMBER_EDITOR' | 'LIMITED' — Who can access a folder and the notes inside it. | Type | View | Edit | |------|------|------| | `PRIVATE` | Only you | Only you | | `ALL_MEMBER_VIEWER` | All workspace members | No member-wide edit access | | `ALL_MEMBER_EDITOR` | All workspace members | All workspace members | | `LIMITED` | Invited members only | Invited members only (per-member role) | - `PRIVATE`: Personal folder. Not shared with the workspace. - `ALL_MEMBER_VIEWER`: Every workspace member can view; no member-wide edit access is granted. - `ALL_MEMBER_EDITOR`: Every workspace member can view and edit. - `LIMITED`: Only explicitly invited members can access, each with an individual role (`VIEWER` or `EDITOR`).
  - `description` string, nullable — New folder description
  - `color` string, nullable — New folder color in hex format (#RRGGBB)

## Response `200`

Folder updated

- FolderDetail — A folder and its metadata.
  - `id` string, required — Unique identifier for the folder
  - `workspaceGuid` string, required — GUID of the workspace the folder belongs to
  - `title` string, required — Folder title (max 50 characters)
  - `description` string, required — Folder description. Empty string when unset.
  - `sharingType` 'PRIVATE' | 'ALL_MEMBER_VIEWER' | 'ALL_MEMBER_EDITOR' | 'LIMITED', required — Who can access a folder and the notes inside it. | Type | View | Edit | |------|------|------| | `PRIVATE` | Only you | Only you | | `ALL_MEMBER_VIEWER` | All workspace members | No member-wide edit access | | `ALL_MEMBER_EDITOR` | All workspace members | All workspace members | | `LIMITED` | Invited members only | Invited members only (per-member role) | - `PRIVATE`: Personal folder. Not shared with the workspace. - `ALL_MEMBER_VIEWER`: Every workspace member can view; no member-wide edit access is granted. - `ALL_MEMBER_EDITOR`: Every workspace member can view and edit. - `LIMITED`: Only explicitly invited members can access, each with an individual role (`VIEWER` or `EDITOR`).
  - `parentId` string, nullable, required — Parent folder ID. `null` for root-level folders. In the List Folders response, `parentId` is also `null` when the parent folder is not accessible to you.
  - `color` string, required — Folder color in hex format (#RRGGBB)
  - `isTeamFolder` boolean, required — `true` when the folder is shared with the workspace (any `sharingType` except `PRIVATE`); `false` for `PRIVATE` folders. Retained for backward compatibility — use `sharingType` for the precise access level.
  - `createdAt` string, date-time, required — ISO-8601 creation timestamp (UTC)
  - `updatedAt` string, date-time, required — ISO-8601 last-update timestamp (UTC)

## Other responses

- `400` — Bad request — blank title or invalid color
- `401` — Unauthorized — missing API key, or a team-only key was used
- `403` — Forbidden — no edit access to this folder, or a `PRIVATE` transition while the folder still has members
- `404` — Folder not found

---

[API](https://skmtc.net/tiro/apis/tiro-api.md) · [All operations](https://skmtc.net/tiro/apis/tiro-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tiro/tiro-api/versions/ae18d7961aa4/schema)
