There are lots of operations involving a user's library that can be performed. Remember to request the correct scopes beforehand.
$api->addMyLibrary([
'spotify:album:album_id',
'spotify:artist:artist_id',
'spotify:episode:episode_id',
'spotify:playlist:playlist_id',
'spotify:show:show_id',
'spotify:track:track_id',
'spotify:user:user_id',
]);$api->deleteMyLibrary([
'spotify:album:album_id',
'spotify:artist:artist_id',
'spotify:episode:episode_id',
'spotify:playlist:playlist_id',
'spotify:show:show_id',
'spotify:track:track_id',
'spotify:user:user_id',
]);$contains = $api->myLibraryContains([
'spotify:album:album_id',
'spotify:artist:artist_id',
'spotify:episode:episode_id',
'spotify:playlist:playlist_id',
'spotify:show:show_id',
'spotify:track:track_id',
'spotify:user:user_id',
]);
var_dump($contains);$tracks = $api->getMySavedTracks([
'limit' => 5,
]);
foreach ($tracks->items as $track) {
$track = $track->track;
echo '<a href="' . $track->external_urls->spotify . '">' . $track->name . '</a> <br>';
}It's also possible to list the albums, audiobooks, podcast episodes, or podcast shows in a user's library using getMySavedAlbums, getMySavedAudiobooks, getMySavedEpisodes, or getMySavedShows.
$api->addMyTracks([
'ids' => [
'TRACK_ID',
'TRACK_ID',
],
]);$api->addMyTracks([
'timestamped_ids' => [
['id' => 'TRACK_ID', 'added_at' => '2025-10-01T11:00:00.000Z'],
['id' => 'TRACK_ID', 'added_at' => '2025-10-01T12:00:00.000Z'],
],
]);Note: These methods are only available to extended quota apps.
$api->addMyAlbums([
'ALBUM_ID',
'ALBUM_ID',
]);$api->addMyAudiobooks([
'AUDIOBOOK_ID',
'AUDIOBOOK_ID',
]);$api->addMyEpisodes([
'EPISODE_ID',
'EPISODE_ID',
]);$api->addMyShows([
'SHOW_ID',
'SHOW_ID',
]);Note: These methods are only available to extended quota apps.
$api->deleteMyTracks([
'TRACK_ID',
'TRACK_ID',
]);It's also possible to delete an album, an audiobook, a podcast episode, or a podcast show from a user's library using deleteMyAlbums, deleteMyAudiobooks, deleteMyEpisodes, or deleteMyShows.
Note: These methods are only available to extended quota apps.
$contains = $api->myTracksContains([
'TRACK_ID',
'TRACK_ID',
]);
var_dump($contains);It's also possible to check if an album, an audiobook, a podcast episode, or a podcast show is present in a user's library using myAlbumsContains, myAudiobooksContains, myEpisodesContains, or myShowsContains.
Please see the method reference for more available options for each method.