NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #3114 most downloaded on Packagist
A PHP wrapper for Spotify's Web API.
Last release 2 months ago
25 Jul 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
96 releases · first in 2014
* Updated CA bundle.
Breaking The following, deprecated, methods have been removed (fdaa1bd):
Request::getReturnAssoc() (use Request::getReturnType() instead)Request::setReturnAssoc() (use Request::setReturnType(Request::RETURN_ASSOC) instead)SpotifyWebAPI::getReturnAssoc() (use SpotifyWebAPI::getReturnType() instead)SpotifyWebAPI::setReturnAssoc() (use SpotifyWebAPI::setReturnType(SpotifyWebAPI::RETURN_ASSOC) instead)$type parameter in SpotifyWebAPI::idToUri() and SpotifyWebAPI::uriToId() no longer has a default value. (fdcba71)$scope parameter in Session::requestCredentialsToken(). (582f983)6.x. (49829ac)One column per quarter.
Added the SpotifyWebAPI::updateUserPlaylistImage() method.
SpotifyWebAPI::updateUserPlaylistImage() method. (14a9631)Fixed an issue where some URI IDs wouldn't be properly cast to an array.
All methods accepting Album, Artist, Playlist, Track, or User IDs can now also accept Spotify URIs. (1a47fa1, e71daeb, 63dde40, 4bf29b1)
SpotifyWebAPI::getMySavedTracks example. (0eedf1c)PHP_CodeSniffer to 3.x. (60adb2c)Corrected the name of some Markdown example files.
Added Spotify Connect endpoints:
SpotifyWebAPI::changeMyDevice() (21dd887)SpotifyWebAPI::changeVolume() (e9cdd79)SpotifyWebAPI::getMyCurrentPlaybackInfo() (61f4cbd)SpotifyWebAPI::getMyCurrentTrack() (0f30a6b)SpotifyWebAPI::getMyDevices() (8b33f9d)SpotifyWebAPI::next() (9950c51)SpotifyWebAPI::pause() (b724c4a)SpotifyWebAPI::play() (825a632)SpotifyWebAPI::previous() (90a97e1)SpotifyWebAPI::repeat() (1feebfe)SpotifyWebAPI::seek() (0641a07)SpotifyWebAPI::shuffle() (d43268c)Added the SpotifyWebAPI::getMyRecentTracks() method.
SpotifyWebAPI::getMyRecentTracks() method. (4df889f)Added the SpotifyWebAPI::getMyRecentTracks() method.
SpotifyWebAPI::getMyRecentTracks() method. (fd8ea0d)The following methods can now also accept Spotify URIs:
* Bump for bad 1.6.0.
1.6.0.Deprecated the following methods and replaced them with (6aac5c6):
Request::getReturnAssoc() -> Request::getReturnType()Request::setReturnAssoc() -> Request::setReturnType(Request::RETURN_ASSOC)SpotifyWebAPI::getReturnAssoc() -> SpotifyWebAPI::getReturnType()SpotifyWebAPI::setReturnAssoc() -> SpotifyWebAPI::setReturnType(SpotifyWebAPI::RETURN_ASSOC)setReturnType() (6aac5c6):
Request::RETURN_ASSOCRequest::RETURN_OBJECTSpotifyWebAPI::RETURN_ASSOCSpotifyWebAPI::RETURN_OBJECTAdded a Request::getLastResponse() method.
Request::getLastResponse() method. (21b72b0)SpotifyWebAPI::getRequest method.
(bab8924)$tracks option for SpotifyWebAPI::deleteUserPlaylistTracks() now also supports objects. (ce230e7)SpotifyWebAPI::getAlbums() can handle objects for the $options argument properly. (42cf5d0)for-loops with array_map(). (cfc32b7)SpotifyWebAPI::reorderUserPlaylistTracks() docs. (b25dec4)SpotifyWebAPI::getLastResponse() docs. (bdd3ecc)Array indexes in SpotifyWebAPI::idToUri() are now always reset to prevent undefined offset errors.
SpotifyWebAPI::idToUri() are now always reset to prevent undefined offset errors. (ae8bd96)All requests will now be compressed using gzip.
Marked SpotifyWebAPI class properties as protected instead of private to allow extending.
SpotifyWebAPI class properties as protected instead of private to allow extending. (f52468a)Session class properties as protected instead of private to allow extending. (13e6d53)Request class properties as protected instead of private to allow extending. (be2b3f6)gh-pages branch into master. (7f638a1)Fixed a typo in the Request::parseBody() method added in 1.3.3.
Request::parseBody() method added in 1.3.3. (13d3b94)Moved the Request body parsing to its own method.
Improved the handling of seed_* parameters in SpotifyWebAPI::getRecommendations().
Fixed an issue where empty error responses weren't correctly handled.
The following methods have been added:
The following methods have been added:
The following methods have been added:
This release contains breaking changes, read through this list before updating.
market parameter to the following methods:
Session::setRefreshToken() has been removed, a refresh token is now passed directly to Session::refreshAccessToken() instead. (62e7383)Session::getExpires() has been removed and Session::getTokenExpiration() has been added instead, returning the exact token expiration time. (62e7383)Request::send() and SpotifyWebAPI::getLastResponse() are now parsed to an array. (9075bd3)SpotifyWebAPI::deleteUserPlaylistTracks(), position has been renamed to positions (note the extra "s"). This change was made to better align with the official Spotify docs. (09f2636)positions argument to SpotifyWebAPI::deleteUserPlaylistTracks() now also accept ints. (09f2636)SpotifyWebAPI::getArtistTopTracks() now accepts an array of options. (79543ac)Session::getAuthorizeUrl() no longer sends empty query strings. (c3e83e8)SpotifyWebAPI::deleteUserPlaylistTracks() from sending internal, leftover data. (09f2636)SpotifyWebAPI::followPlaylist() and SpotifyWebAPI::reorderUserPlaylistTracks(). (09f2636)SpotifyWebAPI::reorderUserPlaylistTracks() couldn't reorder the first track. (748592e)The following methods have been added:
SpotifyWebAPI::getUserFollowedArtists() (b7142fa)This release contains breaking changes, read through this list before updating.
SpotifyWebAPI::getLastResponse() has been introduced which allows for retrieval of the latest full response from the Spotify API. (9b54074)CA Root Certificates are now included with the library, allowing cURL to always find it.
Fixed an issue where SpotifyWebAPI::updateUserPlaylist() would fail without name set.
SpotifyWebAPI::updateUserPlaylist() would fail without name set. (39232f5)This release contains breaking changes, read through this list before updating.
SpotifyWebAPI::currentUserFollows() (6dbab19)SpotifyWebAPI::followArtistsOrUsers() (6dbab19)SpotifyWebAPI::followPlaylist() (12ff351)SpotifyWebAPI::getCategoriesList() (f09b4b8)SpotifyWebAPI::getCategory() (f09b4b8)SpotifyWebAPI::getCategoryPlaylists() (f09b4b8)SpotifyWebAPI::reorderPlaylistTracks() (0744904)SpotifyWebAPI::unfollowArtistsOrUsers() (6dbab19)SpotifyWebAPI::unfollowPlaylist() (12ff351)SpotifyWebAPI::userFollowsPlaylist() (4293919)$redirectUri argument in Session::__construct() is now optional. (8591ea8)The following methods to control the return type of all API methods were added:
fields option to SpotifyWebAPI::getUserPlaylist(). (c35e44d)This release contains breaking changes, read through this list before updating.
Request have been removed. Request now needs to be instantiated before using. (59207ac)limit option now uses the correct Spotify default value if nothing has been specified. (a291018)Request object in SpotifyWebAPI and Session constructors. (59207ac)SpotifyWebAPI::getArtistAlbums() now supports the album_type option. (1bd7014)Request::send() will only modify URLs when needed. (0241f3b)The following methods have been added:
This release contains lots of breaking changes, read through this list before updating.
deletePlaylistTrack() has been renamed to deletePlaylistTracks(). (e54d703)SpotifyWebAPIException is thrown. (d98bb8a)SpotifyWebAPI methods are no longer static, you'll need to instantiate the class now. (67c4e8b)The following methods have been added:
SpotifyWebAPI::getMySavedTracks() (30c865d)SpotifyWebAPI::myTracksContains() (3f99367)SpotifyWebAPI::addMyTracks() (20d80ef)SpotifyWebAPI::deleteMyTracks() (ee17c69)SpotifyWebAPI::updateUserPlaylist() (5d5874d)SpotifyWebAPI::deletePlaylistTrack() (3b17104)SpotifyWebAPI::deletePlaylistTrack() (3b5e23a)Request::send(). (d4df8c1)The following methods have been added:
SpotifyWebAPI::getArtistRelatedArtists() (5a3ea0e)offset and limit options for SpotifyWebAPI::getAlbumTracks() and SpotifyWebAPI::getArtistAlbums(). (21c98ec, 8b0c417)Session::getAuthorizeUrl() and added show_dialog option. (8fe7a6e, 57c36af)SpotifyWebAPI::getUserPlaylist() and SpotifyWebAPI::getUserPlaylistTracks(). (b8c87d7)* Initial release
Your coding agent can read these notes before it upgrades. Set up the MCP server →