Amazon Developer

as

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

Amazon Music Web API

Web API Views V2.0

Views

Get the Home view

GET
/v2/views/home
Authorization Scope: [music::catalog]
Retrieve the editorial home page for the calling user as a composed `View`. The response groups recommendations into named `entityGroup`s (e.g. "Playlists for You", "Recommended Albums"), each carrying a layout hint (`viewType`) and a polymorphic `entities` array whose items can be tracks, albums, artists, playlists, podcast shows, or podcast episodes.

Each entity carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter. To page deeper into a single group, call /v2/views/home/{groupId}.

Supports sparse fieldsets via query parameters:

  • fields[view] — Comma-separated view fields (e.g. id,title,content)
  • fields[entityGroup] — Comma-separated entity-group fields (e.g. id,title,content)
  • fields[track] — Comma-separated track fields (e.g. title,id,duration)
  • fields[album] — Comma-separated album fields (e.g. title,id)
  • fields[artist] — Comma-separated artist fields (e.g. name,id)
  • fields[playlist] — Comma-separated playlist fields (e.g. title,id)
  • fields[podcastShow] — Comma-separated show fields (e.g. title,id)
  • fields[podcastEpisode] — Comma-separated episode fields (e.g. title,id)

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Home view with two entity groups carrying mixed-type entities

{
  "id": "B0EXAMP700",
  "title": "Home",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP710",
        "title": "Playlists for You",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials",
              "description": "Editorial mix of indie rock standouts.",
              "visibility": "PUBLIC",
              "trackCount": 42,
              "url": "https://music.amazon.com/playlists/B0EXAMP100"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts",
              "description": "Lesser-known rock essentials, hand-picked.",
              "visibility": "PUBLIC",
              "trackCount": 38,
              "url": "https://music.amazon.com/playlists/B0EXAMP101"
            }
          ],
          "nextPageToken": "B0EXAMP720"
        }
      },
      {
        "id": "B0EXAMP711",
        "title": "Recommended Albums",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake",
              "releaseDate": "2009-06-05T00:00:00.000Z",
              "trackCount": 11,
              "label": "Columbia",
              "url": "https://music.amazon.com.mx/albums/B073J5NW51?ref=dm_ff_amazonmusic_3p"
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry",
              "releaseDate": "2013-07-19T00:00:00.000Z",
              "trackCount": 10,
              "label": "Cymatic Records",
              "url": "https://music.amazon.com.mx/albums/B07YVNQFHB?ref=dm_ff_amazonmusic_3p"
            }
          ],
          "nextPageToken": "B0EXAMP721"
        }
      }
    ],
    "nextPageToken": "B0EXAMP730"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[playlist]=id,title&fields[album]=id,title

