openapi: 3.2.0 info: title: Wistia Channel Episodes API version: '1.0' description: 'Operations tagged Channel Episodes 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: Channel Episodes x-wistia-mcp-toolsets: channels x-displayName: Channel Episodes paths: /channels/{channelHashedId}/channel_episodes/{channelEpisodeId}: get: summary: Show Channel Episode description: 'Returns the Channel Episode associated with a channel hashed id and channel episode hashed id. ## Requires api token with one of the following permissions ``` Read all folder and media data ``` ' parameters: - name: channelHashedId in: path description: The hashed ID of the channel. required: true schema: description: Hashed ID of the channel (e.g., "4d23503f70") type: string - name: channelEpisodeId in: path description: The hashed ID of the channel episode. required: true schema: description: Hashed ID of the channel episode (e.g., "4d23503f70") type: string responses: '200': description: Channel Episode retrieval successful content: application/json: schema: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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: - Channel Episodes security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /channels/{channelHashedId}/channel_episodes: get: summary: List Channel Episodes by Channel description: 'Lists Channel Episodes belonging to the channel passed in the path. ## Requires api token with one of the following permissions ``` Read all folder and media data ``` ' parameters: - name: channelHashedId in: path description: The hashed ID of the channel to grab channel episodes from. required: true schema: type: string - name: sort_by in: query description: 'Ordering. Default is ID ASC. When using cursor pagination (see cursor param), only `id` and `created` are supported. All other sort_by options (`position`, `title`, `updated`) require offset pagination. ' required: false schema: type: string enum: - position - title - created - updated - 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: 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: media_id[] in: query description: Filter by media id required: false schema: type: array items: type: string - name: hashed_ids[] in: query description: Filter by hashed id required: false schema: type: array items: type: string - name: published in: query description: Filter by published status. required: false schema: type: boolean - name: title in: query description: Filter by channel episode name/title. required: false schema: type: string responses: '200': description: Channel Episodes retrieval successful content: application/json: schema: type: array items: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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: - Channel Episodes security: - BearerAuth: [] post: summary: Create Channel Episode description: 'Creates a new channel episode in a channel. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' parameters: - name: channelHashedId in: path description: The hashed ID of the channel to add the episode to. required: true schema: type: string requestBody: required: true content: application/json: schema: unevaluatedProperties: false type: object x-wistia-mcp-properties: media_id: description: The alphanumeric hashed ID of the media to be added as a channel episode. type: string title: description: The episode's title. If not provided, the channel episode uses the title of the media used to create it. type: string examples: - My New Episode description: description: The episode's description or episode notes. type: string examples: - My Episode Description. summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. publish_status: description: The status of whether or not the episode has been published to your channel. type: string enum: - draft - published - scheduled publish_at: description: The date and time when the episode should be published in UTC timezone. Required when publish_status is 'scheduled'. Must be a valid ISO8601 timestamp in UTC (ending with 'Z'). Can only be provided when publish_status is 'scheduled.' type: string format: date-time examples: - '2024-12-31T23:59:59Z' podcast_settings: unevaluatedProperties: false type: object description: 'Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel. ' properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. properties: podcast_settings: unevaluatedProperties: false type: object description: 'Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel. ' properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. media_id: description: The alphanumeric hashed ID of the media to be added as a channel episode. type: string title: description: The episode's title. If not provided, the channel episode uses the title of the media used to create it. type: string examples: - My New Episode description: description: The episode's description or episode notes. type: string examples: - My Episode Description. summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. publish_status: description: The status of whether or not the episode has been published to your channel. type: string enum: - draft - published - scheduled publish_at: description: The date and time when the episode should be published in UTC timezone. Required when publish_status is 'scheduled'. Must be a valid ISO8601 timestamp in UTC (ending with 'Z'). Can only be provided when publish_status is 'scheduled.' type: string format: date-time examples: - '2024-12-31T23:59:59Z' episode_type: description: The episode type for your podcast. This parameter only takes effect if podcasting is enabled for the channel. type: string enum: - full - trailer - bonus episode_number: description: The episode number for this episode in your podcast. This parameter only takes effect if podcasting is enabled for the channel. type: integer season_number: description: The season number for this episode in your podcast. This parameter only takes effect if podcasting is enabled for the channel. type: integer explicit_content: description: Whether this episode contains explicit content. This parameter only takes effect if podcasting is enabled for the channel. type: boolean hide_from_feed: description: Whether or not to hide this episode from your podcast feed. Set to true to hide the episode, false to show the episode. This parameter only takes effect if podcasting is enabled for the channel. type: boolean responses: '200': description: Channel Episode creation successful content: application/json: schema: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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: - Channel Episodes security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /channel_episodes: get: summary: List Channel Episodes description: 'Lists Channel Episodes belonging to an 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: sort_by in: query description: 'Ordering. Default is ID ASC. When using cursor pagination (see cursor param), only `id` and `created` are supported. All other sort_by options (`position`, `title`, `updated`) require offset pagination. ' required: false schema: type: string enum: - position - title - created - updated - 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: 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: media_id[] in: query description: Filter by media id required: false schema: type: array items: type: string - name: hashed_ids[] in: query description: Filter by hashed id required: false schema: type: array items: type: string - name: published in: query description: Filter by published status. required: false schema: type: boolean - name: title in: query description: Filter by channel episode name/title. required: false schema: type: string responses: '200': description: Channel Episodes retrieval successful content: application/json: schema: type: array items: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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: - Channel Episodes security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /channel_episodes/{channelEpisodeHashedId}: put: summary: Channel Episode Update description: 'Updates an existing channel episode in a channel. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' tags: - Channel Episodes parameters: - name: channelEpisodeHashedId description: The hashed id of the Channel Episode required: true in: path schema: type: string requestBody: content: application/json: schema: unevaluatedProperties: false type: object x-wistia-mcp-properties: description: type: - string - 'null' description: The episode's description or episode notes. title: type: - string - 'null' description: The episode's title. If not provided, the channel episode uses the title of the media used to create it. media_hashed_id: type: string description: The unique alphanumeric identifier for the media associated with this channel episode. live_stream_event_hashed_id: type: string description: The unique alphanumeric identifier for the live stream event associated with this channel episode. summary: type: - string - 'null' description: A short summary of the episode that is displayed when space is limited. publish_status: type: string description: The status of whether or not the episode has been published to your channel. enum: - draft - published - scheduled publish_at: type: string format: date-time description: The date and time when the episode is scheduled to be published in UTC timezone. episode_notes: type: string description: Additional notes for the episode. podcast_settings: unevaluatedProperties: false type: object description: 'Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel. ' properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. properties: podcast_settings: unevaluatedProperties: false type: object description: 'Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel. ' properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. description: type: - string - 'null' description: The episode's description or episode notes. title: type: - string - 'null' description: The episode's title. If not provided, the channel episode uses the title of the media used to create it. media_hashed_id: type: string description: The unique alphanumeric identifier for the media associated with this channel episode. live_stream_event_hashed_id: type: string description: The unique alphanumeric identifier for the live stream event associated with this channel episode. summary: type: - string - 'null' description: A short summary of the episode that is displayed when space is limited. publish_status: type: string description: The status of whether or not the episode has been published to your channel. enum: - draft - published - scheduled publish_at: type: string format: date-time description: The date and time when the episode is scheduled to be published in UTC timezone. episode_notes: type: string description: Additional notes for the episode. episode_type: type: string description: The type of episode. This parameter only takes effect if podcasting is enabled for the channel. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. This parameter only takes effect if podcasting is enabled for the channel. season_number: type: integer description: The season number of the episode. This parameter only takes effect if podcasting is enabled for the channel. explicit_content: type: boolean description: Whether the episode contains explicit content. This parameter only takes effect if podcasting is enabled for the channel. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. This parameter only takes effect if podcasting is enabled for the channel. responses: '200': description: Channel Episode updated successful content: application/json: schema: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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 security: - BearerAuth: [] delete: summary: Channel Episode Delete description: 'Deletes an existing channel episode in a channel. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' tags: - Channel Episodes parameters: - name: channelEpisodeHashedId description: The hashed id of the Channel Episode required: true in: path schema: type: string responses: '200': description: Channel Episode deleted successful content: application/json: schema: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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 security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /channel_episodes/{channelEpisodeHashedId}/publish: put: summary: Publish Channel Episode x-wistia-mcp-tool-name: publish-channel-episode description: 'Publishes an existing channel episode in a channel. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' tags: - Channel Episodes parameters: - name: channelEpisodeHashedId description: The hashed id of the Channel Episode required: true in: path schema: type: string requestBody: content: application/json: schema: unevaluatedProperties: false type: object properties: publish_at: type: string format: date-time description: The date and time when the episode is scheduled to be published in UTC timezone. responses: '200': description: Channel Episode published successfully content: application/json: schema: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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 security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern /channel_episodes/{channelEpisodeHashedId}/unpublish: put: summary: Un-publish Channel Episode x-wistia-mcp-tool-name: un-publish-channel-episode description: 'Unpublishes an existing channel episode in a channel. ## Requires api token with one of the following permissions ``` Read, update & delete anything ``` ' tags: - Channel Episodes parameters: - name: channelEpisodeHashedId description: The hashed id of the Channel Episode required: true in: path schema: type: string requestBody: content: application/json: schema: unevaluatedProperties: false type: object x-wistia-mcp-properties: description: type: - string - 'null' description: The episode's description or episode notes. title: type: - string - 'null' description: The episode's title. If not provided, the channel episode uses the title of the media used to create it. media_hashed_id: type: string description: The unique alphanumeric identifier for the media associated with this channel episode. live_stream_event_hashed_id: type: string description: The unique alphanumeric identifier for the live stream event associated with this channel episode. summary: type: - string - 'null' description: A short summary of the episode that is displayed when space is limited. publish_status: type: string description: The status of whether or not the episode has been published to your channel. enum: - draft - published - scheduled publish_at: type: string format: date-time description: The date and time when the episode is scheduled to be published in UTC timezone. episode_notes: type: string description: Additional notes for the episode. podcast_settings: unevaluatedProperties: false type: object description: 'Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel. ' properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. properties: podcast_settings: unevaluatedProperties: false type: object description: 'Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel. ' properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. description: type: - string - 'null' description: The episode's description or episode notes. title: type: - string - 'null' description: The episode's title. If not provided, the channel episode uses the title of the media used to create it. media_hashed_id: type: string description: The unique alphanumeric identifier for the media associated with this channel episode. live_stream_event_hashed_id: type: string description: The unique alphanumeric identifier for the live stream event associated with this channel episode. summary: type: - string - 'null' description: A short summary of the episode that is displayed when space is limited. publish_status: type: string description: The status of whether or not the episode has been published to your channel. enum: - draft - published - scheduled publish_at: type: string format: date-time description: The date and time when the episode is scheduled to be published in UTC timezone. episode_notes: type: string description: Additional notes for the episode. episode_type: type: string description: The type of episode. This parameter only takes effect if podcasting is enabled for the channel. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. This parameter only takes effect if podcasting is enabled for the channel. season_number: type: integer description: The season number of the episode. This parameter only takes effect if podcasting is enabled for the channel. explicit_content: type: boolean description: Whether the episode contains explicit content. This parameter only takes effect if podcasting is enabled for the channel. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. This parameter only takes effect if podcasting is enabled for the channel. responses: '200': description: Channel Episode unpublished successfully content: application/json: schema: type: object description: 'A channel episode represents a media that has been added to a channel. Only published episodes are displayed in a channel. ' properties: live_stream_event_hashed_id: description: A unique alphanumeric identifier for the channel episode's live stream event, if any. Null when the episode is not linked to a live stream event. type: - string - 'null' id: description: A unique numeric identifier for the channel episode. type: integer channel_hashed_id: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time 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' description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashed_id: description: A unique alphanumeric identifier for the channel episode. type: string media_hashed_id: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time podcast_settings: description: 'Podcast specific settings for the episode. Only present when podcasting is enabled for the channel. ' x-readme-hidden: true x-speakeasy-ignore: true unevaluatedProperties: false type: object properties: episode_type: type: string description: The type of episode. enum: - full - trailer - bonus episode_number: type: integer description: The number of the episode. season_number: type: integer description: The season number of the episode. explicit_content: type: boolean description: Whether the episode contains explicit content. hide_from_feed: type: boolean description: Whether to hide the episode from the podcast feed. required: - channel_hashed_id - created - description - summary - hashed_id - media_hashed_id - published - title - updated '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 security: - BearerAuth: [] servers: - url: https://api.wistia.com/modern components: parameters: media_id: name: media_id[] in: query description: Filter by media id required: false schema: type: array items: type: string per_page: name: per_page in: query description: Number of channels per page required: false schema: type: integer sort_direction: name: sort_direction in: query description: Ordering Sort Direction (0 = desc, 1 = asc; default is 1) required: false schema: type: integer enum: - 0 - 1 hashed_id: name: hashed_id[] in: query description: Filter by hashed id required: false schema: type: array items: type: string sort_by: name: sort_by in: query description: Ordering. Default is ID ASC. required: false schema: type: string enum: - position - title - created - updated - id title: name: title in: query description: Filter by channel episode name/title. required: false schema: type: string published: name: published in: query description: Filter by published status. required: false schema: type: boolean page: name: page in: query description: Page number to retrieve required: false schema: type: integer schemas: CreateChannelEpisode: type: object properties: media_id: description: The alphanumeric hashed ID of the media to be added as a channel episode. type: string title: description: The episode's title. If not provided, the channel episode uses the title of the media used to create it. type: string examples: - My New Episode description: description: The episode's description or episode notes. type: string examples: - My Episode Description. summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. publish_status: description: The status of whether or not the episode has been published to your channel. type: string enum: - draft - published - scheduled publish_at: description: The date and time when the episode should be published in UTC timezone. Required when publish_status is 'scheduled'. Must be a valid ISO8601 timestamp in UTC (ending with 'Z'). Can only be provided when publish_status is 'scheduled.' type: string format: date-time examples: - '2024-12-31T23:59:59Z' episode_type: description: The episode type for your podcast. This parameter only takes effect if podcasting is enabled for the channel. type: string enum: - full - trailer - bonus episode_number: description: The episode number for this episode in your podcast. This parameter only takes effect if podcasting is enabled for the channel. type: integer explicit_content: description: Whether this episode contains explicit content. This parameter only takes effect if podcasting is enabled for the channel. type: boolean hide_from_feed: description: Whether or not to hide this episode from your podcast feed. Set to true to hide the episode, false to show the episode. This parameter only takes effect if podcasting is enabled for the channel. type: boolean ChannelEpisode: type: object properties: channelHashedId: description: A unique alphanumeric identifier for the channel episode's channel. type: string created: description: The date when the channel episode was originally created. type: string format: date-time description: description: The channel episode's description or episode notes. type: string summary: description: A short summary of the episode that is displayed when space is limited. type: string examples: - A short description. hashedId: description: A unique alphanumeric identifier for the channel episode. type: string mediaHashedId: description: A unique alphanumeric identifier for the channel episode's media. type: string published: description: Whether the channel episode has been published or is still in draft form. type: boolean publish_at: description: The date and time when the episode is scheduled to be published in UTC timezone (only present when publish_status is 'scheduled'). type: string format: date-time examples: - '2024-12-31T23:59:59Z' title: description: The title of the channel episode type: - string - 'null' updated: description: The date when the channel was last updated. type: string format: date-time required: - channelHashedId - created - description - summary - hashedId - mediaHashedId - published - title - updated responses: '401': description: Unauthorized, invalid or missing token content: application/json: schema: type: object properties: error: type: string examples: - Invalid credentials. '500': description: Internal server error content: application/json: schema: type: object properties: error: type: string examples: - Internal server error '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