---
title: "Update Folder"
method: PUT
path: "/folders/{id}"
tags: ["Folders"]
---

# Update Folder

`PUT /folders/{id}`

## Request

- Base URL: `https://api.wistia.com/modern`
- URL: `https://api.wistia.com/modern/folders/{id}`
- Auth: HTTP bearer

Updates a folder (previously called project)

## Requires api token with one of the following permissions
```
Read, update & delete anything
```

Tokens with the "Act with a team member's permissions" permission
(`all:delegate_to_contact_permissions` scope) can also be used. Requests
made with such a token are authorized using the permissions of the
contact assigned to the token.

An [expiring access token](https://docs.wistia.com/reference/post_expiring-token)
created with the `all:delegate_to_contact_permissions` scope and an
authorization granting the `update` permission on this folder can also be
used. The `update` permission also allows creating, renaming and deleting
the folder's subfolders and using the folder as the destination when
moving or bulk-copying media the token may update.

## Path parameters

- `id` string, required: Hashed ID of the folder (e.g., "4d23503f70")

## Headers

- `X-Wistia-API-Version` string, required

## Request body

- object
  - `name` string: The folder’s new name.
  - `description` string: The folder’s new description.
  - `anonymousCanUpload` boolean: Whether anonymous users can upload media to the folder.
  - `anonymousCanDownload` boolean: Whether anonymous users can download media from the folder.
  - `public` boolean: A flag indicating whether or not the folder is enabled for public access.

## Response `200`

A single folder

- object: A folder (previously called a project) is a container in which to organize media into. It can be used to set permissions that apply to all the media in the folder as well as organizing media into subfolders (previously called media groups).
  - `id` integer, required: A unique numeric identifier for the folder within the system.
  - `name` string, required: The folder’s display name.
  - `description` string, nullable: The folder’s description.
  - `media_count` integer, required: The number of different medias that have been uploaded to the folder.
  - `medias` object, required: A link to where you can fetch the medias for this folder.
    - `url` string: A URL for fetching all child records of the parent record.
  - `created` string, date-time, required: The date that the folder was originally created.
  - `updated` string, date-time, required: The date that the folder was last updated.
  - `hashed_id` string, required: A private hashed id, uniquely identifying the folder within the system.
  - `public` boolean, required: A boolean indicating whether the folder is available for public (anonymous) viewing.
  - `public_id` string, nullable, required: If the folder is public, this field contains a string representing the ID used for referencing the folder in public URLs.
  - `anonymous_can_upload` boolean
  - `anonymous_can_download` boolean
  - `kind` 'library' | 'shared' | 'account', required: Indicates the folder's access scope, relative to the requesting user. One of: - `library`: a library the requester owns. Libraries can still be shared with specific contacts or contact groups; the only restriction is that they cannot be shared with the whole account. - `shared`: a folder the requester has access to via a Contact or ContactGroup sharing — this includes both shared folders and another contact's library that the requester has been granted access to. - `account`: a folder shared with the whole account (everyone in the company can see it).
  - `personal_library` boolean, required: Whether this folder is someone's personal library ("My Library"). Unlike `kind`, this is a property of the folder itself and does not depend on who is requesting — it is `true` for a personal library even when that library has been shared with you (where `kind` would read `shared`). Use this, not `kind`, to tell whether a folder is a personal library.
  - `cursor` string, nullable: A cursor for stable pagination based on current `sort_by` order. You can pass this to `cursor[before]` or `cursor[after]` as a parameter to fetch the records before or after this record in the same sort order. This is only populated if records were fetched with `cursor[enabled]`, or `cursor[before]` or `cursor[after]`.

## Other responses

- `401`: Unauthorized, invalid or missing token
- `403`: Forbidden, token is valid but account does not have access to feature
- `404`: Resource not found
- `500`: Internal server error

## Changes

- **2026-11-03** `b86cb2a7b420`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wistia/apis/data-api/changes/folders/:id/put.md)

---

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