Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases

Amazon Music Web API

Web API Podcasts V2.0

Podcasts

Get multiple podcast shows by IDs

GET
/v2/podcasts/shows
Authorization Scope: [music::catalog]
Retrieve detailed information about multiple podcast shows in a single request. Pass a comma-separated list of show IDs via the `ids` query parameter; maximum 100 IDs per request. The response items are returned in the same order as the requested IDs.

Each show carries a single embedded page of episodes windowed by the first (1–100, default 20) and after (opaque cursor) query parameters. The cursor scopes every show in the batch — to page deeper into one specific show, call GET /v2/podcasts/shows/{id} instead.

Supports sparse fieldsets via query parameters:

  • fields[podcastShow] — Comma-separated show fields (e.g. title,id,images,episodes)
  • fields[podcastEpisode] — Comma-separated episode fields (e.g. title,id,duration)
  • fields[image] — Comma-separated image fields (e.g. url)

Query Parameters

Name Data Type Required Description
ids string[] Yes Comma-separated list of podcast show IDs (max 100)
first integer No Number of episodes to embed per show
after string No Cursor to start the embedded episode page after

Response 200

Successful response

Response Schema

(array)
PodcastShow[]

Example

Full response with every PodcastShow field populated

[
  {
    "id": "B0EXAMP600",
    "title": "Tech Frontiers Daily",
    "type": "EPISODIC",
    "description": "Daily conversations about software, systems, and the people who build them.",
    "author": "Synthetic Studios",
    "url": "https://music.amazon.com/podcasts/B0EXAMP600",
    "images": [
      {
        "url": "https://m.media-amazon.com/images/I/B0EXAMP600-1400.jpg",
        "width": 1400,
        "height": 1400,
        "imageType": "PRIMARY"
      }
    ],
    "parentalSettings": {
      "hasExplicitLanguage": false
    },
    "episodes": [
      {
        "id": "B0EXAMP610",
        "title": "Episode 42 — The Halting Problem in Practice",
        "type": "FULL",
        "seasonNumber": 1,
        "episodeNumber": 42,
        "duration": 2640,
        "releaseDate": "2025-04-12T00:00:00.000Z",
        "url": "https://music.amazon.com/podcasts/B0EXAMP600/episodes/B0EXAMP610"
      },
      {
        "id": "B0EXAMP611",
        "title": "Episode 43 — From Big-O to Bigger Outcomes",
        "type": "FULL",
        "seasonNumber": 1,
        "episodeNumber": 43,
        "duration": 2820,
        "releaseDate": "2025-04-13T00:00:00.000Z",
        "url": "https://music.amazon.com/podcasts/B0EXAMP600/episodes/B0EXAMP611"
      }
    ]
  },
  {
    "id": "B0EXAMP601",
    "title": "Algorithm Avenue",
    "type": "SERIAL",
    "description": "A serialised tour of the algorithms that quietly run the modern internet.",
    "author": "Synthetic Studios",
    "url": "https://music.amazon.com/podcasts/B0EXAMP601",
    "images": [
      {
        "url": "https://m.media-amazon.com/images/I/B0EXAMP601-1400.jpg",
        "width": 1400,
        "height": 1400,
        "imageType": "PRIMARY"
      }
    ],
    "parentalSettings": {
      "hasExplicitLanguage": false
    },
    "episodes": [
      {
        "id": "B0EXAMP620",
        "title": "Episode 1 — The Page-Rank Origin Story",
        "type": "FULL",
        "seasonNumber": 1,
        "episodeNumber": 1,
        "duration": 1980,
        "releaseDate": "2024-09-05T00:00:00.000Z",
        "url": "https://music.amazon.com/podcasts/B0EXAMP601/episodes/B0EXAMP620"
      }
    ]
  }
]

Sparse Fieldsets Example

Sparse fieldsets — fields[podcastShow]=title,id,author&fields[podcastEpisode]=title,id

[
  {
    "id": "B0EXAMP600",
    "title": "Tech Frontiers Daily",
    "author": "Synthetic Studios"
  },
  {
    "id": "B0EXAMP601",
    "title": "Algorithm Avenue",
    "author": "Synthetic Studios"
  }
]

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 ids parameter is required and must contain 1-100 comma-separated IDs
404 NOT_FOUND 404 One or more podcast shows not found

