Documentation Index
Fetch the complete documentation index at: https://docs.linkutm.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Folders organize links into a workspace-scoped hierarchy. A folder can have a parent (one level of nesting is returned in tree views) and an optional default flag that determines where new links land. Endpoints live under/api/v1/folders. All folder endpoints require a JWT. Creating, listing, and setting the default folder also require the x-workspace-id header.
Folders are gated behind the
tagsAndFolders plan feature. Creating a folder on a plan without that feature returns 403.Create a folder
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Content-Type: application/json | Yes |
Body
Folder name. The reserved name
Links (case-insensitive, trimmed) is rejected with 400.Display color for the folder.
UUID of the parent folder. Must belong to the same workspace. Omit for a root folder.
If
true, this folder becomes the workspace default for new links. Any existing default in the workspace is cleared first.Example request
Example response
Errors
| Code | When |
|---|---|
400 | name is the reserved word Links, or parentId belongs to a different workspace |
403 | The tagsAndFolders feature is not available on the workspace plan |
404 | parentId folder not found |
409 | A folder with the same name already exists |
List folders (tree)
children. Inactive folders are excluded. Folders are sorted by name ascending.
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Example request
Example response
Only root folders are returned at the top level. Child folders appear inside their parent’s
children array, not as separate top-level entries.List folders (flat)
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Example request
Example response
| Field | Type | Notes |
|---|---|---|
folders | array | All folders, sorted by active first, then default first, then name ascending |
unsortedCount | integer | Count of active links with no folder (folderId is null) |
Get a folder by ID
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes |
Example request
Example response
The
links array is capped at 20 entries. Use the tag or link list endpoints for full pagination.Errors
| Code | When |
|---|---|
404 | Folder not found |
Update a folder
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
Content-Type: application/json | Yes |
Body
New folder name. The reserved name
Links is rejected with 400. A name that collides with another folder in the same parent and workspace is rejected with 409 (case-insensitive).New display color.
UUID of the new parent folder. Pass
null to move the folder to the root. The new parent must belong to the same workspace, cannot be the folder itself, and cannot be a descendant of the folder.If
true, this folder becomes the workspace default and any existing default is cleared first.Example request
Example response
Errors
| Code | When |
|---|---|
400 | name is the reserved word Links; parentId is the folder itself; parentId is a descendant of this folder; parentId belongs to a different workspace |
404 | Folder not found, or parentId folder not found |
409 | A folder with the same name already exists in the target parent |
Delete a folder
folderId is set to null (they become unfiled). Child folders are not deleted - their parentId is set to null (they become root folders).
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes |
Example request
Example response
Returns the deleted folder record.Errors
| Code | When |
|---|---|
404 | Folder not found |
Move links to a folder
folderId on each link.
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
Content-Type: application/json | Yes |
Body
Array of link UUIDs to move.
UUID of the destination folder, or
null to unfile the links. When a UUID is given, the folder must exist.Example request
Example response
count is the number of links updated.
Errors
| Code | When |
|---|---|
404 | Destination folderId folder not found |
Set the default folder
null clears the default so new links are unfiled. Any existing default in the workspace is cleared first.
Headers
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <jwt> | Yes | |
x-workspace-id: <uuid_or_slug> | Yes | Target workspace |
Content-Type: application/json | Yes |
Body
UUID of the folder to set as default, or
null to clear the default. When a UUID is given, the folder must exist and belong to the workspace.Example request
Example response
When a folder is set, the updated folder record is returned:folderId is null, the response is null (new links become unfiled).
Errors
| Code | When |
|---|---|
400 | The folder belongs to a different workspace |
404 | Folder not found |