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 startThese endpoints live on the modern Data API (
https://api.wistia.com/modern), not the classic/v1API. 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
| Operation | Method & path |
|---|---|
| List Channels | GET /channels |
| Show a Channel | GET /channels/{channelHashedId} |
| Create a Channel | POST /channels |
| Update a Channel | PUT /channels/{channelHashedId} |
| Delete a Channel | DELETE /channels/{channelHashedId} |
When you create or update a Channel, these fields are editable:
name— the Channel's display namedescription— the Channel's descriptionauto_publish_enabled— automatically publish episodes when they're added (cannot be enabled while podcasting is on)podcast_enabled— turn podcasting on for the Channelcustom_url— the custom URL used when embedding the Channel on your own sitepodcast_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 APIThe 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.
| Operation | Method & path |
|---|---|
| List all episodes | GET /channel_episodes |
| List a Channel's episodes | GET /channels/{channelHashedId}/channel_episodes |
| Show an episode | GET /channels/{channelHashedId}/channel_episodes/{channelEpisodeId} |
| Add an episode to a Channel | POST /channels/{channelHashedId}/channel_episodes |
| Update an episode | PUT /channel_episodes/{channelEpisodeHashedId} |
| Publish an episode | PUT /channel_episodes/{channelEpisodeHashedId}/publish |
| Unpublish an episode | PUT /channel_episodes/{channelEpisodeHashedId}/unpublish |
| Delete an episode | DELETE /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 titledescription— the episode's description or notessummary— a short summary shown where space is limitedpublish_status—draft,published, orscheduledpublish_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:
Updated 2 days ago