400 Example

{
  "error": {
    "code": "BAD_REQUEST",
    "message": "ids parameter is required and must contain 1-100 comma-separated IDs",
    "traceId": "1-abc-def"
  }
}

404 Example

{
  "error": {
    "code": "NOT_FOUND",
    "message": "One or more podcast shows not found",
    "traceId": "1-abc-def"
  }
}

Get podcast show by ID

GET
/v2/podcasts/shows/{id}
Authorization Scope: [music::catalog]
Retrieve detailed information about a specific podcast show, including the show's metadata, cover images, and a single page of episodes embedded on the response.

The embedded episodes array is windowed by the first (1–100, default 20) and after (opaque cursor) query parameters. Use the standalone episode endpoints (GET /v2/podcasts/episodes or GET /v2/podcasts/episodes/{id}) to retrieve episodes outside that window.

Supports sparse fieldsets via query parameters:

  • fields[podcastShow] — Comma-separated show fields (e.g. title,id,images,episodes)
  • fields[podcastEpisode] — Comma-separated episode fields (e.g. title,id,duration)
  • fields[image] — Comma-separated image fields (e.g. url)

Path Parameters

Name Data Type Required Description
id string Yes Unique identifier for the resource

Query Parameters

Name Data Type Required Description
first integer No Number of episodes to embed on the show response
after string No Cursor to start the embedded episode page after

Response 200

Successful response

Response Schema

_type
string
Discriminator value identifying this entity as a PodcastShow
id
string
Unique podcast show identifier
title
string
Podcast show title
type
string
Podcast show type. Common values include `EPISODIC` (independent episodes) and `SERIAL` (sequential episodes). Forward-compatible with new values from the catalog provider.
description
string
Podcast show description
author
string
Author or producer of the podcast show
url
string [format=uri]
URL into AmazonMusic for this podcast show
images
Image[]
Cover images for this podcast show
parentalSettings
ParentalSettings
episodes
BasePodcastEpisode[]
Episodes for this podcast show (paginated)

Example

Full podcast show response with embedded episode page

{
  "id": "B0EXAMP600",
  "title": "Tech Frontiers Daily",
  "type": "EPISODIC",
  "description": "Daily conversations about software, systems, and the people who build them.",
  "author": "Synthetic Studios",
  "url": "https://music.amazon.com/podcasts/B0EXAMP600",
  "images": [
    {
      "url": "https://m.media-amazon.com/images/I/B0EXAMP600-1400.jpg",
      "width": 1400,
      "height": 1400,
      "imageType": "PRIMARY"
    },
    {
      "url": "https://m.media-amazon.com/images/I/B0EXAMP600-640.jpg",
      "width": 640,
      "height": 640,
      "imageType": "PRIMARY"
    }
  ],
  "parentalSettings": {
    "hasExplicitLanguage": false
  },
  "episodes": [
    {
      "id": "B0EXAMP610",
      "title": "Episode 42 — The Halting Problem in Practice",
      "type": "FULL",
      "description": "Why undecidability shows up in production runbooks more often than you think.",
      "author": "Synthetic Studios",
      "seasonNumber": 1,
      "episodeNumber": 42,
      "duration": 2640,
      "releaseDate": "2025-04-12T00:00:00.000Z",
      "url": "https://music.amazon.com/podcasts/B0EXAMP600/episodes/B0EXAMP610"
    },
    {
      "id": "B0EXAMP611",
      "title": "Episode 43 — From Big-O to Bigger Outcomes",
      "type": "FULL",
      "description": "A field guide to translating algorithmic wins into product outcomes.",
      "author": "Synthetic Studios",
      "seasonNumber": 1,
      "episodeNumber": 43,
      "duration": 2820,
      "releaseDate": "2025-04-13T00:00:00.000Z",
      "url": "https://music.amazon.com/podcasts/B0EXAMP600/episodes/B0EXAMP611"
    }
  ]
}

Sparse Fieldsets Example

Sparse fieldsets — fields[podcastShow]=title,id,author,episodes&fields[podcastEpisode]=title,id,duration

