GET /v2/courses/{course_id}/podcasts
List podcast episodes
Returns every podcast episode generated for a course, in chapter order, with audio URLs and script snippets.
Request
Headers
| Header | Required | Notes |
|---|---|---|
X-API-Key | yes | |
X-External-User-Id | yes (or X-User-Id) | Must own the course |
Path parameters
course_id string (UUID) required The course whose episodes to list. |
Returns
{
"course_id": "8fa640c0-22e6-436b-becd-bf2cfc86741a",
"episodes": [
{
"id": "p_01HW0XYZ…",
"chapter_order": 0,
"title": "Sunlight & Chlorophyll",
"status": "ready",
"audio_url": "https://cdn.nuton.app/podcasts/p_01HW0XYZ.mp3",
"script": { "turns": [ { "speaker": "host", "text": "Welcome back…" } ] },
"created_at": "2026-05-19T14:09:33Z"
},
{
"id": "p_01HW0XZA…",
"chapter_order": 1,
"title": "The Calvin Cycle",
"status": "generating",
"audio_url": null,
"script": null,
"created_at": "2026-05-19T14:09:34Z"
}
],
"count": 2
}
status is one of ready, generating, error. Episodes with status: "error" carry an error field with a structured reason.
The audio URLs are signed and time-limited. If you want to embed them in a frontend, fetch this endpoint fresh per session — don’t cache the URLs.
Errors
- 404 — Course not found.