---
title: "Move a Skill into a folder (or unfile it)."
method: PUT
path: "/v1/skills/{id}/folder"
tags: ["folders"]
---

# Move a Skill into a folder (or unfile it).

`PUT /v1/skills/{id}/folder`

## Request

- Base URL: `http://localhost:8080`
- URL: `http://localhost:8080/v1/skills/{id}/folder`
- Auth: one of:
  - API key in cookie `dvt_session`
  - HTTP bearer

Sets the skill's containing library folder (DVT-1563). `folderId: null` unfiles
it (root level). The target folder must exist in the caller's org (cross-tenant
folders 404). Requires `skill:write`, and is owner-scoped: only the skill's
owner (`ownerId`) may move it — org admins/owners override. A non-owner editor
gets a 403 with problem type `https://docs.dvt.dev/errors/not-owner`. Independent
of sectionId (skill_sections) — this never touches a skill's section.

## Request body

- object
  - `folderId` string, uuid, nullable, required: Target folder, or null to unfile.

## Response `204`

Moved.

## Other responses

- `400`: Malformed request.
- `401`: Missing, invalid, or expired session.
- `403`: The caller's role does not permit this action.
- `404`: Resource does not exist.

---

[API](https://skmtc.dev/dvt/apis/dvt-rest-api.md) · [All operations](https://skmtc.dev/dvt/apis/dvt-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dvt/apis/dvt-rest-api/revisions/00016f504165?raw)