{
  "id": "B0EXAMP700",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP710",
        "title": "Playlists for You",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP711",
        "title": "Recommended Albums",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake"
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP730"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get a Home view's entity group

GET
/v2/views/home/{groupId}
Authorization Scope: [music::catalog]
Page deeper into a single entity group inside the Home view. Pass the `groupId` you received from a previous `/v2/views/home` call as a path parameter; the value is an opaque token and partners should treat it as such.

Returns one EntityGroup with its entities array. The entities array is paginated independently — use first and after to advance through it.

Supports sparse fieldsets via query parameters:

  • fields[entityGroup] — Comma-separated entity-group fields (e.g. id,title,content)
  • fields[track], fields[album], fields[artist], fields[playlist], fields[podcastShow], fields[podcastEpisode]

Path Parameters

Name Data Type Required Description
groupId string Yes Opaque entity-group identifier from a prior view response

Query Parameters

Name Data Type Required Description
first integer No Number of entities to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this entity group. Use it as the `groupId` path parameter on the See-All endpoint to page deeper into this group.
title
string
Human-readable label for the group
viewType
ViewType
entities
Entity[]
Page of polymorphic entities in this group

Example

Deeper page of the "Playlists for You" entity group

{
  "id": "B0EXAMP710",
  "title": "Playlists for You",
  "viewType": "GRID",
  "content": {
    "entities": [
      {
        "_type": "Playlist",
        "id": "B0EXAMP100",
        "title": "Indie Rock Essentials",
        "description": "Editorial mix of indie rock standouts.",
        "visibility": "PUBLIC",
        "trackCount": 42,
        "url": "https://music.amazon.com/playlists/B0EXAMP100"
      },
      {
        "_type": "Playlist",
        "id": "B0EXAMP101",
        "title": "Rock Deep Cuts",
        "description": "Lesser-known rock essentials, hand-picked.",
        "visibility": "PUBLIC",
        "trackCount": 38,
        "url": "https://music.amazon.com/playlists/B0EXAMP101"
      }
    ],
    "nextPageToken": "B0EXAMP722"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[entityGroup]=id,content&fields[playlist]=id,title

{
  "id": "B0EXAMP710",
  "content": {
    "entities": [
      {
        "_type": "Playlist",
        "id": "B0EXAMP100",
        "title": "Indie Rock Essentials"
      },
      {
        "_type": "Playlist",
        "id": "B0EXAMP101",
        "title": "Rock Deep Cuts"
      }
    ],
    "nextPageToken": "B0EXAMP722"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Entity group 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": "Entity group not found",
    "traceId": "1-abc-def"
  }
}

Get the Recently Played view

GET
/v2/views/recent
Authorization Scope: [music::history]
Retrieve the calling user's recently played history as a composed `View`. The response groups recent activity into named `entityGroup`s (e.g. "Recently Played Tracks", "Recently Played Albums") with mixed-type entities; ordering within each group is most-recent first.

Each entity carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[track], fields[album], fields[playlist], fields[podcastEpisode]

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Recently played view with two entity groups carrying mixed-type entities

{
  "id": "B0EXAMP701",
  "title": "Recently Played",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP712",
        "title": "Recently Played Tracks",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless",
              "duration": 222,
              "url": "https://music.amazon.com/albums/B084KP4NBH/?trackAsin=B084KPC3Q7"
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism",
              "duration": 181,
              "url": "https://music.amazon.com/albums/B084KP4NBH/?trackAsin=B004S8NBPG"
            }
          ],
          "nextPageToken": "B0EXAMP723"
        }
      },
      {
        "id": "B0EXAMP713",
        "title": "Recently Played Albums",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake",
              "releaseDate": "2009-06-05T00:00:00.000Z",
              "trackCount": 11
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry",
              "releaseDate": "2013-07-19T00:00:00.000Z",
              "trackCount": 10
            }
          ],
          "nextPageToken": "B0EXAMP724"
        }
      }
    ],
    "nextPageToken": "B0EXAMP731"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[track]=id,title&fields[album]=id,title

{
  "id": "B0EXAMP701",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP712",
        "title": "Recently Played Tracks",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless"
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP713",
        "title": "Recently Played Albums",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake"
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP731"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get the Podcast home view

GET
/v2/views/podcasts
Authorization Scope: [music::catalog]
Retrieve the editorial podcast home page for the calling user as a composed `View`. The response groups podcast-domain recommendations into named `entityGroup`s (e.g. "Recommended Shows", "New Episodes"); entities are `PodcastShow` or `PodcastEpisode` items.

Each entity carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter. To page deeper into a single group, call /v2/views/podcasts/{groupId}.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[podcastShow], fields[podcastEpisode]

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Podcast home view with two entity groups carrying mixed podcast-domain entities

{
  "id": "B0EXAMP702",
  "title": "Podcasts",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP714",
        "title": "Recommended Shows",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP600",
              "title": "Tech Frontiers Daily",
              "type": "EPISODIC",
              "author": "Synthetic Studios",
              "url": "https://music.amazon.com/podcasts/B0EXAMP600"
            },
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP601",
              "title": "Algorithm Avenue",
              "type": "SERIAL",
              "author": "Synthetic Studios",
              "url": "https://music.amazon.com/podcasts/B0EXAMP601"
            }
          ],
          "nextPageToken": "B0EXAMP726"
        }
      },
      {
        "id": "B0EXAMP715",
        "title": "New Episodes",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "PodcastEpisode",
              "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"
            },
            {
              "_type": "PodcastEpisode",
              "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"
            }
          ],
          "nextPageToken": "B0EXAMP727"
        }
      }
    ],
    "nextPageToken": "B0EXAMP732"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[podcastShow]=id,title&fields[podcastEpisode]=id,title

