---
title: "Create Folder"
method: POST
path: "/folders"
tags: ["Folders"]
---

# Create Folder

`POST /folders`

## Request

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

Creates a new folder (previously called project). If the folder is created successfully the Location HTTP header will point to the new folder.

## 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
`account` authorization granting the `create-folders` permission can also
be used. The folder's creator is the contact behind the token (the account
owner for a token minted from an account-level token); `adminEmail` selects
the folder's administrator (defaults to the account owner). `personalLibrary`
creates the folder inside the My Library of the contact behind the token.
The new folder is not covered by the token that created it, so follow-up
requests need a token whose authorizations name the returned hashed id.

## Headers

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

## Request body

- object
  - `name` string: The name of the folder you want to create.
  - `adminEmail` string: The email address of the person you want to set as the owner of this folder. Defaults to the Wistia Account Owner.
  - `description` string: The folder’s 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.
  - `personalLibrary` boolean: When true, creates the folder inside the requesting user's personal "My Library" (owned by them) instead of a shared account folder.

## Response `201`

Folder created

- 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
- `500`: Internal server error

## Changes

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

[Operation history](https://skmtc.dev/wistia/apis/data-api/changes/folders/post.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)
