Manage Channel Episodes With The Data API

Learn how to build and maintain your Channels—their metadata and their episode lineup—programmatically with the Wistia Data API, so you don't have to manage every Channel by hand in the dashboard.

📘

Before you start

These endpoints live on the modern Data API (https://api.wistia.com/modern), not the classic /v1 API. Authentication is the same Bearer token you use elsewhere—see Making API Requests for how to create one.

What you can manage

The Data API gives you programmatic control over two related resources:

  • Channels — the container. Create a Channel, rename it, edit its description, toggle auto-publish and podcasting, set a custom embed URL, and configure podcast settings.
  • Channel Episodes — the media inside a Channel. Add a media as an episode, edit an episode's title/description/summary, control publish state (including scheduling), reorder-independent publishing, and remove episodes.

All Channel and episode requests authenticate with a Bearer token:

curl https://api.wistia.com/modern/channels \
  -H "Authorization: Bearer YOUR_TOKEN_HERE"

Managing Channels

OperationMethod & path
List ChannelsGET /channels
Show a ChannelGET /channels/{channelHashedId}
Create a ChannelPOST /channels
Update a ChannelPUT /channels/{channelHashedId}
Delete a ChannelDELETE /channels/{channelHashedId}

When you create or update a Channel, these fields are editable:

  • name — the Channel's display name
  • description — the Channel's description
  • auto_publish_enabled — automatically publish episodes when they're added (cannot be enabled while podcasting is on)
  • podcast_enabled — turn podcasting on for the Channel
  • custom_url — the custom URL used when embedding the Channel on your own site
  • podcast_settings — podcast metadata (author, categories, language, explicit flag, and more) when podcasting is enabled

For example, to rename a Channel and update its description:

curl -X PUT https://api.wistia.com/modern/channels/CHANNEL_HASHED_ID \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"name": "Product Webinars", "description": "Recorded product deep-dives."}'
📝

Sections aren't part of the API

The Channels endpoints don't expose a "sections" concept—there's no field to create or arrange sections within a Channel programmatically. The API manages a Channel's metadata and its flat list of episodes. Arrange section-style grouping in the Channel editor in your Wistia account.

Managing episodes

An episode is a media that's been added to a Channel. Only published episodes appear in the Channel.

OperationMethod & path
List all episodesGET /channel_episodes
List a Channel's episodesGET /channels/{channelHashedId}/channel_episodes
Show an episodeGET /channels/{channelHashedId}/channel_episodes/{channelEpisodeId}
Add an episode to a ChannelPOST /channels/{channelHashedId}/channel_episodes
Update an episodePUT /channel_episodes/{channelEpisodeHashedId}
Publish an episodePUT /channel_episodes/{channelEpisodeHashedId}/publish
Unpublish an episodePUT /channel_episodes/{channelEpisodeHashedId}/unpublish
Delete an episodeDELETE /channel_episodes/{channelEpisodeHashedId}

Adding a media as an episode

Add an existing media to a Channel by its hashed ID. If you don't pass a title, the episode inherits the media's title.

curl -X POST https://api.wistia.com/modern/channels/CHANNEL_HASHED_ID/channel_episodes \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"media_id": "abc123def4", "title": "Episode 1: Getting Started", "publish_status": "published"}'

publish_status accepts draft, published, or scheduled. For a scheduled episode, also pass publish_at as an ISO 8601 UTC timestamp (ending in Z).

Editing episode details

Yes—you can update an episode's title and other details after it's been added. The editable fields on update are:

  • title — the episode's title
  • description — the episode's description or notes
  • summary — a short summary shown where space is limited
  • publish_statusdraft, published, or scheduled
  • publish_at — the scheduled publish time (UTC, ISO 8601)
  • podcast_settings — per-episode podcast metadata (episode number, season, type, and more)
curl -X PUT https://api.wistia.com/modern/channel_episodes/EPISODE_HASHED_ID \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{"title": "Episode 1: Getting Started (Updated)"}'

Publishing and scheduling

Publish state is decoupled from the rest of an episode's metadata, so you can flip it on its own:

curl -X PUT https://api.wistia.com/modern/channel_episodes/EPISODE_HASHED_ID/publish \
  -H "Authorization: Bearer YOUR_TOKEN_HERE"

Use the matching /unpublish endpoint to return an episode to draft. To schedule, update the episode with publish_status: "scheduled" and a future publish_at.

Full endpoint reference

This guide covers what's possible and how the pieces fit together. For the complete request and response schema of each endpoint, see the auto-generated reference:



Did this page help you?