{
  "id": "B0EXAMP702",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP714",
        "title": "Recommended Shows",
        "content": {
          "entities": [
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP600",
              "title": "Tech Frontiers Daily"
            },
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP601",
              "title": "Algorithm Avenue"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP715",
        "title": "New Episodes",
        "content": {
          "entities": [
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP610",
              "title": "Episode 42 — The Halting Problem in Practice"
            },
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP611",
              "title": "Episode 43 — From Big-O to Bigger Outcomes"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP732"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get a Podcast home view's entity group

GET
/v2/views/podcasts/{groupId}
Authorization Scope: [music::catalog]
Page deeper into a single entity group inside the Podcast home view. Pass the `groupId` you received from a prior `/v2/views/podcasts` call as a path parameter; the value is opaque.

Returns one EntityGroup with its entities array, scoped to podcast-domain entities.

Supports sparse fieldsets via query parameters:

  • fields[entityGroup], fields[podcastShow], fields[podcastEpisode]

Path Parameters

Name Data Type Required Description
groupId string Yes Opaque entity-group identifier from a prior view response

Query Parameters

Name Data Type Required Description
first integer No Number of entities to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this entity group. Use it as the `groupId` path parameter on the See-All endpoint to page deeper into this group.
title
string
Human-readable label for the group
viewType
ViewType
entities
Entity[]
Page of polymorphic entities in this group

Example

Deeper page of the "Recommended Shows" entity group

{
  "id": "B0EXAMP714",
  "title": "Recommended Shows",
  "viewType": "GRID",
  "content": {
    "entities": [
      {
        "_type": "PodcastShow",
        "id": "B0EXAMP600",
        "title": "Tech Frontiers Daily",
        "type": "EPISODIC",
        "author": "Synthetic Studios",
        "url": "https://music.amazon.com/podcasts/B0EXAMP600"
      },
      {
        "_type": "PodcastShow",
        "id": "B0EXAMP601",
        "title": "Algorithm Avenue",
        "type": "SERIAL",
        "author": "Synthetic Studios",
        "url": "https://music.amazon.com/podcasts/B0EXAMP601"
      }
    ],
    "nextPageToken": "B0EXAMP728"
  }
}

Sparse Fieldsets Example

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

{
  "id": "B0EXAMP714",
  "content": {
    "entities": [
      {
        "_type": "PodcastShow",
        "id": "B0EXAMP600",
        "title": "Tech Frontiers Daily",
        "author": "Synthetic Studios"
      },
      {
        "_type": "PodcastShow",
        "id": "B0EXAMP601",
        "title": "Algorithm Avenue",
        "author": "Synthetic Studios"
      }
    ],
    "nextPageToken": "B0EXAMP728"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Entity group 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": "Entity group not found",
    "traceId": "1-abc-def"
  }
}

Get an Album-scoped view

GET
/v2/views/albums/{id}
Authorization Scope: [music::catalog]
Retrieve a curated view seeded by a specific album. The response includes the seed album under the top-level `entity` field, plus one or more `entityGroup`s composed of related content (e.g. "Tracks on This Album", "More by This Artist") with mixed-type entities.

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter. To page deeper into a single group, call /v2/views/albums/{id}/{groupId}.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[album], fields[track], fields[artist]

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 entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Album-scoped view with the seed album and two related entity groups

{
  "id": "B0EXAMP740",
  "title": "Sound Awake",
  "entity": {
    "_type": "Album",
    "id": "B073J5NW51",
    "title": "Sound Awake",
    "releaseDate": "2009-06-05T00:00:00.000Z",
    "trackCount": 11,
    "label": "Columbia",
    "url": "https://music.amazon.com.mx/albums/B073J5NW51?ref=dm_ff_amazonmusic_3p"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP750",
        "title": "Tracks on This Album",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless",
              "duration": 222
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism",
              "duration": 181
            }
          ],
          "nextPageToken": "B0EXAMP760"
        }
      },
      {
        "id": "B0EXAMP751",
        "title": "More by This Artist",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry",
              "releaseDate": "2013-07-19T00:00:00.000Z",
              "trackCount": 10
            },
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake",
              "releaseDate": "2009-06-05T00:00:00.000Z",
              "trackCount": 11
            }
          ],
          "nextPageToken": "B0EXAMP761"
        }
      }
    ],
    "nextPageToken": "B0EXAMP770"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,entity,content&fields[entityGroup]=id,title,content&fields[album]=id,title&fields[track]=id,title

