openapi: 3.2.0 info: title: Wistia Media API version: '1.0' description: 'Operations tagged Media across 3 of this provider''s published API definitions: wistia-data-api-2026-01-openapi.yml, wistia-data-api-modern-edge-openapi.yml, wistia-data-api-v1-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 tags: - name: Media x-displayName: Media paths: /medias: get: summary: List Media description: 'Lists the media belonging to the account. This endpoint can also be used to do a batch fetch based off of the hashed id. ## Requires api token with one of the following permissions ``` Read all folder and media data ``` ' 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` and `created` are supported. All other sort_by options (`name`, `updated`, `position`) require offset pagination. ' required: false schema: type: string enum: - name - created - updated - position - 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: folder_id in: query description: A hashed ID specifying the folder from which you would like to get results. required: false schema: description: Hashed ID of the folder (e.g., "4d23503f70") type: string - name: name in: query description: Find a media or medias whose name exactly matches this parameter. required: false schema: type: string - name: description_format in: query description: Format for media descriptions required: false schema: type: string examples: - markdown const: markdown - name: type in: query description: A string specifying which type of media you would like to get. required: false schema: type: string enum: - Video - Audio - Image - PdfDocument - MicrosoftOfficeDocument - Swf - UnknownType - name: hashed_ids[] in: query description: Find all of the medias by these hashed_ids. required: false schema: type: array items: type: string explode: true style: form - name: tags[] in: query description: Find all of the medias that match all of these tag names. required: false schema: type: array items: type: string - name: archived in: query description: Filter by archived status. True will return only archived medias, while false will return only active medias. required: false schema: type: boolean responses: '200': description: Successful response content: application/json: schema: type: array items: unevaluatedProperties: false allOf: - type: object description: 'A media generally represents a video or an audio which can be embedded into your website. CDN-backed medias are accessible using this url structure: https://fast.wistia.com/embed/medias/{hashed_id}.m3u8. For more information, see https://docs.wistia.com/docs/asset-urls#getting-hls-assets. ' 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 - type: object properties: folder: unevaluatedProperties: false oneOf: - unevaluatedProperties: false type: object properties: 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 hashed_id: description: A private hashed id, uniquely identifying the folder within the system. type: string examples: - 4d23503f70 - type: 'null' required: - folder - type: object properties: assets: description: An array of the assets available for this media. type: array items: unevaluatedProperties: false type: object properties: url: description: A direct-access URL to the content of the asset. type: string width: unevaluatedProperties: false description: The width of this specific asset, if applicable. oneOf: - type: integer - type: 'null' height: unevaluatedProperties: false description: The height of this specific asset, if applicable. oneOf: - type: integer - type: 'null' file_size: unevaluatedProperties: false description: The size of the asset file that’s referenced by url, measured in bytes. oneOf: - type: integer - type: 'null' content_type: unevaluatedProperties: false description: The asset’s content type. oneOf: - type: string - type: 'null' type: description: 'The internal type of the asset, describing how the asset should be used. Values can include OriginalFile, FlashVideoFile, MdFlashVideoFile, HdFlashVideoFile, Mp4VideoFile, MdMp4VideoFile, HdMp4VideoFile, IPhoneVideoFile, StillImageFile, SwfFile, Mp3AudioFile, and LargeImageFile. ' type: string - type: object properties: subfolder: unevaluatedProperties: false description: The subfolder (media group) in which the media appears. Null if the media is not in a subfolder. allOf: - type: object description: A subfolder within a folder that contains media. properties: hashed_id: description: A unique alphanumeric identifier for this subfolder. type: string examples: - abc123def4 name: description: The display name of the subfolder. type: - string - 'null' examples: - Marketing Videos description: description: A description for the subfolder. type: - string - 'null' examples: - Collection of all marketing and promotional videos position: description: The position of this subfolder within its folder, used for ordering. type: - integer - 'null' examples: - 1 created: description: The date when the subfolder was created. type: - string - 'null' format: date-time examples: - '2024-01-15T10:30:00+00:00' updated: description: The date when the subfolder was last modified. type: - string - 'null' format: date-time examples: - '2024-01-20T14:45:00+00:00' 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: - hashed_id - position - created - updated - type: object properties: tags: description: Tags associated with this media. type: array items: unevaluatedProperties: false type: object properties: name: description: The display name of the tag. type: string - type: object properties: 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' '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: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/{mediaHashedId}: get: summary: Show Media description: 'Fetches a single media by its hashed id. ## Requires api token with one of the following permissions ``` Read all folder and media data ``` ' parameters: - name: mediaHashedId in: path description: The hashed ID of the media. required: true schema: description: Hashed ID of the media (e.g., "4d23503f70") type: string - name: description_format in: query description: Format for media descriptions required: false schema: type: string examples: - markdown const: markdown responses: '200': description: Successful response content: application/json: schema: unevaluatedProperties: false allOf: - type: object description: 'A media generally represents a video or an audio which can be embedded into your website. CDN-backed medias are accessible using this url structure: https://fast.wistia.com/embed/medias/{hashed_id}.m3u8. For more information, see https://docs.wistia.com/docs/asset-urls#getting-hls-assets. ' 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 - type: object properties: folder: unevaluatedProperties: false oneOf: - unevaluatedProperties: false type: object properties: 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 hashed_id: description: A private hashed id, uniquely identifying the folder within the system. type: string examples: - 4d23503f70 - type: 'null' required: - folder - type: object properties: assets: description: An array of the assets available for this media. type: array items: unevaluatedProperties: false type: object properties: url: description: A direct-access URL to the content of the asset. type: string width: unevaluatedProperties: false description: The width of this specific asset, if applicable. oneOf: - type: integer - type: 'null' height: unevaluatedProperties: false description: The height of this specific asset, if applicable. oneOf: - type: integer - type: 'null' file_size: unevaluatedProperties: false description: The size of the asset file that’s referenced by url, measured in bytes. oneOf: - type: integer - type: 'null' content_type: unevaluatedProperties: false description: The asset’s content type. oneOf: - type: string - type: 'null' type: description: 'The internal type of the asset, describing how the asset should be used. Values can include OriginalFile, FlashVideoFile, MdFlashVideoFile, HdFlashVideoFile, Mp4VideoFile, MdMp4VideoFile, HdMp4VideoFile, IPhoneVideoFile, StillImageFile, SwfFile, Mp3AudioFile, and LargeImageFile. ' type: string - type: object properties: subfolder: unevaluatedProperties: false description: The subfolder (media group) in which the media appears. Null if the media is not in a subfolder. allOf: - type: object description: A subfolder within a folder that contains media. properties: hashed_id: description: A unique alphanumeric identifier for this subfolder. type: string examples: - abc123def4 name: description: The display name of the subfolder. type: - string - 'null' examples: - Marketing Videos description: description: A description for the subfolder. type: - string - 'null' examples: - Collection of all marketing and promotional videos position: description: The position of this subfolder within its folder, used for ordering. type: - integer - 'null' examples: - 1 created: description: The date when the subfolder was created. type: - string - 'null' format: date-time examples: - '2024-01-15T10:30:00+00:00' updated: description: The date when the subfolder was last modified. type: - string - 'null' format: date-time examples: - '2024-01-20T14:45:00+00:00' 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: - hashed_id - position - created - updated - type: object properties: tags: description: Tags associated with this media. type: array items: unevaluatedProperties: false type: object properties: name: description: The display name of the tag. 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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] put: summary: Update Media description: 'Updates the attributes on a media. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' parameters: - name: mediaHashedId in: path description: The hashed ID of the media. required: true schema: description: Hashed ID of the media (e.g., "4d23503f70") type: string requestBody: required: false content: application/json: schema: unevaluatedProperties: false type: object properties: name: description: The media’s new name. type: string new_still_media_id: description: 'The Wistia hashed ID of an image that will replace the still that’s displayed before the player starts playing. ' type: string description: description: A new description for this media. Accepts plain text or markdown. type: string tags: description: An array of tag names to apply to the media. Note that this will replace any existing tags! type: array items: type: string responses: '200': description: Successful response content: application/json: schema: unevaluatedProperties: false allOf: - type: object description: 'A media generally represents a video or an audio which can be embedded into your website. CDN-backed medias are accessible using this url structure: https://fast.wistia.com/embed/medias/{hashed_id}.m3u8. For more information, see https://docs.wistia.com/docs/asset-urls#getting-hls-assets. ' 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 - type: object properties: tags: description: Tags associated with this media. type: array items: unevaluatedProperties: false type: object properties: name: description: The display name of the tag. type: string '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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] delete: summary: Delete Media description: 'Deletes a media. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' parameters: - name: mediaHashedId in: path description: The hashed ID of the media. required: true schema: description: Hashed ID of the media (e.g., "4d23503f70") type: string responses: '200': description: Successful deletion of the media. content: application/json: schema: type: object description: 'A media generally represents a video or an audio which can be embedded into your website. CDN-backed medias are accessible using this url structure: https://fast.wistia.com/embed/medias/{hashed_id}.m3u8. For more information, see https://docs.wistia.com/docs/asset-urls#getting-hls-assets. ' 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 '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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/{mediaHashedId}/copy: post: summary: Copy Media description: 'This endpoint copies a media and its assets to a destination folder (defaults to source media). ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' parameters: - name: mediaHashedId in: path description: The hashed ID of the media. required: true schema: description: Hashed ID of the media (e.g., "4d23503f70") type: string requestBody: content: application/json: schema: unevaluatedProperties: false type: object properties: folder_id: description: The ID of the folder where you want the new copy placed. Defaults to the source media’s current folder if omitted or invalid. type: integer owner: description: An email address specifying the owner of the new media. Defaults to the source media’s current owner if omitted or invalid. type: string format: email responses: '201': description: Successful creation of the media copy. headers: Location: description: The URL where the newly created media resource resides. schema: type: string format: uri content: application/json: schema: unevaluatedProperties: false allOf: - type: object description: 'A media generally represents a video or an audio which can be embedded into your website. CDN-backed medias are accessible using this url structure: https://fast.wistia.com/embed/medias/{hashed_id}.m3u8. For more information, see https://docs.wistia.com/docs/asset-urls#getting-hls-assets. ' 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 - type: object properties: folder: unevaluatedProperties: false oneOf: - unevaluatedProperties: false type: object properties: 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 hashed_id: description: A private hashed id, uniquely identifying the folder within the system. type: string examples: - 4d23503f70 - type: 'null' required: - folder '400': description: Bad request, e.g. copy failure. content: application/json: schema: unevaluatedProperties: false type: object properties: error: 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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '405': description: Method not allowed, e.g. trying to copy archived media. content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/{mediaHashedId}/swap: put: summary: Swap Media description: 'Swap one media with another media. This operation queues a background job to replace the original media with the replacement media while preserving the original media''s hashed ID and URLs. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' parameters: - name: mediaHashedId in: path description: The hashed ID of the media to be replaced. required: true schema: description: Hashed ID of the media to be replaced. type: string requestBody: content: application/json: schema: unevaluatedProperties: false type: object properties: replacement_media_id: description: The hashed ID of the media that will replace the original media. Must be the same media type as the original. type: string required: - replacement_media_id responses: '200': description: Successfully queued background job for media swap. content: application/json: schema: unevaluatedProperties: false type: object properties: message: type: string examples: - Media swap has been queued for processing. media: type: object description: 'A media generally represents a video or an audio which can be embedded into your website. CDN-backed medias are accessible using this url structure: https://fast.wistia.com/embed/medias/{hashed_id}.m3u8. For more information, see https://docs.wistia.com/docs/asset-urls#getting-hls-assets. ' 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 background_job_status: unevaluatedProperties: false type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status '400': description: Bad request, e.g. missing replacement_media_id or media type mismatch. content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Replacement media must be the same type as the original media (Video). '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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/{mediaHashedId}/stats: get: summary: Show Media Aggregated Stats description: 'Aggregated tracking statistics for a video embedded on your site. ## Requires api token with one of the following permissions ``` Read all folder and media data ``` ' parameters: - name: mediaHashedId in: path description: The hashed ID of the video. required: true schema: description: Hashed ID of the media (e.g., "4d23503f70") type: string responses: '200': description: Successful retrieval of video statistics. content: application/json: schema: unevaluatedProperties: false type: object properties: id: description: A unique numeric identifier for the video within the system. type: integer hashed_id: description: A unique alphanumeric identifier for the video within the system. type: string name: description: The display name of the video. type: string stats: unevaluatedProperties: false description: An object representing the aggregated embed statistics for this video. type: object properties: pageLoads: description: The total number of times that the page containing the embedded video has been loaded. type: integer visitors: description: The number of unique visitors to the page containing the embedded video. type: integer percentOfVisitorsClickingPlay: description: An integer between 0 and 100 that shows what percentage of the time someone who saw the page containing the embedded video played the video. type: integer plays: description: The total number of times that the video has been played. type: integer averagePercentWatched: description: An integer between 0 and 100. It shows the average percentage of the video that was watched over every time the video was played. type: integer '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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/{mediaHashedId}/translate: post: summary: Translate Media x-wistia-mcp-annotations: open_world_hint: true destructive_hint: false description: 'Translates the transcript for a media. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' parameters: - name: mediaHashedId in: path description: The hashed ID of the media. required: true schema: type: string requestBody: content: application/json: schema: unevaluatedProperties: false type: object properties: target_language: description: The language to translate the transcript to as a 3-character IETF language code. type: string source_language: description: The language of the source transcript to be translated as a 3-character IETF language code. If not provided, the media's default transcript language will be used. type: string required: - target_language responses: '201': description: Successfully queued background job for translation of the transcript. content: application/json: schema: unevaluatedProperties: false type: object properties: message: type: string examples: - Translation request has been successfully queued for processing. background_job_status: unevaluatedProperties: false type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status '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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '422': description: Unprocessible entity, parameters provided were invalid. content: application/json: schema: unevaluatedProperties: false type: object properties: error: description: Error message detailing why the request failed. type: string '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/archive: put: summary: Archive Media description: 'This method accepts a list of up to 100 medias to archive per request. It processes requests asynchronously and will return a background_job_status object rather than the typical Media response object. Note that webinar medias and Soapbox videos imported to Wistia before September 1, 2023 cannot be archived. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' requestBody: required: true content: application/json: schema: unevaluatedProperties: false type: object properties: hashed_ids: description: An array of the media hashed IDs to be archived. type: array items: type: string required: - hashed_ids responses: '200': description: Successful archival of media. content: application/json: schema: unevaluatedProperties: false type: object properties: message: description: A confirmation message that the background job has been queued. type: string background_job_status: unevaluatedProperties: false type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status '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. '403': description: Forbidden, e.g. account does not have access to archiving. content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string '422': description: Unprocessable entity, e.g. too many media requested. content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/move: put: summary: Move Media description: 'Move one or many media to a different folder and optionally to a specific subfolder. Max 100 media per request, and max 10 requests in 5 minutes. Note: this is a different rate limit than applies to the rest of the api! If a subfolder_id is provided, media will be moved to that subfolder. The subfolder must belong to the specified folder. Returns a Background Job as the move is async. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' requestBody: required: true content: application/json: schema: unevaluatedProperties: false type: object properties: hashed_ids: description: An array of the media hashed IDs to be moved. type: array items: type: string folder_id: description: The hashed ID of the folder where you want the media moved. type: string subfolder_id: description: Optional. The hashed ID of the subfolder where you want the media moved. If not provided, media will be moved to the folder's default subfolder. The subfolder must belong to the specified folder. type: string required: - hashed_ids - folder_id responses: '200': description: Successfully queued move of all the media. content: application/json: schema: unevaluatedProperties: false type: object properties: message: type: string background_job_status: unevaluatedProperties: false type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status '207': description: Successfully queued move of at least one media. Other provided hashed_ids failed. content: application/json: schema: unevaluatedProperties: false type: object properties: message: type: string background_job_status: unevaluatedProperties: false type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status partial_errors: type: array items: unevaluatedProperties: false type: object properties: media_id: type: string error: type: string '400': description: Invalid request. content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string example: error: You can only request to move 100 or less media at one time. '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. '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/restore: put: summary: Restore Media description: 'Restores archived medias to your account. This method accepts a list of up to 100 medias to restore per request. It processes requests asynchronously and will return a background_job_status object rather than the typical Media response object. Your account must have access to the Archiving feature to use this method. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' requestBody: required: true content: application/json: schema: unevaluatedProperties: false type: object properties: hashed_ids: description: An array of the media hashed IDs to be restored. type: array items: type: string folder_id: description: The hashed ID of the folder to restore the medias to. type: string required: - hashed_ids - folder_id responses: '200': description: Successful restoration of media. content: application/json: schema: unevaluatedProperties: false type: object properties: message: description: A confirmation message that the background job has been queued. type: string container: unevaluatedProperties: false type: object properties: type: description: The type of container the medias will be restored to. type: string name: description: The display name of the container the medias will be restored to. type: string hashedId: description: The hashed ID of the container the medias will be restored to. type: string background_job_status: unevaluatedProperties: false type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status '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. '403': description: Forbidden, e.g. account does not have access to archiving. content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '422': description: Missing arguments for restoration of media. content: application/json: schema: unevaluatedProperties: false type: object properties: error: description: An error message that the necessary parameters were not provided. type: string examples: - Incorrect number of parameters provided. Provide one folder_id. '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/copy: put: summary: Bulk Copy Media description: 'This method accepts a list of medias to copy to a destination folder. It processes requests asynchronously and will return a background_job_status object rather than the typical Media response object. Each media will be duplicated and the copy will be placed in the specified destination folder. The original media files will not be affected. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' requestBody: required: true content: application/json: schema: unevaluatedProperties: false type: object properties: hashed_ids: description: An array of the media hashed IDs to be copied. type: array items: type: string folder_id: description: The hashed ID of the destination folder where the copies will be placed. type: string required: - hashed_ids - folder_id responses: '200': description: Successful copy request of media. content: application/json: schema: unevaluatedProperties: false type: object properties: message: description: A confirmation message that the background job has been queued. type: string destination: unevaluatedProperties: false type: object properties: type: description: The type of the destination container. type: string name: description: The name of the destination folder. type: string hashedId: description: The hashed ID of the destination folder. type: string background_job_status: unevaluatedProperties: false type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status '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. '422': description: Unprocessable entity, e.g. missing required parameters. content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /medias/import_url: post: summary: Import Media from URL x-wistia-mcp-annotations: read_only_hint: false read_only_hint_justification: This tool imports a new media from a URL, which adds data to the account. open_world_hint: true open_world_hint_justification: This tool fetches content from a publicly accessible URL outside of Wistia's servers. destructive_hint: false destructive_hint_justification: Importing only adds a new media; existing data is not modified or removed. idempotent_hint: false idempotent_hint_justification: Each call imports the file again, creating an additional media. x-speakeasy-group: media x-speakeasy-name-override: importUrl x-cli-action-override: import x-wistia-mcp-tool-name: import-media-from-url x-wistia-mcp-description: 'Import or upload a media (a video or audio file) into the account from a publicly accessible URL. Use this when someone wants to import, upload, ingest, or add a video or audio file from a remote link. The import runs asynchronously in the background and returns a background_job_status to poll for progress rather than a Media object. The URL must be publicly fetchable by Wistia''s servers; some domains (e.g. vimeo.com, wistia.com) are not permitted. If no folder_id is given, a new "Untitled Folder" is created to hold the imported media. ' description: 'This endpoint imports a media file from a given URL. The import is processed asynchronously and will return a background_job_status object rather than the typical Media response object. You can poll the background job status endpoint to check on the progress of the import. If no folder_id is provided, a new folder called "Untitled Folder" will be created and the imported media will be placed there. The URL must be publicly accessible — Wistia''s servers need to be able to fetch the file directly. Note: imports from certain domains (e.g. vimeo.com, wistia.com) are not permitted. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' requestBody: content: application/json: schema: unevaluatedProperties: false type: object properties: url: description: The publicly accessible URL of the media file to import. type: string format: uri examples: - https://example.com/video.mp4 folder_id: description: The hashed ID of the folder (project) to import the media into. If not provided, a new folder will be created. type: string required: - url responses: '201': description: Successfully queued background job for URL import. content: application/json: schema: unevaluatedProperties: false allOf: - type: object properties: message: description: A confirmation message that the background job has been queued. type: string background_job_status: unevaluatedProperties: false allOf: - type: object description: 'A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc. ' properties: id: description: The ID of the background job that's been queued for the request. type: integer hashed_id: description: The unguessable hashed ID of the background job. Prefer this over the numeric ID when polling for status. type: string status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - hashed_id - status required: - message - background_job_status '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. '403': description: Forbidden, token is valid but account does not have access to feature content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Webinars are not available on your current plan '404': description: Resource not found content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Folder with ID 'fakeid' not found. '422': description: Unprocessable entity, the URL domain is not permitted for import. content: application/json: schema: unevaluatedProperties: false type: object properties: error: description: Error message detailing why the request failed. type: string '500': description: Internal server error content: application/json: schema: unevaluatedProperties: false type: object properties: error: type: string examples: - Internal server error tags: - Media security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern components: schemas: IncludesTags: type: object properties: tags: description: Tags associated with this media. type: array items: type: object properties: name: description: The display name of the tag. type: string Asset: type: object properties: url: description: A direct-access URL to the content of the asset. type: string width: description: The width of this specific asset, if applicable. type: integer height: description: The height of this specific asset, if applicable. type: integer fileSize: description: The size of the asset file that’s referenced by url, measured in bytes. type: integer contentType: description: The asset’s content type. type: string type: description: 'The internal type of the asset, describing how the asset should be used. Values can include OriginalFile, FlashVideoFile, MdFlashVideoFile, HdFlashVideoFile, Mp4VideoFile, MdMp4VideoFile, HdMp4VideoFile, IPhoneVideoFile, StillImageFile, SwfFile, Mp3AudioFile, and LargeImageFile. ' type: string MediaIndex: allOf: - $ref: '#/components/schemas/MediaProperties' - $ref: '#/components/schemas/IncludesProject' - $ref: '#/components/schemas/IncludesAssets' - $ref: '#/components/schemas/IncludesSubfolder' - $ref: '#/components/schemas/IncludesTags' - type: object properties: 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 medias were fetched with `use_cursor`, or `cursor_before` or `cursor_after`. type: - string - 'null' Subfolder: type: object description: A subfolder within a project that contains media files. properties: hashed_id: description: A unique alphanumeric identifier for this subfolder. type: string examples: - abc123def4 name: description: The display name of the subfolder. type: - string - 'null' examples: - Marketing Videos description: description: A description for the subfolder. type: - string - 'null' examples: - Collection of all marketing and promotional videos position: description: The position of this subfolder within its project, used for ordering. type: - integer - 'null' examples: - 1 created: description: The date when the subfolder was created. type: - string - 'null' format: date-time examples: - '2024-01-15T10:30:00+00:00' updated: description: The date when the subfolder was last modified. type: - string - 'null' format: date-time examples: - '2024-01-20T14:45:00+00:00' required: - hashed_id - position - created - updated MediaProperties: type: object properties: 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: description: Specifies the length (in seconds) for audio and video files. Specifies number of pages in the document. Omitted for other types of media. type: number 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: description: The title of the section in which the media appears. This attribute is omitted if the media is not in a section (default). type: string thumbnail: $ref: '#/components/schemas/Thumbnail' IncludesProject: type: object properties: project: $ref: '#/components/schemas/Project-2' Project-2: type: object properties: id: description: A unique numeric identifier for the project within the system. type: integer examples: - 22570 name: description: The project’s display name. type: string examples: - My Project Title hashedId: description: A private hashed id, uniquely identifying the project within the system. type: string examples: - 4d23503f70 Thumbnail: type: object properties: url: type: string width: type: integer height: type: integer BackgroundJobStatus: type: object description: Status of the background job. properties: id: description: The ID of the background job that's been queued for the request. type: integer status: description: The status of the background job that's been queued for the request. type: string enum: - queued - started - finished - failed required: - id - status IncludesAssets: type: object properties: assets: description: An array of the assets available for this media. type: array items: $ref: '#/components/schemas/Asset' MediaUpdate: allOf: - $ref: '#/components/schemas/MediaProperties' - $ref: '#/components/schemas/IncludesTags' IncludesSubfolder: type: object properties: subfolder: description: The subfolder (media group) in which the media appears. Null if the media is not in a subfolder. allOf: - $ref: '#/components/schemas/Subfolder' MediaShow: allOf: - $ref: '#/components/schemas/MediaProperties' - $ref: '#/components/schemas/IncludesProject' - $ref: '#/components/schemas/IncludesAssets' - $ref: '#/components/schemas/IncludesSubfolder' - $ref: '#/components/schemas/IncludesTags' MediaCopy: allOf: - $ref: '#/components/schemas/MediaProperties' - $ref: '#/components/schemas/IncludesProject' responses: '404': description: Resource not found content: application/json: schema: type: object properties: error: type: string examples: - Project with ID 'fakeid' not found. '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string examples: - Internal server error '401': description: Unauthorized, invalid or missing token content: application/json: schema: type: object properties: error: type: string examples: - Invalid credentials. '400': description: Bad request content: application/json: schema: type: object properties: error: description: Error message detailing the reason for the bad request. type: string examples: - Bad request securitySchemes: BearerAuth: type: http scheme: bearer x-refined-from: - wistia-data-api-2026-01-openapi.yml - wistia-data-api-modern-edge-openapi.yml - wistia-data-api-v1-openapi.yml