Wistia Folders API
The Folders API from Wistia — 3 operation(s) for folders.
The Folders API from Wistia — 3 operation(s) for folders.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/wistia-folders-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Wistia Folders API
version: '1.0'
description: 'Operations tagged Folders across 3 of this provider''s published API definitions: wistia-data-api-2026-01-openapi.yml, wistia-data-api-modern-edge-openapi.yml, wistia-folders-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.wistia.com/modern
- url: https://api.wistia.com/v1
description: Wistia Data API production server
tags:
- name: Folders
x-displayName: Folders
paths:
/folders:
get:
summary: List Folders
description: 'Lists folders (previously called projects) belonging to the account.
<!--- HIDE-MCP -->
## Requires api token with one of the following permissions
```
Read all folder and media data
```
<!--- /HIDE-MCP -->
'
parameters:
- name: page
in: query
description: 'The page number to retrieve. This cannot be combined with `cursor`,
pagination.
'
required: false
schema:
type: integer
- name: per_page
in: query
description: The number of medias per page. Use this for both offset pagination and cursor pagination.
required: false
schema:
type: integer
- name: cursor
in: query
description: 'If `cursor[enabled]` is set to 1 than cursor pagination is enabled and the
first set of records are fetched up to the `per_page`. Cursor
pagination will also be turned on if `cursor[before]` or `cursor[after]`
are set. Records returned will have a `cursor` property set which can be used to fetch more records in the same `sort_by` ordering.
The cursor value of the last record can be used to fetch records after the current result set and
the cursor of the first record can be used to fetch records before the result set.
NOTE: a cursor value is only valid if the `sort_by` value hasn''t changed from the
last fetch. For example, you cannot fetch using `sort_by` id and than pass that
cursor value to a `sort_by` name.
'
required: false
schema:
unevaluatedProperties: false
type: object
properties:
enabled:
description: 'If `cursor[enabled]` is set to 1, the first result set will be fetched with cursor pagination enabled. This
values is ignored if `cursor[before]` or `cursor[after]` are set.
'
type: integer
enum:
- 0
- 1
before:
description: 'If `cursor[before]` is set than cursor pagination is enabled and all records
before the cursor up to the `per_page` are returned. This feature is useful for
fetching "new records", for example, in a "pull to refersh" feature when showing records in a descending
order.
'
type: string
after:
description: 'If `cursor[after]` is set than cursor pagination is enabled and all records
after the cursor up to the `per_page` are returned.
'
type: string
style: deepObject
- name: sort_by
in: query
description: 'Ordering. When using cursor pagination (see cursor param),
only `id`, `updated` and `created` are supported. All other sort_by options
require offset pagination.
'
required: false
schema:
type: string
enum:
- name
- created
- updated
- mediaCount
- id
- name: sort_direction
in: query
description: Ordering Sort Direction (0 = desc, 1 = asc; default is 1)
required: false
schema:
type: integer
enum:
- 0
- 1
- name: hashed_ids[]
in: query
description: A collection of hashed ids belonging to folders to fetch
required: false
schema:
type: array
items:
type: string
responses:
'200':
description: A list of folders
content:
application/json:
schema:
type: array
items:
unevaluatedProperties: false
type: object
description: '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).
'
properties:
personal_library:
description: '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.
'
type: boolean
examples:
- false
kind:
description: '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).
'
type: string
enum:
- library
- shared
- account
examples:
- shared
id:
description: A unique numeric identifier for the folder within the system.
type: integer
examples:
- 22570
name:
description: The folder’s display name.
type: string
examples:
- My Folder Title
description:
description: The folder’s description.
type:
- string
- 'null'
examples:
- About My Folder
media_count:
description: The number of different medias that have been uploaded to the folder.
type: integer
examples:
- 2
medias:
description: A link to where you can fetch the medias for this folder.
type: object
properties:
protected:
description: Whether the media is protected (e.g. requires a password or other authentication to view). Null if the media is not protected.
type:
- boolean
- 'null'
id:
description: A unique numeric identifier for the media within the system.
type: integer
name:
description: The display name of the media.
type: string
type:
description: A string representing what type of media this is.
type: string
enum:
- Video
- Audio
- Image
- PdfDocument
- MicrosoftOfficeDocument
- Swf
- UnknownType
archived:
description: Whether or not the media is archived, either true or false.
type: boolean
created:
description: The date when the media was originally uploaded.
type: string
format: date-time
updated:
description: The date when the media was last changed.
type: string
format: date-time
duration:
unevaluatedProperties: false
description: Specifies the length (in seconds) for audio and video files. Specifies number of pages in the document. Omitted for other types of media.
oneOf:
- type: number
- type: 'null'
embedCode:
description: 'DEPRECATED: If you want to programmatically embed videos, follow the construct an embed code guide.
'
type: string
deprecated: true
hashed_id:
description: A unique alphanumeric identifier for this media.
type: string
description:
description: A description for the media which usually appears near the top of the sidebar on the media's page.
type: string
progress:
description: A floating point value between 0 and 1 that indicates the progress of the processing for this file.
type: number
maximum: 1
minimum: 0
status:
description: 'Post upload processing status. - `queued`: the file is waiting in the queue to be processed. - `processing`: the file is actively being processed. - `ready`: the file has been fully processed and is ready for embedding and viewing. - `failed`: the file was unable to be processed (usually a format or size error).
'
type: string
enum:
- queued
- processing
- ready
- failed
section:
unevaluatedProperties: false
description: The title of the section in which the media appears. This attribute is omitted if the media is not in a section (default).
oneOf:
- type: string
- type: 'null'
thumbnail:
unevaluatedProperties: false
type: object
properties:
url:
type: string
width:
type: integer
height:
type: integer
created:
description: The date that the folder was originally created.
type: string
format: date-time
examples:
- '2010-08-13T18:47:39+00:00'
updated:
description: The date that the folder was last updated.
type: string
format: date-time
examples:
- '2010-08-19T21:47:00+00:00'
hashed_id:
description: A private hashed id, uniquely identifying the folder within the system.
type: string
examples:
- 4d23503f70
public:
description: A boolean indicating whether the folder is available for public (anonymous) viewing.
type: boolean
examples:
- false
public_id:
description: If the folder is public, this field contains a string representing the ID used for referencing the folder in public URLs.
type:
- string
- 'null'
examples:
- 4bD
anonymous_can_upload:
type: boolean
examples:
- false
anonymous_can_download:
type: boolean
examples:
- false
cursor:
description: 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]`.
type:
- string
- 'null'
required:
- id
- name
- media_count
- created
- updated
- hashed_id
- public
- public_id
- medias
'400':
description: Bad request
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
description: Error message detailing the reason for the bad request.
type: string
examples:
- Bad request
errors:
description: Array of error messages detailing the reasons for the bad request.
type: array
items:
type: string
'401':
description: Unauthorized, invalid or missing token
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
code:
description: A machine-readable identifier for the specific authorization failure.
type: string
enum:
- unauthorized_credentials
- account_inactive
- unauthorized_scope
- unauthorized_params
error:
type: string
examples:
- Invalid credentials.
'500':
description: Internal server error
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Internal server error
tags:
- Folders
security:
- BearerAuth: []
post:
summary: Create Folder
description: 'Creates a new folder (previously called project). If the folder is created successfully the Location HTTP header will point to the new folder.
<!--- HIDE-MCP -->
## Requires api token with one of the following permissions
```
Read, update & delete anything
```
<!--- /HIDE-MCP -->
'
requestBody:
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
name:
description: The name of the folder you want to create.
type: string
examples:
- My New Folder
adminEmail:
description: The email address of the person you want to set as the owner of this folder. Defaults to the Wistia Account Owner.
type: string
examples:
- admin@example.com
public:
unevaluatedProperties: false
x-wistia-mcp-type: boolean
oneOf:
- type: string
description: A flag indicating whether or not the folder is enabled for public access. Set to “1” to enable and “0” to disable.
enum:
- '0'
- '1'
- type: boolean
description: A flag indicating whether or not the folder is enabled for public access. Set to `true` to enable and `false` to disable.
examples:
- false
responses:
'201':
description: Folder created
content:
application/json:
schema:
unevaluatedProperties: false
type: object
description: '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).
'
properties:
personal_library:
description: '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.
'
type: boolean
examples:
- false
kind:
description: '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).
'
type: string
enum:
- library
- shared
- account
examples:
- shared
id:
description: A unique numeric identifier for the folder within the system.
type: integer
examples:
- 22570
name:
description: The folder’s display name.
type: string
examples:
- My Folder Title
description:
description: The folder’s description.
type:
- string
- 'null'
examples:
- About My Folder
media_count:
description: The number of different medias that have been uploaded to the folder.
type: integer
examples:
- 2
medias:
description: A link to where you can fetch the medias for this folder.
type: object
properties:
protected:
description: Whether the media is protected (e.g. requires a password or other authentication to view). Null if the media is not protected.
type:
- boolean
- 'null'
id:
description: A unique numeric identifier for the media within the system.
type: integer
name:
description: The display name of the media.
type: string
type:
description: A string representing what type of media this is.
type: string
enum:
- Video
- Audio
- Image
- PdfDocument
- MicrosoftOfficeDocument
- Swf
- UnknownType
archived:
description: Whether or not the media is archived, either true or false.
type: boolean
created:
description: The date when the media was originally uploaded.
type: string
format: date-time
updated:
description: The date when the media was last changed.
type: string
format: date-time
duration:
unevaluatedProperties: false
description: Specifies the length (in seconds) for audio and video files. Specifies number of pages in the document. Omitted for other types of media.
oneOf:
- type: number
- type: 'null'
embedCode:
description: 'DEPRECATED: If you want to programmatically embed videos, follow the construct an embed code guide.
'
type: string
deprecated: true
hashed_id:
description: A unique alphanumeric identifier for this media.
type: string
description:
description: A description for the media which usually appears near the top of the sidebar on the media's page.
type: string
progress:
description: A floating point value between 0 and 1 that indicates the progress of the processing for this file.
type: number
maximum: 1
minimum: 0
status:
description: 'Post upload processing status. - `queued`: the file is waiting in the queue to be processed. - `processing`: the file is actively being processed. - `ready`: the file has been fully processed and is ready for embedding and viewing. - `failed`: the file was unable to be processed (usually a format or size error).
'
type: string
enum:
- queued
- processing
- ready
- failed
section:
unevaluatedProperties: false
description: The title of the section in which the media appears. This attribute is omitted if the media is not in a section (default).
oneOf:
- type: string
- type: 'null'
thumbnail:
unevaluatedProperties: false
type: object
properties:
url:
type: string
width:
type: integer
height:
type: integer
created:
description: The date that the folder was originally created.
type: string
format: date-time
examples:
- '2010-08-13T18:47:39+00:00'
updated:
description: The date that the folder was last updated.
type: string
format: date-time
examples:
- '2010-08-19T21:47:00+00:00'
hashed_id:
description: A private hashed id, uniquely identifying the folder within the system.
type: string
examples:
- 4d23503f70
public:
description: A boolean indicating whether the folder is available for public (anonymous) viewing.
type: boolean
examples:
- false
public_id:
description: If the folder is public, this field contains a string representing the ID used for referencing the folder in public URLs.
type:
- string
- 'null'
examples:
- 4bD
anonymous_can_upload:
type: boolean
examples:
- false
anonymous_can_download:
type: boolean
examples:
- false
cursor:
description: 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]`.
type:
- string
- 'null'
required:
- id
- name
- media_count
- created
- updated
- hashed_id
- public
- public_id
- medias
'401':
description: Unauthorized, invalid or missing token
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
code:
description: A machine-readable identifier for the specific authorization failure.
type: string
enum:
- unauthorized_credentials
- account_inactive
- unauthorized_scope
- unauthorized_params
error:
type: string
examples:
- Invalid credentials.
'500':
description: Internal server error
content:
application/json:
schema:
unevaluatedProperties: false
type: object
properties:
error:
type: string
examples:
- Internal server error
tags:
- Folders
security:
- BearerAuth: []
servers:
- url: https://api.wistia.com/modern
/folders/{id}:
get:
summary: Show Folder
description: 'Retrieves a single folder (previously called project).
<!--- HIDE-MCP -->
## Requires api token with one of the following permissions
```
Read all folder and media data
```
<!--- /HIDE-MCP -->
'
parameters:
- name: id
in: path
description: Folder Hashed ID
required: true
schema:
description: Hashed ID of the folder (e.g., "4d23503f70")
type: string
responses:
'200':
description: A single folder
content:
application/json:
schema:
unevaluatedProperties: false
type: object
description: '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).
'
properties:
personal_library:
description: '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.
'
type: boolean
examples:
- false
kind:
description: '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).
'
type: string
enum:
- library
- shared
- account
examples:
- shared
id:
description: A unique numeric identifier for the folder within the system.
type: integer
examples:
- 22570
name:
description: The folder’s display name.
type: string
examples:
- My Folder Title
description:
description: The folder’s description.
type:
- string
- 'null'
examples:
- About My Folder
media_count:
description: The number of different medias that have been uploaded to the folder.
type: integer
examples:
- 2
medias:
description: A link to where you can fetch the medias for this folder.
type: object
properties:
protected:
description: Whether the media is protected (e.g. requires a password or other authentication to view). Null if the media is not protected.
type:
- boolean
- 'null'
id:
description: A unique numeric identifier for the media within the system.
type: integer
name:
description: The display name of the me
# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wistia/refs/heads/main/openapi/wistia-folders-api-openapi.yml