{
  "id": "B0EXAMP740",
  "entity": {
    "_type": "Album",
    "id": "B073J5NW51",
    "title": "Sound Awake"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP750",
        "title": "Tracks on This Album",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless"
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP751",
        "title": "More by This Artist",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry"
            },
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP770"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Album 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": "Album not found",
    "traceId": "1-abc-def"
  }
}

Get an Album view's entity group

GET
/v2/views/albums/{id}/{groupId}
Authorization Scope: [music::catalog]
Page deeper into a single entity group inside an Album-scoped view. Pass the seed album's `id` as the path parameter, plus the `groupId` you received from a prior `/v2/views/albums/{id}` call. The `groupId` value is opaque and partners should treat it as such.

Returns one EntityGroup with its entities array.

Supports sparse fieldsets via query parameters:

  • fields[entityGroup], fields[album], fields[track], fields[artist]

Path Parameters

Name Data Type Required Description
id string Yes Unique identifier for the resource
groupId string Yes Opaque entity-group identifier from a prior view response

Query Parameters

Name Data Type Required Description
first integer No Number of entities to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this entity group. Use it as the `groupId` path parameter on the See-All endpoint to page deeper into this group.
title
string
Human-readable label for the group
viewType
ViewType
entities
Entity[]
Page of polymorphic entities in this group

Example

Deeper page of the "Tracks on This Album" entity group

{
  "id": "B0EXAMP750",
  "title": "Tracks on This Album",
  "viewType": "LIST",
  "content": {
    "entities": [
      {
        "_type": "Track",
        "id": "B084KPC3Q7",
        "title": "Selfless",
        "duration": 222
      },
      {
        "_type": "Track",
        "id": "B004S8NBPG",
        "title": "Metabolism",
        "duration": 181
      }
    ],
    "nextPageToken": "B0EXAMP762"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[entityGroup]=id,content&fields[track]=id,title,duration

{
  "id": "B0EXAMP750",
  "content": {
    "entities": [
      {
        "_type": "Track",
        "id": "B084KPC3Q7",
        "title": "Selfless",
        "duration": 222
      },
      {
        "_type": "Track",
        "id": "B004S8NBPG",
        "title": "Metabolism",
        "duration": 181
      }
    ],
    "nextPageToken": "B0EXAMP762"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Album or entity group 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": "Album or entity group not found",
    "traceId": "1-abc-def"
  }
}

Get an Artist-scoped view

GET
/v2/views/artists/{id}
Authorization Scope: [music::catalog]
Retrieve a curated view seeded by a specific artist. The response includes the seed artist under the top-level `entity` field, plus one or more `entityGroup`s composed of related content (e.g. "Top Tracks", "Albums", "Related Artists") with mixed-type entities.

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter. To page deeper into a single group, call /v2/views/artists/{id}/{groupId}.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[artist], fields[album], fields[track]

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 entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Artist-scoped view with the seed artist and three related entity groups

{
  "id": "B0EXAMP741",
  "title": "Karnivool",
  "entity": {
    "_type": "Artist",
    "id": "B000X6FP38",
    "name": "Karnivool",
    "url": "https://music.amazon.com/artists/B000X6FP38"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP752",
        "title": "Top Tracks",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless",
              "duration": 222
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism",
              "duration": 181
            }
          ],
          "nextPageToken": "B0EXAMP763"
        }
      },
      {
        "id": "B0EXAMP753",
        "title": "Albums",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake",
              "releaseDate": "2009-06-05T00:00:00.000Z",
              "trackCount": 11
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry",
              "releaseDate": "2013-07-19T00:00:00.000Z",
              "trackCount": 10
            }
          ],
          "nextPageToken": "B0EXAMP764"
        }
      },
      {
        "id": "B0EXAMP754",
        "title": "Related Artists",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Artist",
              "id": "B00G70DLAS",
              "name": "the-strokes",
              "url": "https://music.amazon.com/artists/B00G70DLAS"
            }
          ],
          "nextPageToken": "B0EXAMP765"
        }
      }
    ],
    "nextPageToken": "B0EXAMP771"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,entity,content&fields[entityGroup]=id,title,content&fields[artist]=id,name&fields[track]=id,title&fields[album]=id,title

{
  "id": "B0EXAMP741",
  "entity": {
    "_type": "Artist",
    "id": "B000X6FP38",
    "name": "Karnivool"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP752",
        "title": "Top Tracks",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless"
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP753",
        "title": "Albums",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake"
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP771"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Artist 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": "Artist not found",
    "traceId": "1-abc-def"
  }
}