{
  "id": "B0EXAMP600",
  "title": "Tech Frontiers Daily",
  "author": "Synthetic Studios",
  "episodes": [
    {
      "id": "B0EXAMP610",
      "title": "Episode 42 — The Halting Problem in Practice",
      "duration": 2640
    },
    {
      "id": "B0EXAMP611",
      "title": "Episode 43 — From Big-O to Bigger Outcomes",
      "duration": 2820
    }
  ]
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Podcast show not found

400 Example

{
  "error": {
    "code": "BAD_REQUEST",
    "message": "first parameter must be between 1 and 100",
    "traceId": "1-abc-def"
  }
}

404 Example

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Podcast show not found",
    "traceId": "1-abc-def"
  }
}

Get multiple podcast episodes by IDs

GET
/v2/podcasts/episodes
Authorization Scope: [music::catalog]
Retrieve detailed information about multiple podcast episodes in a single request. Pass a comma-separated list of episode IDs via the `ids` query parameter; maximum 100 IDs per request. Each episode includes a reference to the podcast show it belongs to.

Supports sparse fieldsets via query parameters:

  • fields[podcastEpisode] — Comma-separated episode fields (e.g. title,id,duration,podcastShow)
  • fields[podcastShow] — Comma-separated show fields (e.g. title,id)
  • fields[image] — Comma-separated image fields (e.g. url)

Query Parameters

Name Data Type Required Description
ids string[] Yes Comma-separated list of podcast episode IDs (max 100)

Response 200

Successful response

Response Schema

(array)
PodcastEpisode[]

Example

Full response with every PodcastEpisode field populated

[
  {
    "id": "B0EXAMP610",
    "title": "Episode 42 — The Halting Problem in Practice",
    "type": "FULL",
    "description": "Why undecidability shows up in production runbooks more often than you think.",
    "author": "Synthetic Studios",
    "seasonNumber": 1,
    "episodeNumber": 42,
    "duration": 2640,
    "releaseDate": "2025-04-12T00:00:00.000Z",
    "url": "https://music.amazon.com/podcasts/B0EXAMP600/episodes/B0EXAMP610",
    "images": [
      {
        "url": "https://m.media-amazon.com/images/I/B0EXAMP610-1400.jpg",
        "width": 1400,
        "height": 1400,
        "imageType": "PRIMARY"
      }
    ],
    "parentalSettings": {
      "hasExplicitLanguage": false
    },
    "podcastShow": {
      "id": "B0EXAMP600",
      "title": "Tech Frontiers Daily",
      "type": "EPISODIC",
      "author": "Synthetic Studios",
      "url": "https://music.amazon.com/podcasts/B0EXAMP600"
    }
  },
  {
    "id": "B0EXAMP611",
    "title": "Episode 43 — From Big-O to Bigger Outcomes",
    "type": "FULL",
    "description": "A field guide to translating algorithmic wins into product outcomes.",
    "author": "Synthetic Studios",
    "seasonNumber": 1,
    "episodeNumber": 43,
    "duration": 2820,
    "releaseDate": "2025-04-13T00:00:00.000Z",
    "url": "https://music.amazon.com/podcasts/B0EXAMP600/episodes/B0EXAMP611",
    "images": [
      {
        "url": "https://m.media-amazon.com/images/I/B0EXAMP611-1400.jpg",
        "width": 1400,
        "height": 1400,
        "imageType": "PRIMARY"
      }
    ],
    "parentalSettings": {
      "hasExplicitLanguage": false
    },
    "podcastShow": {
      "id": "B0EXAMP600",
      "title": "Tech Frontiers Daily",
      "type": "EPISODIC",
      "author": "Synthetic Studios",
      "url": "https://music.amazon.com/podcasts/B0EXAMP600"
    }
  }
]

Sparse Fieldsets Example

Sparse fieldsets — fields[podcastEpisode]=title,id,duration,podcastShow&fields[podcastShow]=title,id

[
  {
    "id": "B0EXAMP610",
    "title": "Episode 42 — The Halting Problem in Practice",
    "duration": 2640,
    "podcastShow": {
      "id": "B0EXAMP600",
      "title": "Tech Frontiers Daily"
    }
  },
  {
    "id": "B0EXAMP611",
    "title": "Episode 43 — From Big-O to Bigger Outcomes",
    "duration": 2820,
    "podcastShow": {
      "id": "B0EXAMP600",
      "title": "Tech Frontiers Daily"
    }
  }
]

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 ids parameter is required and must contain 1-100 comma-separated IDs
404 NOT_FOUND 404 One or more podcast episodes not found

