jwilsson/spotify-web-api-php
A PHP wrapper for Spotify's Web API.
7.2.0
1.5M downloads/mo
#3555 most downloaded on Packagist
jwilsson/spotify-web-api-php
What this package is like to depend on
Last release 29 days ago
25 Jul 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 96 of 96 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
96 releases · first in 2014
5 releases in the last 12 months
see the full history below
Release timeline
96 releases · Jun 2014 to Jul 2026
2015
2017
2019
2021
2023
2025
Releases
latest 60 of 96-
7.2.025 Jul 2026Release notes
Open source →- Added
SpotifyWebAPI::getAudiobookChapters()method. (c8abfb9) - Added
SpotifyWebAPIException::isQuotaExceeded()helper. (049543d) - Marked
SpotifyWebAPI::getCategoryPlaylists()as deprecated. (052f30d) - Fixed trailing slash before GET query parameters. (db7e66f)
- Fixed odd-length PKCE verifier generation. (d9b29e9)
- Fixed access token expired message check. (d106507)
- Updated CA bundle. (79328aa)
- Added
-
7.1.019 Feb 2026Release notes
Open source →- Deprecated the following methods due to February 2026 Spotify Web API changes: (e436a3c)
SpotifyWebAPI::addMyAlbums()SpotifyWebAPI::addMyAudiobooks()SpotifyWebAPI::addMyEpisodes()SpotifyWebAPI::addMyLibrary()SpotifyWebAPI::addMyShows()SpotifyWebAPI::addMyTracks()SpotifyWebAPI::addPlaylistTracks()SpotifyWebAPI::currentUserFollows()SpotifyWebAPI::currentUserFollowsPlaylist()SpotifyWebAPI::deleteMyAlbums()SpotifyWebAPI::deleteMyAudiobooks()SpotifyWebAPI::deleteMyEpisodes()SpotifyWebAPI::deleteMyLibrary()SpotifyWebAPI::deleteMyShows()SpotifyWebAPI::deleteMyTracks()SpotifyWebAPI::deletePlaylistTracks()SpotifyWebAPI::followArtistsOrUsers()SpotifyWebAPI::followArtistsOrUsers()SpotifyWebAPI::followPlaylist()SpotifyWebAPI::getAlbums()SpotifyWebAPI::getArtists()SpotifyWebAPI::getArtistTopTracks()SpotifyWebAPI::getAudiobooks()SpotifyWebAPI::getCategoriesList()SpotifyWebAPI::getCategory()SpotifyWebAPI::getChapters()SpotifyWebAPI::getEpisodes()SpotifyWebAPI::getMarkets()SpotifyWebAPI::getNewReleases()SpotifyWebAPI::getPlaylistTracks()SpotifyWebAPI::getShows()SpotifyWebAPI::getTracks()SpotifyWebAPI::getUserPlaylists()SpotifyWebAPI::myAlbumsContains()SpotifyWebAPI::myAudiobooksContains()SpotifyWebAPI::myEpisodesContains()SpotifyWebAPI::myShowsContains()SpotifyWebAPI::myTracksContains()SpotifyWebAPI::reorderPlaylistTracks()SpotifyWebAPI::replacePlaylistTracks()SpotifyWebAPI::unfollowArtistsOrUsers()SpotifyWebAPI::unfollowPlaylist()
- Added the following methods:
SpotifyWebAPI::addMyAudiobooks()(9f6f8ad)SpotifyWebAPI::addMyLibrary()(3e91670)SpotifyWebAPI::addPlaylistItems()(ad903a7)SpotifyWebAPI::deleteMyAudiobooks()(9f6f8ad)SpotifyWebAPI::deleteMyLibrary()(6531b15)SpotifyWebAPI::deletePlaylistItems()(958cbe0)SpotifyWebAPI::getMySavedAudiobooks()(9f6f8ad)SpotifyWebAPI::getPlaylistItems()(c8d3904)SpotifyWebAPI::myAudiobooksContains()(9f6f8ad)SpotifyWebAPI::myLibraryContains()(b3870b7)SpotifyWebAPI::updatePlaylistItems()(890926a)
SpotifyWebAPI::createPlaylist()will now always use the current user. (01e53a5)
- Deprecated the following methods due to February 2026 Spotify Web API changes: (e436a3c)
-
7.0.014 Dec 2025Release notes
Open source →- Breaking Dropped support for PHP versions less than 8.3. (ff6ea06)
- Breaking Removed deprecated
SpotifyWebAPI::usersFollowPlaylist()method. UseSpotifyWebAPI::currentUserFollowsPlaylist()instead. (12f1596) - Breaking Calling
SpotifyWebAPI::createPlaylist()without a user ID is no longer possible. (80adafd) - Breaking Calling
SpotifyWebAPI::addMyTracks()withoutidsortimestamped_idsis no longer possible. (1b12cda)
-
6.3.106 Dec 2025Release notes
Open source → -
6.3.012 Oct 2025Release notes
Open source →- Added support for
timestamped_idstoSpotifyWebAPI::addMyTracks()and deprecated passing strings or array without anidskey. (f17cdff) - Added a
default_headersoptions to add HTTP headers that should be included in each request. (ef9b92e) - Deprecated
SpotifyWebAPI::usersFollowPlaylist(), useSpotifyWebAPI::currentUserFollowsPlaylist()instead. (1427059) - Updated CA bundle. (4e82140)
- Added support for
-
6.2.018 Jan 2025 -
6.1.109 Oct 2024 -
6.1.006 Jun 2024 -
6.0.413 May 2024Release notes
Open source →- Updated successful response code check in
SpotifyWebAPI::replacePlaylistTracks(). (bc402ce)
- Updated successful response code check in
-
6.0.314 Mar 2024 -
6.0.214 Dec 2023 -
6.0.101 Aug 2023 -
6.0.001 Aug 2023Release notes
Open source →- Breaking Dropped support for PHP versions less than 8.1. (c3f69bd)
- Breaking
SpotifyWebAPI::getAudioFeatures()no longer accepts arrays,SpotifyWebAPI::getMultipleAudioFeatures()should be used instead. (ec4ccd2) - All methods now include complete type declarations. (a80a55e)
- Calling
SpotifyWebAPI::createPlaylist()without a user ID is now deprecated and will print warnings. (055f3df)
-
5.7.101 Aug 2023 -
5.7.029 Jul 2023 -
5.6.011 Feb 2023Release notes
Open source →- The following setters now returns
self: (fe2e90f)Request::setOptions()Session::setAccessToken()Session::setClientId()Session::setClientSecret()Session::setRedirectUri()Session::setRefreshToken()SpotifyWebAPI::setAccessToken()SpotifyWebAPI::setOptions()SpotifyWebAPI::setSession()
- Updated CA bundle. (84bf7a2)
- The following setters now returns
-
5.5.012 Dec 2022Release notes
Open source →- Added missiing
$optionsargument toSpotifyWebAPI::getAudiobook()andSpotifyWebAPI::getAudiobooks()methods. (12293f1)
- Added missiing
-
5.4.016 Oct 2022 -
5.3.003 Sep 2022 -
5.2.016 Jul 2022 -
5.1.004 Jul 2022 -
5.0.315 Jan 2022Release notes
Open source →Session::refreshAccessToken()will no longer send client secret when none exists. (7e35d41)
-
5.0.201 Dec 2021 -
5.0.105 Oct 2021 -
5.0.014 May 2021Release notes
Open source →- Breaking Removed the following, deprecated methods: (bd08fb8)
Request::getReturnType()- Use thereturn_assocoption instead.Request::setReturnType()- Use thereturn_assocoption instead.Request::setCurlOptions()- Use thecurl_optionsoption instead.SpotifyWebAPI::followPlaylistForCurrentUser()- UseSpotifyWebAPI::followPlaylist()instead.SpotifyWebAPI::unfollowPlaylistForCurrentUser()- UseSpotifyWebAPI::unfollowPlaylist()instead.SpotifyWebAPI::getReturnType()- Use thereturn_assocoption instead.SpotifyWebAPI::setReturnType()- Use thereturn_assocoption instead.
- Breaking
SpotifyWebAPI::deletePlaylistTracks()no longer accepts theidkey, theurikey should be used instead. (403a8a2) - Breaking
SpotifyWebAPI::getArtistAlbums()no longer accepts thealbum_typeoption, theinclude_groupsoption should be used instead. (4cf3301) - Breaking
SpotifyWebAPI::__construct()will no longer acceptRequestobjects as the first argument. (1f08d8) - Breaking Dropped support for PHP versions less than 7.3. 21776d6)
- Possibly breaking HTTP response header names are now always lowercased, previously they were returned as-is. (f0140fa)
- Possibly breaking
SpotifyWebAPI::addPlaylistTracks()will now return snapshot IDs insteadd of a boolean. (d6167a3) - Updated CA bundle. (fb0c1a)
- Breaking Removed the following, deprecated methods: (bd08fb8)
-
4.3.028 Mar 2021Release notes
Open source →- Added methods to control the episodes in a user's library: (b89299d):
SpotifyWebAPI::addMyEpisodes()SpotifyWebAPI::deleteMyEpisodes()SpotifyWebAPI::getMySavedEpisodes()SpotifyWebAPI::myEpisodesContains()
- Added
SpotifyWebAPI::getMultipleAudioFeatures()method to get the audio features of multiple tracks.SpotifyWebAPI::getAudioFeatures()will now return the audio features of a single track unless passed an array which will maintain the old behaviour. (d282e9d) - Added
SpotifyWebAPI::getMarkets()method to get the markets where Spotify is available. (181cc28) - Restructured Getting Started guide. (2291a78)
- Updated inline PHPDoc Spotify API links to their new format. (8a2f870)
- Added methods to control the episodes in a user's library: (b89299d):
-
4.2.202 Mar 2021Release notes
Open source →- Fixed an issue where empty arrays would be passed to Spotify, causing errors. (b350526)
-
4.2.131 Jan 2021 -
4.2.005 Jan 2021 -
4.1.111 Dec 2020 -
4.1.007 Dec 2020Release notes
Open source →- Added the
SpotifyWebAPI::getPlaylistImage()method to get a playlist's cover image. (7a4f0e6)
- Added the
-
4.0.030 Nov 2020Release notes
Open source → -
3.6.219 Oct 2020 -
3.6.111 Oct 2020Release notes
Open source →- Fixed an issue with the auto retry feature sometimes not working correctly due to lowercased header names. (28c7b1d)
-
3.6.019 Sep 2020 -
3.5.115 Aug 2020 -
3.5.023 Jun 2020 -
3.4.022 Apr 2020Release notes
Open source →- Added the
SpotifyWebAPI::queue()method to add tracks to the user's playback queue. (d6859a5)
- Added the
-
3.3.028 Mar 2020 -
3.2.021 Mar 2020Release notes
Open source →- Added support for new Podcast endpoints (eba5971):
SpotifyWebAPI::addMyShows()SpotifyWebAPI::getMySavedShows()SpotifyWebAPI::getShow()SpotifyWebAPI::getShows()SpotifyWebAPI::getShowEpisodes()SpotifyWebAPI::getEpisode()SpotifyWebAPI::getEpisodes()SpotifyWebAPI::myShowsContains()SpotifyWebAPI::deleteMyShows()
- Added support for the new
additional_typesoption to (b04e06e):SpotifyWebAPI::getMyCurrentTrack()SpotifyWebAPI::getMyCurrentPlaybackInfo()
- Updated CA bundle. (4359fc3)
- Added support for new Podcast endpoints (eba5971):
-
3.1.021 Feb 2020Release notes
Open source →- Deprecated the following methods (e643628):
SpotifyWebAPI::followPlaylistForCurrentUser()(useSpotifyWebAPI::followPlaylist()instead)SpotifyWebAPI::unfollowPlaylistForCurrentUser()(useSpotifyWebAPI::unfollowPlaylist()instead)
- Updated
SpotifyWebAPI::addPlaylistTracks()to always send everything in request body. (ac862ef) - Refactored calls to
SpotifyWebAPI::authHeaders(). (7d0badd)
- Deprecated the following methods (e643628):
-
3.0.014 Dec 2019Release notes
Open source →- Breaking The following, deprecated, methods have been removed (02d5598):
SpotifyWebAPI::addUserPlaylistTracks()(useSpotifyWebAPI::addPlaylistTracks()instead)SpotifyWebAPI::createUserPlaylist()(useSpotifyWebAPI::createPlaylist()instead)SpotifyWebAPI::deleteUserPlaylistTracks()(useSpotifyWebAPI::deletePlaylistTracks()instead)SpotifyWebAPI::followPlaylist()(useSpotifyWebAPI::followPlaylistForCurrentUser()instead)SpotifyWebAPI::getUserPlaylist()(useSpotifyWebAPI::getPlaylist()instead)SpotifyWebAPI::getUserPlaylistTracks()(useSpotifyWebAPI::getPlaylistTracks()instead)SpotifyWebAPI::reorderUserPlaylistTracks()(useSpotifyWebAPI::reorderPlaylistTracks()instead)SpotifyWebAPI::replaceUserPlaylistTracks()(useSpotifyWebAPI::replacePlaylistTracks()instead)SpotifyWebAPI::unfollowPlaylist()(useSpotifyWebAPI::unfollowPlaylistForCurrentUser()instead)SpotifyWebAPI::updateUserPlaylist()(useSpotifyWebAPI::updatePlaylist()instead)SpotifyWebAPI::updateUserPlaylistImage()(useSpotifyWebAPI::updatePlaylistImage()instead)SpotifyWebAPI::userFollowsPlaylist()(useSpotifyWebAPI::usersFollowPlaylist()instead)SpotifyWebAPI::userFollowsPlaylist()(useSpotifyWebAPI::usersFollowPlaylist()instead)
- Breaking Removed the possibility to omit
tracksin calls toSpotifyWebAPI::deletePlaylistTracks(). (3562402) - Breaking Dropped support for PHP versions less than 7. (461a0e4)
SpotifyWebAPI::getReturnType()/SpotifyWebAPI::setReturnType()andRequest::getReturnType()/Request::setReturnType()are deprecated. Use the newreturn_assocoption instead. (2a3d5ee)Request::setCurlOptions()is deprecated. Use the newcurl_optionsoption instead. (1615d07)
- Breaking The following, deprecated, methods have been removed (02d5598):
-
2.12.001 Nov 2019 -
2.11.119 Oct 2019 -
2.11.019 Oct 2019 -
2.10.102 Oct 2019Release notes
Open source →- Fixed an issue where
SpotifyWebAPI::deletePlaylistTracks()wouldn't return the snapshot ID when return type was set toSpotifyWebAPI::RETURN_ASSOC. (f9d580f) - Fixed an issue where
SpotifyWebAPI::reorderPlaylistTracks()wouldn't return the snapshot ID when return type was set toSpotifyWebAPI::RETURN_ASSOC. (89fe613)
- Fixed an issue where
-
2.10.027 Aug 2019 -
2.9.003 Aug 2019Release notes
Open source →- The following deprecated methods will now emit a run time notice when used (fc1e535):
SpotifyWebAPI::addUserPlaylistTracks()SpotifyWebAPI::createUserPlaylist()SpotifyWebAPI::deleteUserPlaylistTracks()SpotifyWebAPI::followPlaylistForCurrentUser()SpotifyWebAPI::getUserPlaylist()SpotifyWebAPI::getUserPlaylistTracks()SpotifyWebAPI::reorderUserPlaylistTracks()SpotifyWebAPI::replaceUserPlaylistTracks()SpotifyWebAPI::unfollowPlaylistForCurrentUser()SpotifyWebAPI::updateUserPlaylist()SpotifyWebAPI::updateUserPlaylistImage()SpotifyWebAPI::usersFollowPlaylist
- When passing
$trackswithout atracksorpositionskey toSpotifyWebAPI::deletePlaylistTracksa run time notice will be emitted. (2f457bd)
- The following deprecated methods will now emit a run time notice when used (fc1e535):
-
2.8.029 Jun 2019Release notes
Open source →- Added a
Request::setCurlOptions()method to make it possible to set custom cURL options. (5a8b1e5)
- Added a
-
2.7.019 Jun 2019 -
2.6.107 Nov 2018 -
2.6.019 Sep 2018Release notes
Open source →- Added new methods for handling following of playlists, no longer requiring
$userId(6f1bb6b):SpotifyWebAPI::followPlaylistForCurrentUser()SpotifyWebAPI::unfollowPlaylistForCurrentUser()SpotifyWebAPI::usersFollowPlaylist
- Deprecated the following methods (6f1bb6b):
SpotifyWebAPI::followPlaylist()SpotifyWebAPI::unfollowPlaylist()SpotifyWebAPI::userFollowPlaylist
- Added new methods for handling following of playlists, no longer requiring
-
2.5.118 Jul 2018 -
2.5.003 Jul 2018Release notes
Open source →- Because of recent changes in the handling of playlist related calls, the following methods are deprecated (a05db96):
SpotifyWebAPI::addUserPlaylistTracks()SpotifyWebAPI::createUserPlaylist()SpotifyWebAPI::deleteUserPlaylistTracks()SpotifyWebAPI::getUserPlaylist()SpotifyWebAPI::getUserPlaylistTracks()SpotifyWebAPI::reorderUserPlaylistTracks()SpotifyWebAPI::replaceUserPlaylistTracks()SpotifyWebAPI::updateUserPlaylist()SpotifyWebAPI::updateUserPlaylistImage()
- The following methods should be used instead, accepting the same arguments except for
$userId(a05db96):SpotifyWebAPI::addPlaylistTracks()SpotifyWebAPI::createPlaylist()SpotifyWebAPI::deletePlaylistTracks()SpotifyWebAPI::getPlaylist()SpotifyWebAPI::getPlaylistTracks()SpotifyWebAPI::reorderPlaylistTracks()SpotifyWebAPI::replacePlaylistTracks()SpotifyWebAPI::updatePlaylist()SpotifyWebAPI::updatePlaylistImage()
- Because of recent changes in the handling of playlist related calls, the following methods are deprecated (a05db96):
-
2.4.006 Jun 2018Release notes
Open source →- Authentication errors will now throw an
SpotifyWebAPIAuthExceptioninstead of the regularSpotifyWebAPIException. (4b068d0)
- Authentication errors will now throw an
-
2.3.005 Jun 2018 -
2.2.105 May 2018Release notes
Open source →- When running behind a proxy, the first set of proxy response headers are now stripped. (a9dfa55)
-
2.2.001 Mar 2018 -
2.1.102 Feb 2018Release notes
Open source →- Fixed an issue where a new refresh token wouldn't be properly updated in the
Sessionclass when a new one was returned from Spotify. (2bf18e0)
- Fixed an issue where a new refresh token wouldn't be properly updated in the
-
2.1.006 Dec 2017