Get an Artist view's entity group

GET
/v2/views/artists/{id}/{groupId}
Authorization Scope: [music::catalog]
Page deeper into a single entity group inside an Artist-scoped view. Pass the seed artist's `id` as the path parameter, plus the `groupId` you received from a prior `/v2/views/artists/{id}` call. The `groupId` value is opaque.

Returns one EntityGroup with its entities array.

Supports sparse fieldsets via query parameters:

  • fields[entityGroup], fields[artist], fields[album], fields[track]

Path Parameters

Name Data Type Required Description
id string Yes Unique identifier for the resource
groupId string Yes Opaque entity-group identifier from a prior view response

Query Parameters

Name Data Type Required Description
first integer No Number of entities to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this entity group. Use it as the `groupId` path parameter on the See-All endpoint to page deeper into this group.
title
string
Human-readable label for the group
viewType
ViewType
entities
Entity[]
Page of polymorphic entities in this group

Example

Deeper page of the "Top Tracks" entity group

{
  "id": "B0EXAMP752",
  "title": "Top Tracks",
  "viewType": "LIST",
  "content": {
    "entities": [
      {
        "_type": "Track",
        "id": "B084KPC3Q7",
        "title": "Selfless",
        "duration": 222
      },
      {
        "_type": "Track",
        "id": "B004S8NBPG",
        "title": "Metabolism",
        "duration": 181
      }
    ],
    "nextPageToken": "B0EXAMP766"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[entityGroup]=id,content&fields[track]=id,title,duration

{
  "id": "B0EXAMP752",
  "content": {
    "entities": [
      {
        "_type": "Track",
        "id": "B084KPC3Q7",
        "title": "Selfless",
        "duration": 222
      },
      {
        "_type": "Track",
        "id": "B004S8NBPG",
        "title": "Metabolism",
        "duration": 181
      }
    ],
    "nextPageToken": "B0EXAMP766"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Artist or entity group 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": "Artist or entity group not found",
    "traceId": "1-abc-def"
  }
}

Get a Playlist-scoped view

GET
/v2/views/playlists/{id}
Authorization Scope: [music::catalog]
Retrieve a curated view seeded by a specific playlist. The response includes the seed playlist under the top-level `entity` field, plus one or more `entityGroup`s composed of related content (e.g. "Tracks", "Similar Playlists") with mixed-type entities.

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from the entity group to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[playlist], fields[track], fields[artist]

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 entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Playlist-scoped view with the seed playlist and two related entity groups

{
  "id": "B0EXAMP742",
  "title": "Indie Rock Essentials",
  "entity": {
    "_type": "Playlist",
    "id": "B0EXAMP100",
    "title": "Indie Rock Essentials",
    "description": "Editorial mix of indie rock standouts.",
    "visibility": "PUBLIC",
    "trackCount": 42,
    "url": "https://music.amazon.com/playlists/B0EXAMP100"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP755",
        "title": "Tracks",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless",
              "duration": 222
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism",
              "duration": 181
            }
          ],
          "nextPageToken": "B0EXAMP767"
        }
      },
      {
        "id": "B0EXAMP756",
        "title": "Similar Playlists",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts",
              "description": "Lesser-known rock essentials, hand-picked.",
              "visibility": "PUBLIC",
              "trackCount": 38,
              "url": "https://music.amazon.com/playlists/B0EXAMP101"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials",
              "description": "Editorial mix of indie rock standouts.",
              "visibility": "PUBLIC",
              "trackCount": 42,
              "url": "https://music.amazon.com/playlists/B0EXAMP100"
            }
          ],
          "nextPageToken": "B0EXAMP768"
        }
      }
    ],
    "nextPageToken": "B0EXAMP772"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,entity,content&fields[entityGroup]=id,title,content&fields[playlist]=id,title&fields[track]=id,title

{
  "id": "B0EXAMP742",
  "entity": {
    "_type": "Playlist",
    "id": "B0EXAMP100",
    "title": "Indie Rock Essentials"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP755",
        "title": "Tracks",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless"
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP756",
        "title": "Similar Playlists",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP772"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100
404 NOT_FOUND 404 Playlist 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": "Playlist not found",
    "traceId": "1-abc-def"
  }
}