400 Example

{
  "error": {
    "code": "BAD_REQUEST",
    "message": "ids parameter is required and must contain 1-100 comma-separated IDs",
    "traceId": "1-abc-def"
  }
}

404 Example

{
  "error": {
    "code": "NOT_FOUND",
    "message": "One or more podcast episodes not found",
    "traceId": "1-abc-def"
  }
}

Get podcast episode by ID

GET
/v2/podcasts/episodes/{id}
Authorization Scope: [music::catalog]
Retrieve detailed information about a specific podcast episode, including the episode's metadata, episode-level images, and a reference to the podcast show it belongs to.

Supports sparse fieldsets via query parameters:

  • fields[podcastEpisode] — Comma-separated episode fields (e.g. title,id,duration,podcastShow)
  • fields[podcastShow] — Comma-separated show fields (e.g. title,id)
  • fields[image] — Comma-separated image fields (e.g. url)

Path Parameters

Name Data Type Required Description
id string Yes Unique identifier for the resource

Response 200

Successful response

Response Schema

_type
string
Discriminator value identifying this entity as a PodcastEpisode
id
string
Unique podcast episode identifier
title
string
Podcast episode title
type
string
Podcast episode type. Common values include `FULL` (a regular episode), `TRAILER`, and `BONUS`. Forward-compatible with new values from the catalog provider.
description
string
Podcast episode description
author
string
Author or host of the podcast episode
seasonNumber
integer
Season number this episode belongs to
episodeNumber
integer
Episode number within its season
duration
number
Episode duration in seconds
releaseDate
string
Date this episode was released
url
string [format=uri]
URL into AmazonMusic for this episode
images
Image[]
Episode-level images for this podcast episode
parentalSettings
ParentalSettings
podcastShow._type
string
Discriminator value identifying this entity as a PodcastShow
podcastShow.id
string
Unique podcast show identifier
podcastShow.title
string
Podcast show title
podcastShow.type
string
Podcast show type. Common values include `EPISODIC` (independent episodes) and `SERIAL` (sequential episodes). Forward-compatible with new values from the catalog provider.
podcastShow.description
string
Podcast show description
podcastShow.author
string
Author or producer of the podcast show
podcastShow.url
string [format=uri]
URL into AmazonMusic for this podcast show

Example

Full podcast episode response with show reference

{
  "id": "B0EXAMP610",
  "title": "Episode 42 — The Halting Problem in Practice",
  "type": "FULL",
  "description": "Why undecidability shows up in production runbooks more often than you think.",
  "author": "Synthetic Studios",
  "seasonNumber": 1,
  "episodeNumber": 42,
  "duration": 2640,
  "releaseDate": "2025-04-12T00:00:00.000Z",
  "url": "https://music.amazon.com/podcasts/B0EXAMP600/episodes/B0EXAMP610",
  "images": [
    {
      "url": "https://m.media-amazon.com/images/I/B0EXAMP610-1400.jpg",
      "width": 1400,
      "height": 1400,
      "imageType": "PRIMARY"
    },
    {
      "url": "https://m.media-amazon.com/images/I/B0EXAMP610-640.jpg",
      "width": 640,
      "height": 640,
      "imageType": "PRIMARY"
    }
  ],
  "parentalSettings": {
    "hasExplicitLanguage": false
  },
  "podcastShow": {
    "id": "B0EXAMP600",
    "title": "Tech Frontiers Daily",
    "type": "EPISODIC",
    "author": "Synthetic Studios",
    "url": "https://music.amazon.com/podcasts/B0EXAMP600"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[podcastEpisode]=title,id,duration,podcastShow&fields[podcastShow]=title,id

{
  "id": "B0EXAMP610",
  "title": "Episode 42 — The Halting Problem in Practice",
  "duration": 2640,
  "podcastShow": {
    "id": "B0EXAMP600",
    "title": "Tech Frontiers Daily"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 Invalid field 'nonexistent' for type 'podcastEpisode'
404 NOT_FOUND 404 Podcast episode not found

400 Example

{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid field 'nonexistent' for type 'podcastEpisode'",
    "traceId": "1-abc-def"
  }
}

404 Example

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Podcast episode not found",
    "traceId": "1-abc-def"
  }
}