Get a Podcast-Show-scoped view

GET
/v2/views/podcasts/shows/{id}
Authorization Scope: [music::catalog]
Retrieve a curated view seeded by a specific podcast show. The response includes the seed show under the top-level `entity` field, plus one or more `entityGroup`s composed of related content (e.g. "Episodes", "Related Shows") with mixed-type entities.

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from the entity group to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[podcastShow], fields[podcastEpisode]

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 entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Podcast-show-scoped view with the seed show and two related entity groups

{
  "id": "B0EXAMP743",
  "title": "Tech Frontiers Daily",
  "entity": {
    "_type": "PodcastShow",
    "id": "B0EXAMP600",
    "title": "Tech Frontiers Daily",
    "type": "EPISODIC",
    "author": "Synthetic Studios",
    "url": "https://music.amazon.com/podcasts/B0EXAMP600"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP757",
        "title": "Episodes",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "PodcastEpisode",
              "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"
            },
            {
              "_type": "PodcastEpisode",
              "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"
            }
          ],
          "nextPageToken": "B0EXAMP780"
        }
      },
      {
        "id": "B0EXAMP758",
        "title": "Related Shows",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP601",
              "title": "Algorithm Avenue",
              "type": "SERIAL",
              "author": "Synthetic Studios",
              "url": "https://music.amazon.com/podcasts/B0EXAMP601"
            }
          ],
          "nextPageToken": "B0EXAMP781"
        }
      }
    ],
    "nextPageToken": "B0EXAMP790"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,entity,content&fields[entityGroup]=id,title,content&fields[podcastShow]=id,title&fields[podcastEpisode]=id,title

{
  "id": "B0EXAMP743",
  "entity": {
    "_type": "PodcastShow",
    "id": "B0EXAMP600",
    "title": "Tech Frontiers Daily"
  },
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP757",
        "title": "Episodes",
        "content": {
          "entities": [
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP610",
              "title": "Episode 42 — The Halting Problem in Practice"
            },
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP611",
              "title": "Episode 43 — From Big-O to Bigger Outcomes"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP758",
        "title": "Related Shows",
        "content": {
          "entities": [
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP601",
              "title": "Algorithm Avenue"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP790"
  }
}

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 the Library view

GET
/v2/views/library
Authorization Scope: [music::library:read]
Retrieve the calling user's library as a composed `View`. The response groups library content into named `entityGroup`s (e.g. "Playlists", "Songs", "Albums", "Artists", "Podcast Episodes", "Podcast Shows") with mixed-type entities scoped to the caller's library.

Each entity carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation across the top-level entityGroups array. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[track], fields[album], fields[artist], fields[playlist], fields[podcastShow], fields[podcastEpisode]

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Library view with two entity groups carrying mixed-type library entities

{
  "id": "B0EXAMP800",
  "title": "Library",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP810",
        "title": "Playlists",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials",
              "visibility": "PUBLIC",
              "trackCount": 42,
              "url": "https://music.amazon.com/playlists/B0EXAMP100"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts",
              "visibility": "PUBLIC",
              "trackCount": 38,
              "url": "https://music.amazon.com/playlists/B0EXAMP101"
            }
          ],
          "nextPageToken": "B0EXAMP820"
        }
      },
      {
        "id": "B0EXAMP811",
        "title": "Albums",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake",
              "releaseDate": "2009-06-05T00:00:00.000Z",
              "trackCount": 11
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry",
              "releaseDate": "2013-07-19T00:00:00.000Z",
              "trackCount": 10
            }
          ],
          "nextPageToken": "B0EXAMP821"
        }
      }
    ],
    "nextPageToken": "B0EXAMP830"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[playlist]=id,title&fields[album]=id,title

{
  "id": "B0EXAMP800",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP810",
        "title": "Playlists",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP811",
        "title": "Albums",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake"
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP830"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get the Library Albums view

GET
/v2/views/library/albums
Authorization Scope: [music::library:read]
Retrieve the calling user's library albums as a composed `View`. The response groups library-album content into named `entityGroup`s scoped to the caller's saved albums.

The optional groupId query parameter narrows the top-level response to a single named group; without it, the response contains every group the view defines.

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[album], fields[artist]

Query Parameters

Name Data Type Required Description
groupId string No Opaque entity-group identifier to narrow the top-level response to a single group
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Library albums view with the "Albums" entity group

{
  "id": "B0EXAMP801",
  "title": "Albums",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP812",
        "title": "Albums",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake",
              "releaseDate": "2009-06-05T00:00:00.000Z",
              "trackCount": 11
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry",
              "releaseDate": "2013-07-19T00:00:00.000Z",
              "trackCount": 10
            }
          ],
          "nextPageToken": "B0EXAMP823"
        }
      }
    ],
    "nextPageToken": "B0EXAMP831"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[album]=id,title

{
  "id": "B0EXAMP801",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP812",
        "title": "Albums",
        "content": {
          "entities": [
            {
              "_type": "Album",
              "id": "B073J5NW51",
              "title": "Sound Awake"
            },
            {
              "_type": "Album",
              "id": "B07YVNQFHB",
              "title": "Asymmetry"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP831"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get the Library Artists view

GET
/v2/views/library/artists
Authorization Scope: [music::library:read]
Retrieve the calling user's followed artists as a composed `View`. The response groups library-artist content into named `entityGroup`s scoped to the artists the caller follows.

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[artist]

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Library artists view with the "Followed Artists" entity group

{
  "id": "B0EXAMP802",
  "title": "Artists",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP813",
        "title": "Followed Artists",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Artist",
              "id": "B000X6FP38",
              "name": "Karnivool",
              "url": "https://music.amazon.com/artists/B000X6FP38"
            },
            {
              "_type": "Artist",
              "id": "B00G70DLAS",
              "name": "the-strokes",
              "url": "https://music.amazon.com/artists/B00G70DLAS"
            }
          ],
          "nextPageToken": "B0EXAMP825"
        }
      }
    ],
    "nextPageToken": "B0EXAMP832"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[artist]=id,name

{
  "id": "B0EXAMP802",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP813",
        "title": "Followed Artists",
        "content": {
          "entities": [
            {
              "_type": "Artist",
              "id": "B000X6FP38",
              "name": "Karnivool"
            },
            {
              "_type": "Artist",
              "id": "B00G70DLAS",
              "name": "the-strokes"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP832"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get the Library Playlists view

GET
/v2/views/library/playlists
Authorization Scope: [music::library:read]
Retrieve the calling user's library playlists as a composed `View`. The response groups library-playlist content into named `entityGroup`s scoped to the caller's owned and followed playlists (e.g. "Your Playlists", "Followed Playlists").

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[playlist]

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Library playlists view with two entity groups (your playlists and followed playlists)

{
  "id": "B0EXAMP803",
  "title": "Playlists",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP814",
        "title": "Your Playlists",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials",
              "visibility": "PRIVATE",
              "trackCount": 42,
              "url": "https://music.amazon.com/playlists/B0EXAMP100"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts",
              "visibility": "PRIVATE",
              "trackCount": 38,
              "url": "https://music.amazon.com/playlists/B0EXAMP101"
            }
          ],
          "nextPageToken": "B0EXAMP827"
        }
      },
      {
        "id": "B0EXAMP815",
        "title": "Followed Playlists",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP102",
              "title": "Editorial Mix",
              "visibility": "PUBLIC",
              "trackCount": 50,
              "url": "https://music.amazon.com/playlists/B0EXAMP102"
            }
          ],
          "nextPageToken": "B0EXAMP828"
        }
      }
    ],
    "nextPageToken": "B0EXAMP833"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[playlist]=id,title

{
  "id": "B0EXAMP803",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP814",
        "title": "Your Playlists",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP100",
              "title": "Indie Rock Essentials"
            },
            {
              "_type": "Playlist",
              "id": "B0EXAMP101",
              "title": "Rock Deep Cuts"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP815",
        "title": "Followed Playlists",
        "content": {
          "entities": [
            {
              "_type": "Playlist",
              "id": "B0EXAMP102",
              "title": "Editorial Mix"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP833"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get the Library Podcasts view

GET
/v2/views/library/podcasts
Authorization Scope: [music::library:read]
Retrieve the calling user's library podcasts as a composed `View`. The response groups library-podcast content into named `entityGroup`s scoped to the caller's saved episodes and followed shows (e.g. "Podcast Episodes", "Podcast Shows").

Each entity inside a group carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[podcastShow], fields[podcastEpisode]

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Library podcasts view with two entity groups (saved episodes and followed shows)

{
  "id": "B0EXAMP804",
  "title": "Podcasts",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP816",
        "title": "Podcast Episodes",
        "viewType": "LIST",
        "content": {
          "entities": [
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP610",
              "title": "Episode 42 — The Halting Problem in Practice",
              "duration": 2640,
              "releaseDate": "2025-04-12T00:00:00.000Z"
            },
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP611",
              "title": "Episode 43 — From Big-O to Bigger Outcomes",
              "duration": 2820,
              "releaseDate": "2025-04-13T00:00:00.000Z"
            }
          ],
          "nextPageToken": "B0EXAMP840"
        }
      },
      {
        "id": "B0EXAMP817",
        "title": "Podcast Shows",
        "viewType": "GRID",
        "content": {
          "entities": [
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP600",
              "title": "Tech Frontiers Daily",
              "author": "Synthetic Studios"
            },
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP601",
              "title": "Algorithm Avenue",
              "author": "Synthetic Studios"
            }
          ],
          "nextPageToken": "B0EXAMP841"
        }
      }
    ],
    "nextPageToken": "B0EXAMP834"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[podcastShow]=id,title&fields[podcastEpisode]=id,title

{
  "id": "B0EXAMP804",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP816",
        "title": "Podcast Episodes",
        "content": {
          "entities": [
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP610",
              "title": "Episode 42 — The Halting Problem in Practice"
            },
            {
              "_type": "PodcastEpisode",
              "id": "B0EXAMP611",
              "title": "Episode 43 — From Big-O to Bigger Outcomes"
            }
          ]
        }
      },
      {
        "id": "B0EXAMP817",
        "title": "Podcast Shows",
        "content": {
          "entities": [
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP600",
              "title": "Tech Frontiers Daily"
            },
            {
              "_type": "PodcastShow",
              "id": "B0EXAMP601",
              "title": "Algorithm Avenue"
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP834"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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

Get the Library Songs view

GET
/v2/views/library/songs
Authorization Scope: [music::library:read]
Retrieve the calling user's liked songs as a composed `View`. The response groups library-song content into a "Songs" `entityGroup` scoped to the caller's liked tracks (the implicit "My Likes" playlist).

Each entity carries a _type discriminator naming the concrete type. Partners should switch on _type to interpret the rest of the entity payload; treat unknown values as opaque and skip the entity.

Paginated with forward-only cursor navigation. Default page size is 20; maximum is 100. Use the nextPageToken from content.nextPageToken to fetch the next page via the after query parameter.

Supports sparse fieldsets via query parameters:

  • fields[view], fields[entityGroup], fields[track], fields[album], fields[artist]

Query Parameters

Name Data Type Required Description
first integer No Number of entity groups to return
after string No Cursor to start after

Response 200

Successful response

Response Schema

id
string
Stable identifier for this view
entity
Entity
entityGroups
EntityGroup[]
Ordered list of entity groups composing the view

Example

Library songs view with the "Songs" entity group

{
  "id": "B0EXAMP805",
  "title": "Songs",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP818",
        "title": "Songs",
        "viewType": "STACK",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless",
              "duration": 222,
              "url": "https://music.amazon.com/albums/B084KP4NBH/?trackAsin=B084KPC3Q7"
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism",
              "duration": 181,
              "url": "https://music.amazon.com/albums/B084KP4NBH/?trackAsin=B004S8NBPG"
            }
          ],
          "nextPageToken": "B0EXAMP843"
        }
      }
    ],
    "nextPageToken": "B0EXAMP835"
  }
}

Sparse Fieldsets Example

Sparse fieldsets — fields[view]=id,content&fields[entityGroup]=id,title,content&fields[track]=id,title,duration

{
  "id": "B0EXAMP805",
  "content": {
    "entityGroups": [
      {
        "id": "B0EXAMP818",
        "title": "Songs",
        "content": {
          "entities": [
            {
              "_type": "Track",
              "id": "B084KPC3Q7",
              "title": "Selfless",
              "duration": 222
            },
            {
              "_type": "Track",
              "id": "B004S8NBPG",
              "title": "Metabolism",
              "duration": 181
            }
          ]
        }
      }
    ],
    "nextPageToken": "B0EXAMP835"
  }
}

Error Responses

Response Code Status Message
400 BAD_REQUEST 400 first parameter must be between 1 and 100

400 Example

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