# Spotify > - Access Token | Spotify for DevelopersSkip to contentDocumentationDocumentationProductsWeb API --- # Source: https://developer.spotify.com/documentation/web-api/concepts/access-token # Access Token - Access Token | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Access Token The *access token* is a string which contains the credentials and permissions that can be used to access a given resource (e.g artists, albums or tracks) or user's data (e.g your profile or your playlists). To use the *access token* you must include the following header in your API calls: Header ParameterValueAuthorizationValid access token following the format: `Bearer ` Note that the *access token* is valid for 1 hour (3600 seconds). After that time, the token expires and you need to request a new one. ## Examples The following example uses `cURL` to retrieve information about a track using the [Get a track]() endpoint: ` _10curl --request GET \_10 'https://api.spotify.com/v1/tracks/2TpxZ7JUBn3uw46aR7qd6V' \_10 --header "Authorization: Bearer NgCXRK...MzYjw" ` The following code implements the `getProfile()` function which performs the API call to the [Get Current User's Profile]() endpoint to retrieve the user profile related information: ` _11async function getProfile(accessToken) {_11 let accessToken = localStorage.getItem('access_token');_11_11 const response = await fetch('https://api.spotify.com/v1/me', {_11 headers: {_11 Authorization: 'Bearer ' + accessToken_11 }_11 });_11_11 const data = await response.json();_11} `## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/api-calls # Api Calls - API calls | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # API calls The Spotify Web API is a restful API with different endpoints which return JSON metadata about music artists, albums, and tracks, directly from the Spotify Data Catalogue. ## Base URL The base address of Web API is `https://api.spotify.com`. ## Authorization All requests to Spotify Web API require authorization. Make sure you have read the [authorization]() guide to understand the basics. To access private data through the Web API, such as user profiles and playlists, an application must get the user’s permission to access the data. ## Requests Data resources are accessed via standard HTTP requests in UTF-8 format to an API endpoint. The Web API uses the following HTTP verbs: MethodActionGETRetrieves resourcesPOSTCreates resourcesPUTChanges and/or replaces resources or collectionsDELETEDeletes resources ## Responses Web API normally returns JSON in the response body. Some endpoints (e.g Change Playlist Details) don't return JSON but the HTTP status code ### Response Status Codes Web API uses the following response status codes, as defined in the [RFC 2616]() and [RFC 6585](): Status CodeDescription200OK - The request has succeeded. The client can read the result of the request in the body and the headers of the response.201Created - The request has been fulfilled and resulted in a new resource being created.202Accepted - The request has been accepted for processing, but the processing has not been completed.204No Content - The request has succeeded but returns no message body.304Not Modified. See [Conditional requests]().400Bad Request - The request could not be understood by the server due to malformed syntax. The message body will contain more information; see [Response Schema]().401Unauthorized - The request requires user authentication or, if the request included authorization credentials, authorization has been refused for those credentials.403Forbidden - The server understood the request, but is refusing to fulfill it.404Not Found - The requested resource could not be found. This error can be due to a temporary or permanent condition.429Too Many Requests - [Rate limiting]() has been applied.500Internal Server Error. You should never receive this error because our clever coders catch them all ... but if you are unlucky enough to get one, please report it to us through a comment at the bottom of this page.502Bad Gateway - The server was acting as a gateway or proxy and received an invalid response from the upstream server.503Service Unavailable - The server is currently unable to handle the request due to a temporary condition which will be alleviated after some delay. You can choose to resend the request again. ### Response Error Web API uses two different formats to describe an error: - Authentication Error Object - Regular Error Object #### Authentication Error Object Whenever the application makes requests related to authentication or authorization to Web API, such as retrieving an access token or refreshing an access token, the error response follows [RFC 6749]() on the OAuth 2.0 Authorization Framework. KeyValue TypeValue DescriptionerrorstringA high level description of the error as specified in [RFC 6749 Section 5.2]().error_descriptionstringA more detailed description of the error as specified in [RFC 6749 Section 4.1.2.1](). Here is an example of a failing request to refresh an access token. ` _10$ curl -H "Authorization: Basic Yjc...cK" -d grant_type=refresh_token -d refresh_token=AQD...f0 "https://accounts.spotify.com/api/token"_10_10{_10 "error": "invalid_client",_10 "error_description": "Invalid client secret"_10} ` #### Regular Error Object Apart from the response code, unsuccessful responses return a JSON object containing the following information: KeyValue TypeValue DescriptionstatusintegerThe HTTP status code that is also returned in the response header. For further information, see [Response Status Codes]().messagestringA short description of the cause of the error. Here, for example is the error that occurs when trying to fetch information for a non-existent track: ` _10$ curl -i "https://api.spotify.com/v1/tracks/2KrxsD86ARO5beq7Q0Drfqa"_10_10HTTP/1.1 400 Bad Request_10{_10 "error": {_10 "status": 400,_10 "message": "invalid id"_10 }_10} ` ## Conditional Requests Most API responses contain appropriate cache-control headers set to assist in client-side caching: - If you have cached a response, do not request it again until the response has expired. - If the response contains an ETag, set the If-None-Match request header to the ETag value. - If the response has not changed, the Spotify service responds quickly with **304 Not Modified** status, meaning that your cached version is still good and your application should use it. ## Timestamps Timestamps are returned in [ISO 8601]() format as Coordinated Universal Time (UTC) with a zero offset: `YYYY-MM-DDTHH:MM:SSZ`. If the time is imprecise (for example, the date/time of an album release), an additional field indicates the precision; see for example, `release_date` in an Album Object. ## Pagination Some endpoints support a way of paging the dataset, taking an offset and limit as query parameters: ` _10$ curl_10https://api.spotify.com/v1/artists/1vCWHaC5f2uS3yhpwWbIA6/albums?album_type=SINGLE&offset=20&limit=10 ` In this example, in a list of 50 (`total`) singles by the specified artist : From the twentieth (`offset`) single, retrieve the next 10 (`limit`) singles. ## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/apps # Apps - Apps | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Apps The app provides, among others, the *Client ID* and *Client Secret* needed to implement any of the authorization flows. To do so, go to your [Dashboard]() and click on the *Create an App* button to open the following dialog box: Enter an *App Name* and *App Description* of your choice (they will be displayed to the user on the grant screen), put a tick in the Developer Terms of Service checkbox and finally click on *CREATE*. Your application is now registered, and you'll be redirected to the app overview page. The app overview page provides access to different elements: - App metrics, such as daily and monthly active users or number of users per country. Note that the metrics are initially empty. - App Status. By default, your app will be in *Development Mode* with limits on the number of users who can install it, and the number of API requests it can make. Note that you can request an extension of this quota if needed by clicking on the *Request Extension* link. - App settings. - Client ID, the unique identifier of your app. - Client Secret, the key you will use to authorize your Web API or SDK calls. Info: Always store the client secret key securely; never reveal it publicly! If you suspect that the secret key has been compromised, regenerate it immediately by clicking the *ROTATE* button on the app overview page. It is time to configure our app. Click on *Edit Settings* to view and update your app settings. The following dialog will show up: - Add a web domain or URL to the *Website* field. This will help users to obtain more information about your application. - In *Redirect URIs* enter one or more addresses that you want to allowlist with Spotify. This URI enables the Spotify authentication service to automatically invoke your app every time the user logs in (e.g. [http://127.0.0.1:8080]()) Note that on iOS apps, the redirect URI must follow these rules: All the characters are lowercase. - The prefix *must* be unique to your application (It cannot be a general prefix like http). - The prefix must only be used by your application for authenticating Spotify. If you already have a URL scheme handled by your application for other uses, do not reuse it. - Include a path after the first pair of forward slashes. For example: If your app name is *My Awesome App*, a good candidate for the redirect URI could be `my-awesome-app-login://callback`. - If you are developing an Android or iOS app, fill out the *Android Package* or *Bundle IDs* respectively. Once you have finished updating the app settings, click on *SAVE*. Finally, you can delete your app by clicking on the *DELETE* red button. ## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api # Spotify Web API Documentation Official documentation for the Spotify Web API, which enables apps to retrieve metadata (artists, albums, tracks), search content, manage playlists, control playback, and more. ## Overview The Spotify Web API is a RESTful API that provides access to music metadata and user information from Spotify. It allows developers to: - Search for artists, albums, and tracks - Get metadata about music content - Access user profile information and listening history - Create and modify playlists - Control playback on Spotify devices - Get audio analysis and features for tracks - Access user's saved tracks and playlists - Manage user library and preferences ## Key Concepts ### Authentication The Spotify Web API uses OAuth 2.0 for authentication. Several authorization flows are available: - **Authorization Code Flow** - For user-authenticated applications - **Client Credentials Flow** - For server-to-server authentication - **Implicit Flow** - For browser-based applications - **PKCE Flow** - For mobile and desktop applications ### Rate Limiting The Web API enforces rate limiting on a per-application basis. Rate limits are specified in terms of requests per second. If the rate limit is exceeded, the API will return a 429 (Too Many Requests) response. ### Quota Modes Quota modes determine how many minutes of streaming content a user can listen to in a given period. The API provides information about the user's current quota. ### Spotify URIs and IDs Each Spotify resource (artist, album, track, etc.) has a unique Spotify URI and ID. These identifiers are used to reference resources in the API. ## Getting Started To get started with the Spotify Web API: 1. Register your application at the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard) 2. Accept the developer agreement 3. Create an app and select "Web API" 4. Obtain your Client ID and Client Secret 5. Choose an authorization flow appropriate for your use case 6. Make your first API request ## Quick Links - Official Documentation: https://developer.spotify.com/documentation/web-api - Developer Dashboard: https://developer.spotify.com/dashboard - Community Forum: https://community.spotify.com/t5/Spotify-for-Developers/ct-p/spotify-developers - OpenAPI Schema: https://developer.spotify.com/_data/documentation/web-api/reference/open-api-schema.yml ## Common Use Cases ### Search Search for artists, albums, tracks, playlists, shows, and episodes. **Endpoint:** `GET /v1/search` ### User Data Get information about the authenticated user's profile and listening history. **Key Endpoints:** - `GET /v1/me` - Get current user's profile - `GET /v1/me/player` - Get user's currently playing track - `GET /v1/me/top/tracks` - Get user's top tracks - `GET /v1/me/top/artists` - Get user's top artists ### Playlists Create, modify, and manage playlists. **Key Endpoints:** - `GET /v1/playlists/{playlist_id}` - Get playlist details - `POST /v1/users/{user_id}/playlists` - Create playlist - `POST /v1/playlists/{playlist_id}/tracks` - Add tracks to playlist ### Playback Control Control playback on Spotify devices. **Key Endpoints:** - `PUT /v1/me/player/play` - Start playback - `PUT /v1/me/player/pause` - Pause playback - `POST /v1/me/player/next` - Skip to next track - `POST /v1/me/player/previous` - Skip to previous track ### Audio Analysis Get detailed audio features and analysis for tracks. **Key Endpoints:** - `GET /v1/audio-features/{track_id}` - Get audio features - `GET /v1/audio-analysis/{track_id}` - Get detailed audio analysis ## Documentation Structure This documentation is organized into the following sections: - **Concepts** - Foundational topics like authentication, rate limiting, and resource identifiers - **Tutorials** - Step-by-step guides for implementing common features - **How-Tos** - Practical guides for specific tasks - **API Reference** - Complete endpoint documentation with request/response examples ## Community & Support - **Community Forum:** https://community.spotify.com/t5/Spotify-for-Developers/ct-p/spotify-developers - **Documentation:** https://developer.spotify.com/documentation - **GitHub Examples:** https://github.com/spotify/web-api-examples - **Status Page:** https://developer.spotify.com/status ## Libraries & SDKs Several third-party libraries provide convenient interfaces to the Spotify Web API: - **Spotipy** (Python) - Lightweight Python library with full Web API access - **spotify-web-api-ts-sdk** (TypeScript) - TypeScript SDK with types - **SpotifyAPI** (Swift) - Swift library for iOS development - **Web Playback SDK** - JavaScript SDK for browser-based playback control ## License & Terms Use of the Spotify Web API is subject to the [Spotify Developer Terms of Service](https://developer.spotify.com/terms). --- # Source: https://developer.spotify.com/documentation/web-api/concepts/playlists # Playlists - Playlists | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Playlists Playlists are containers for tracks and episodes. Spotify’s users have already created over 1.5 billion of them. By creating a playlist, a Spotify user can specify a subset of tracks and episodes; and the order in which to play them. Through context menus and through support for drag-and-drop actions, the Spotify music players provide users with various controls for manually working with playlists. Playlists can be shared with, and followed by, other users, and they can be made available offline and used to seed other Spotify services, like radio. ## Public, Private, and Collaborative Status When [creating]() or [updating]() a playlist through the Spotify Web API, setting the attribute “public” to true will publish the playlist on the user’s profile, which means it will appear under “public playlists”. This will also make the playlist visible in search results. A playlist created through the WebAPI will have the “public” attribute set to true by default and setting it to false does the opposite, it won’t be displayed on the user’s profile and won’t be visible through search results Requests to these endpoints require different scopes depending on the status of this attribute, `playlist-modify-public` is required when setting it to true and `playlist-modify-private` when setting it to false. When [creating]() a new playlist, the default value of the public attribute is true, which means unless this attribute is explicitly set to false, creating a playlist requires the `playlist-modify-public` scope. Note that the public attribute does not refer to access control, modifying access is currently not possible through the WebAPI, so anyone with the link to the playlist can access it unless it’s made private through for instance the desktop client. A playlist can also be made collaborative through the WebAPI, by setting the “collaborative” attribute to true. This means that anyone with the link can add to or remove a track from it. When [creating]() a new playlist, the default value of the collaborative attribute is false Note that this is slightly different from adding/removing collaborators, which is currently not possible through the WebAPI. You can read more about adding/removing collaborators [here](). Furthermore, a playlist cannot have both the “collaborative” attribute and the “public” attribute set to true at the same time, so in order to set one of them to true the other must be set to false. Basically, a playlist cannot be both collaborative and published at the same time. ## Reading a Playlist To read a playlist, we first need to find it, and for that we need its Spotify ID. The Get a List of a User’s Playlists gives us an easy way to get basic details about a user’s playlists, including their IDs. This is, the playlists the user owns and the playlists the user is following, excluding collaborative playlists owned by other users. The set of playlists will be determined by the scopes granted to the application: - Owned and followed non-collaborative public playlists will be returned - Owned and followed non-collaborative private playlists will only be returned when the scope `playlist-read-private` has been granted - Owned and followed collaborative playlists will only be returned when the scope `playlist-read-collaborative` has been granted Once we have a list of playlists we can retrieve the details of a specific playlist using the Web API’s Get a Playlist endpoint, and a list of its items using Get a Playlist’s Items. This last endpoint returns, in addition to an array of track and episode objects (depending on the `additional_types` parameter), information about who added the item and when it was added. (The items themselves are wrapped in a paging object to make it easy to retrieve very large playlists when necessary.) ## Local Files Spotify allows you to play your own collection of music files from within the Spotify client. These tracks appear alongside the music available on Spotify and can be included in users’ playlists, even if that particular track is not available on Spotify itself. For more information on local files, please read our [support article](). The Web API can retrieve the contents of playlists, including information on any local files that have been added, via the Playlist endpoints. ### Identifying Local Files Requesting the contents of a playlist returns a set of track objects along with extra information about that track’s instance in the playlist. For example: ` _15{_15 "added_at": "2015-01-25T07:51:45Z",_15 "added_by": {_15 "external_urls": {_15 "spotify": "http://open.spotify.com/user/exampleuser"_15 },_15 "href": "https://api.spotify.com/v1/users/exampleuser",_15 "id": "exampleuser",_15 "type": "user",_15 "uri": "spotify:user:exampleuser"_15},_15"is_local": true,_15"track": {_15 [Spotify Track Object]_15} ` The key part here is the new property `"is_local"` which should be used to determine whether the track is a local file. ### The Track Object for a Local File The structure of a Spotify track object for a local file is identical to that of a regular Spotify track, with some notable differences in available data: - A number of fields will always be empty, zero, false or null - Some fields are populated from available local file information - The track URI has a special formatting ` _38 "track": {_38 "album": {_38 "album_type": null,_38 "available_markets": [],_38 "external_urls": {},_38 "href": null,_38 "id": null,_38 "images": [],_38 "name": "Donkey Kong Country: Tropical Freeze",_38 "type": "album",_38 "uri": null_38 },_38 "artists": [_38 {_38 "external_urls": {},_38 "href": null,_38 "id": null,_38 "name": "David Wise",_38 "type": "artist",_38 "uri": null_38 }_38 ],_38 "available_markets": [],_38 "disc_number": 0,_38 "duration_ms": 127000,_38 "explicit": false,_38 "external_ids": {},_38 "external_urls": {},_38 "href": null,_38 "id": null,_38 "name": "Snomads Island",_38 "popularity": 0,_38 "preview_url": null,_38 "track_number": 0,_38 "type": "track",_38 "uri": "spotify:local:David+Wise:Donkey+Kong+Country%3A+Tropical+Freeze:Snomads+Island:127"_38 }_38} ` The local file information is read by the client software when the file was added to the playlist. Although as much information as possible is taken from the local file, some may be missing so this information is not guaranteed to exist for all local files. ### Understanding the Local File URI The local file URI is constructed from information extracted from the local file when it was added to the playlist as follows: `spotify:local:{artist}:{album_title}:{track_title}:{duration_in_seconds}` All available information is also used to populate the object album name, artist name, track name and track duration properties, so parsing this directly should not be necessary. ### How Should I Render Local Files to the User? Whether you display these files to your app’s users is entirely dependent on the functionality that you require in your app. Initially, you could “grey out” the tracks or hide them altogether. If you have access to the filesystem, you could use the information to match the track to the file and replicate the Spotify clients’ behaviour. Or perhaps use the title and artist information to perform a search in the Spotify catalogue. ### Limitations It is not currently possible to add local files to playlists using the Web API, but they can be [Reordered]() or [Removed](). The latter should be done by specifying the `index` and `snapshot_id`, and NOT the URI of the track. ## Folders Folders are not returned through the Web API, nor can be created using it. ## Version Control and Snapshots The Web API provides several endpoints that allow playlists to be modified. These include [Add Items to a Playlist](), [Remove Items from a Playlist](), [Replace a Playlist’s Items]() and [Reorder a Playlist’s Items](). Every change to a playlist is saved in its version history. This makes possible features such as offline availability and collaborative editing, and [restoring an accidentally removed playlist](). Every time you add, remove, or move a track, your modification is applied on top of all previous modifications, causing the playlist to enter a new state known as a **snapshot**. If you need it, the Spotify Web API allows you to leverage snapshots to handle concurrent changes. Web API playlist endpoints like [Create a Playlist]() and [Get a Playlist](), return a **snapshot_id** in the response body. This can be used later to identify the specific playlist version to target for changes when, for example, [Removing Items from a Playlist](). Concurrent changes are then automatically merged into the latest playlist version. ## Following and Unfollowing a Playlist Playlists can be followed or unfollowed programmatically through the [Follow a Playlist]() and [Unfollow a Playlist]() endpoints. Any playlist can be followed — public, private, and collaborative — provided you know the owner’s and the playlist’s Spotify IDs. When a user follows a playlist, the playlist’s owner will receive a notification in their Spotify client. When a track is added to a playlist, its followers will receive a notification in their Spotify client. We have no endpoint for deleting a playlist in the Web API; the notion of deleting a playlist is not relevant within the Spotify’s playlist system. Even if you are the playlist’s owner and you choose to manually remove it from your own list of playlists, you are simply unfollowing it. Although this behavior may sound strange, it means that other users who are already following the playlist can keep enjoying it. [Manually restoring a deleted playlist]() through the Spotify Accounts Service is the same thing as following one of your own playlists that you have previously unfollowed. ## Using Playlist Images Every playlist has an associated set of images which can be retrieved through Web API endpoints like [Get a Playlist](). In most cases there will be one image in a variety of sizes and the image will be a mosaic created from the album covers for the first few tracks: The images array that’s returned can vary depending on how many tracks are in the playlist, and if the playlist has been manually “annotated”. The `images` array can contain: - Nothing, if the playlist has no tracks and is empty, - An album cover of size 640×640, if the playlist contains 1 to 3 tracks or has tracks from less than 4 different albums, - Three mosaic images of size 640×640, 300×300, and 60×60, if the playlist contains tracks from 4 or more albums, - A single custom image ([example]()) in various sizes, if the playlist image has been set manually — for example, for some curated playlists. The JSON returned by the Web API endpoints includes both the image dimensions (largest first) and a *temporary* link to the images: ` _17..._17_17"images" : [ {_17"height" : 640,_17"url" : "https://mosaic.scdn.co/640/e337f3661f68bc4d96a554de0ad7988d65edb25a134cd5ccaef9d411eba33df9542db9ba731aaf98ec04f9acee17a7576f939eb5aa317d20c6322494c4b4399d9b7c6f61b6a6ee70c616bc1a985c7ab8",_17"width" : 640_17}, {_17"height" : 300,_17"url" : "https://mosaic.scdn.co/300/e337f3661f68bc4d96a554de0ad7988d65edb25a134cd5ccaef9d411eba33df9542db9ba731aaf98ec04f9acee17a7576f939eb5aa317d20c6322494c4b4399d9b7c6f61b6a6ee70c616bc1a985c7ab8",_17"width" : 300_17}, {_17"height" : 60,_17"url" : "https://mosaic.scdn.co/60/e337f3661f68bc4d96a554de0ad7988d65edb25a134cd5ccaef9d411eba33df9542db9ba731aaf98ec04f9acee17a7576f939eb5aa317d20c6322494c4b4399d9b7c6f61b6a6ee70c616bc1a985c7ab8",_17"width" : 60_17} ],_17_17... ` Info:Be aware that the links will expire in less than one day. The use of album artwork in your applications is covered by our [Developer Terms of Service](). In particular you should be aware that: - You must display the album artwork in the form that we provide it (although you can resize it), - You should not store album artwork except when it is strictly necessary to operate your application, and - You must provide a link close to the cover art back to the full length track on Spotify. We provide [design resources]() to help you with this. ## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/quota-modes # Quota Modes - Quota modes | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Quota modes The quota mode refers to the mode in which an app can be: **development mode** or **extended quota mode**. You can check the current mode of your app by checking the *App Status* value in the *App Settings*: ## Development mode Newly-created apps begin in **development mode**. This mode is perfect for apps that are under construction and apps that have been built for accessing or managing data in a single Spotify account. Up to 25 authenticated Spotify users can use an app that is in development mode — so you can share your app with beta testers, friends, or with fellow developers who are working on the app. Each Spotify user who installs your app will need to be added to your app's allowlist before they can use it. ### Adding a user to your app's allowlist Allow another user to use your development mode app by following these steps: - Log in to the [Developer Dashboard]() - Tap on the name of your app - Tap on the *Settings* button - Tap on the *Users Management* tab - Tap on the *Add new user* button and enter the name and Spotify email address of the user that you want to enable to use your app - Invite the new user to install and use your app Users may be able to log into a development mode app without having been allowlisted by the developer. However, API requests with an access token associated to that user and app will receive a 403 status code error ## Extended quota mode Extended quota mode is for Spotify apps that are ready for a wider audience. Apps in this category can be installed by an unlimited number of users and the allowlist in development mode no longer applies. Extended quota mode apps also have access to a higher [rate limit]() than development mode apps do. ### Quota Extension Request for New Potential Partners Please note that as of May 15th 2025, Spotify only accepts applications only from organizations (not individuals). For more information on this update, read [here](). Application must be sent through a company email **by using [this form]()**. Check out the implementation requirements below to make sure your company is compatible before submitting your application. Implementation requirements: - Established Business Entity (legally registered business or organisation) - Operating an active, and Launched Service - Maintaining a minimum of active users (at least 250k MAUs) - Being available in key Spotify markets - Commercial Viability - Adherence to Terms ### Moving from development mode into extended quota mode If your Partner Application form is approved, you can ask Spotify to move your app from development mode into extended quota mode. Spotify's app review team will take a look at your app and evaluate it for compliance with our [Developer Policy](). - Log in to the [Developer Dashboard]() - Tap on the name of your app - Tap on the *Settings* button - Tap on the *Quota extension Request* tab - Tell us about your app by filling out the provided questionnaire (4 steps) - Tap Submit When you have successfully submitted your app for review you should see the word 'Sent' in blue on your app detail page. The app review team will review the information that you have provided, test out your app and send you feedback by email, to the email address associated with your Spotify account. This review process can take up to six weeks. ## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/rate-limits # Rate Limits - Rate Limits | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Rate Limits If your app makes a lot of Web API requests in a short period of time then it may receive a 429 error response from Spotify. This indicates that your app has reached our Web API *rate limit*. The Web API has rate limits in order to keep our API reliable and to help third-party developers use the API in a responsible way. ## Spotify's rate limit Spotify's API rate limit is calculated based on the number of calls that your app makes to Spotify in a rolling 30 second window. If your app exceeds the rate limit for your app then you'll begin to see 429 error responses from Spotify's Web API, and you may hear from users about unexpected behavior that they have noticed while using your app. The limit varies depending on whether your app is in development mode or extended quota mode. In the chart above, the app will receive an error response for the periods of time where the 30 second window exceeds the example rate limit in red. ### Exceptions Be aware that Spotify does sometimes implement other limits outside of the API-wide rate limit. A few API endpoints, like the playlist image upload endpoint, have a custom rate limit that may differ from your app-wide rate limit. See the body of your API response from Spotify for more information about the error that you have received. ## Building your app with rate limits in mind Every app is different and you'll want to plan your app architecture and user experience with rate limits in mind. Here are a few techniques that can help you design an app that works well with Spotify's Web API rate limits: ### Apply for extended quota mode If your app is meant to be used by many Spotify users at the same time then you should apply for extended quota mode. Apps in this mode have a rate limit that is much higher than apps in development mode, the default mode for new apps. You can apply for a quota extension by opening your app detail page in the Developer Dashboard and tapping on the Request Extension link. ### Develop a backoff-retry strategy When your app has been rate limited it will receive a 429 error response from Spotify. Your app can use this information as a cue to slow down the number of API requests that it makes to the Web API. The header of the 429 response will normally include a `Retry-After` header with a value in seconds. Consider waiting for the number of seconds specified in `Retry-After` before your app calls the Web API again. ### Use batch APIs to your advantage Spotify has some APIs — like the Get Multiple Albums endpoint — that allow you to fetch a batch of data in one API request. You can reduce your API requests by calling the batch APIs when you know that you will need data from a set of objects. ### Use the snapshot_id Playlist APIs expose a `snapshot_id` that corresponds to the version of the playlist that you are working with. Downloading a playlist can be expensive so some apps may want to store and refer to the `snapshot_id` to avoid refreshing an entire playlist that has not changed. You can learn more about `snapshot_id` in our Working with Playlists guide. ### Study your app's request patterns When you load your app's detail page in the [Developer Dashboard]() you'll find a graph that can tell you about your API request volume over time. Understanding anomalies in API requests — and the reasons for them — can help you find ways to avoid hitting the rate limit. For example, if you notice that your website receives a surge in traffic after you send out your weekly newsletter then you might decide that you want to stagger the delivery of those emails over the course of a day. For more advanced insights into your app's request patterns, consider tracking your app's API calls to Spotify using your own logging tools. ### Consider 'lazy loading' features Users often don't want to use every feature that is available to them on a web page, or in the view of a mobile app. You can avoid making API requests by making API calls conditional on user interactions, like tapping on a 'learn more' link, or scrolling to a defined region of a web page. ## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/redirect_uri # Redirect Uri - Redirect URIs | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Redirect URIs Error:Beginning on the 9th of April 2025 we will enforce the subsequent validations to all newly created apps. **We expect all clients** to migrate to the new redirect URI validation by **November 2025**. To know more please refer to the Spotify Developer Blog. When you create an app, you need to specify a redirect URI. This is the URI to which Spotify redirects the user after they have granted or denied permission to your app. The redirect URI is required for the authorization code flow and implicit grant flow. The definition of the redirect URI must exactly match the redirect URI you provide when you create your app. The only exception is for loopback IP literals, which can dynamically be assigned ports. ## Requirements Since we at Spotify, take security very seriously you must follow these requirements when defining your redirect URI: - Use HTTPS for your redirect URI, unless you are using a loopback address, when HTTP is permitted. - If you are using a loopback address, use the explicit IPv4 or IPv6, like `http://127.0.0.1:PORT` or `http://[::1]:PORT` as your redirect URI. - `localhost` is not allowed as redirect URI. ### Loopback addresses and port numbers When using a loopback IP literal, you might not know the port number used in advance if it can be assigned dynamically. If you don't know the port number in advance, register your redirect URI with a loopback IP literal, but without any port number. You can add the dynamically assigned port number to the redirect URI in the authorization request. Please note that this is only supported for loopback IP literals, and not for other redirect URIs. This is on-par with the [IETF recommendations](). ## Examples Here are some examples of redirect URIs: ` _10 https://example.com/callback_10 http://127.0.0.1:8000/callback_10 http://[::1]:8000/callback `## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/scopes # Scopes - Scopes | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Scopes Scopes provide Spotify users using third-party apps the confidence that only the information they choose to share will be shared, and nothing more. ## Pre-requisites Scopes are needed when implementing some of the authorization grant types. Make sure you have read the [Authorization]() guide to understand the basics. ## List of Scopes - Images [ugc-image-upload]() - Spotify Connect [user-read-playback-state]() - [user-modify-playback-state]() - [user-read-currently-playing]() - Playback [app-remote-control]() - [streaming]() - Playlists [playlist-read-private]() - [playlist-read-collaborative]() - [playlist-modify-private]() - [playlist-modify-public]() - Follow [user-follow-modify]() - [user-follow-read]() - Listening History [user-read-playback-position]() - [user-top-read]() - [user-read-recently-played]() - Library [user-library-modify]() - [user-library-read]() - Users [user-read-email]() - [user-read-private]() - [user-personalized]() - Open Access [user-soa-link]() - [user-soa-unlink]() - [soa-manage-entitlements]() - [soa-manage-partner]() - [soa-create-partner]() ### `ugc-image-upload` **Description**Write access to user-provided images.**Visible to users**Upload images to Spotify on your behalf. **Endpoints that require the `ugc-image-upload` scope** - [Add Custom Playlist Cover Image]() ### `user-read-playback-state` **Description**Read access to a user’s player state.**Visible to users**Read your currently playing content and Spotify Connect devices information. **Endpoints that require the `user-read-playback-state` scope** - [Get a User's Available Devices]() - [Get Information About The User's Current Playback]() - [Get the User's Currently Playing Track]() ### `user-modify-playback-state` **Description**Write access to a user’s playback state**Visible to users**Control playback on your Spotify clients and Spotify Connect devices. **Endpoints that require the `user-modify-playback-state` scope** - [Pause a User's Playback]() - [Seek To Position In Currently Playing Track]() - [Set Repeat Mode On User’s Playback]() - [Set Volume For User's Playback]() - [Skip User’s Playback To Next Track]() - [Skip User’s Playback To Previous Track]() - [Start/Resume a User's Playback]() - [Toggle Shuffle For User’s Playback]() - [Transfer a User's Playback]() - [Add An Item To The End Of User's Current Playback Queue]() ### `user-read-currently-playing` **Description**Read access to a user’s currently playing content.**Visible to users**Read your currently playing content. **Endpoints that require the `user-read-currently-playing` scope** - [Get the User's Currently Playing Track]() - [Get the User's Queue]() ### `app-remote-control` **Description**Remote control playback of Spotify. This scope is currently available to Spotify iOS and Android SDKs.**Visible to users**Communicate with the Spotify app on your device. **Endpoints that require the `app-remote-control` scope** - [iOS SDK]() - [Android SDK]() ### `streaming` **Description**Control playback of a Spotify track. This scope is currently available to the Web Playback SDK. The user must have a Spotify Premium account.**Visible to users**Play content and control playback on your other devices. **Endpoints that require the `streaming` scope** - [Web Playback SDK]() ### `playlist-read-private` **Description**Read access to user's private playlists.**Visible to users**Access your private playlists. **Endpoints that require the `playlist-read-private` scope** - [Check if Users Follow a Playlist]() - [Get a List of Current User's Playlists]() - [Get a List of a User's Playlists]() ### `playlist-read-collaborative` **Description**Include collaborative playlists when requesting a user's playlists.**Visible to users**Access your collaborative playlists. **Endpoints that require the `playlist-read-collaborative` scope** - [Get a List of Current User's Playlists]() - [Get a List of a User's Playlists]() ### `playlist-modify-private` **Description**Write access to a user's private playlists.**Visible to users**Manage your private playlists. **Endpoints that require the `playlist-modify-private` scope** - [Follow a Playlist]() - [Unfollow a Playlist]() - [Add Items to a Playlist]() - [Change a Playlist's Details]() - [Create a Playlist]() - [Remove Items from a Playlist]() - [Reorder a Playlist's Items]() - [Replace a Playlist's Items]() - [Upload a Custom Playlist Cover Image]() ### playlist-modify-public **Description**Write access to a user's public playlists.**Visible to users**Manage your public playlists. **Endpoints that require the `playlist-modify-public` scope** - [Follow a Playlist]() - [Unfollow a Playlist]() - [Add Items to a Playlist]() - [Change a Playlist's Details]() - [Create a Playlist]() - [Remove Items from a Playlist]() - [Reorder a Playlist's Items]() - [Replace a Playlist's Items]() - [Upload a Custom Playlist Cover Image]() ### `user-follow-modify` **Description**Write/delete access to the list of artists and other users that the user follows.**Visible to users**Manage who you are following. **Endpoints that require the `user-follow-modify` scope** - [Follow Artists or Users]() - [Unfollow Artists or Users]() ### `user-follow-read` **Description**Read access to the list of artists and other users that the user follows.**Visible to users**Access your followers and who you are following. **Endpoints that require the `user-follow-read` scope** - [Check if Current User Follows Artists or Users]() - [Get User's Followed Artists]() ### `user-read-playback-position` **Description**Read access to a user’s playback position in a content.**Visible to users**Read your position in content you have played. **Endpoints that require the `user-read-playback-position` scope** - [Get an Episodes]() - [Get Several Episodes]() - [Get a Show]() - [Get Several Shows]() - [Get a Show's Episodes]() ### `user-top-read` **Description**Read access to a user's top artists and tracks.**Visible to users**Read your top artists and content. **Endpoints that require the `user-top-read` scope** - [Get a User's Top Artists and Tracks]() ### `user-read-recently-played` **Description**Read access to a user’s recently played tracks.**Visible to users**Access your recently played items. **Endpoints that require the `user-read-recently-played` scope** - [Get Current User's Recently Played Tracks]() ### `user-library-modify` **Description**Write/delete access to a user's "Your Music" library.**Visible to users**Manage your saved content. **Endpoints that require the `user-library-modify` scope** - [Remove Albums for Current User]() - [Remove User's Saved Tracks]() - [Remove User's Saved Episodes]() - [Save Albums for Current User]() - [Save Tracks for User]() - [Save Episodes for User]() ### `user-library-read` **Description**Read access to a user's library.**Visible to users**Access your saved content. **Endpoints that require the `user-library-read` scope** - [Check User's Saved Albums]() - [Check User's Saved Tracks]() - [Get Current User's Saved Albums]() - [Get a User's Saved Tracks]() - [Check User's Saved Episodes]() - [Get User's Saved Episodes]() ### `user-read-email` **Description**Read access to user’s email address.**Visible to users**Get your real email address. **Endpoints that require the `user-read-email` scope** - [Get Current User's Profile]() ### `user-read-private` **Description**Read access to user’s subscription details (type of user account).**Visible to users**Access your subscription details. **Endpoints that require the `user-read-private` scope** - [Search for an Item]() - [Get Current User's Profile]() ### `user-personalized` **Description**Get personalized content for the user. ### `user-soa-link` **Description**Link a partner user account to a Spotify user account **Endpoints that require the `user-soa-link` scope** - [Register new user]() ### `user-soa-unlink` **Description**Unlink a partner user account from a Spotify account **Endpoints that require the `user-soa-unlink` scope** - [Unlink user]() ### `soa-manage-entitlements` **Description**Modify entitlements for linked users **Endpoints that require the `soa-manage-entitlements` scope** - [Add user entitlements]() - [Get user entitlements]() - [Removes user entitlements]() - [Replace user entitlements]() ### `soa-manage-partner` **Description**Update partner information **Endpoints that require the `soa-manage-partner` scope** - [Set partner logo]() ### `soa-create-partner` **Description**Create new partners, platform partners only **Endpoints that require the `soa-create-partner` scope** - [Create new partner]() ## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids # Spotify Uris Ids - Spotify URIs and IDs | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Spotify URIs and IDs In requests to the Web API and responses from it, you will frequently encounter the following parameters: Spotify URIThe resource identifier of, for example, an artist, album or track. This can be entered in the search box in a Spotify Desktop Client, to navigate to that resource. To find a Spotify URI, right-click (on Windows) or Ctrl-Click (on a Mac) on the artist, album or track name. Example: `spotify:track:6rqhFgbbKwnb9MLmUQDhG6`Spotify IDThe base-62 identifier found at the end of the Spotify URI (see above) for an artist, track, album, playlist, etc. Unlike a Spotify URI, a Spotify ID does not clearly identify the type of resource; that information is provided elsewhere in the call. Example: `6rqhFgbbKwnb9MLmUQDhG6`Spotify category IDThe unique string identifying the Spotify category. Example: `party`Spotify user IDThe unique string identifying the Spotify user that you can find at the end of the Spotify URI for the user. The ID of the current user can be obtained via the [Get Current User's Profile endpoint](). Example: `wizzler`Spotify URLWhen visited, if the user has the Spotify client installed, it will launch the Client and navigate to the requested resource. Which client is determined by the user's device and account settings at [play.spotify.com](). Example: `http://open.spotify.com/track/6rqhFgbbKwnb9MLmUQDhG6`## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB --- # Source: https://developer.spotify.com/documentation/web-api/concepts/track-relinking # Track Relinking - Track Relinking | Spotify for Developers[Skip to content]()[]()DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() 0- DocumentationDocumentationProducts[Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() - [Open Access]() Guidelines- [Design]() - [Accessibility]() - [Legal]() - [Community]() Web API - [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist Web API- [Overview]() - [Getting started]() - ConceptsConceptsConcepts[Access Token]() - [API calls]() - [Apps]() - [Authorization]() - [Redirect URIs]() - [Playlists]() - [Quota modes]() - [Rate limits]() - [Scopes]() - [Spotify URIs and IDs]() - [Track Relinking]() - TutorialsTutorialsTutorials[Authorization code]() - [Authorization code PKCE]() - [Client credentials]() - [Implicit grant [Deprecated]]() - [Refreshing tokens]() - [Migration: Implicit grant to Authorization code]() - [Migration: Insecure redirect URI]() - How-TosHow-TosHow-Tos[Display your Spotify profile data in a web app]() Reference- AlbumsAlbumsAlbumsGet Album - Get Several Albums - Get Album Tracks - Get User's Saved Albums - Save Albums for Current User - Remove Users' Saved Albums - Check User's Saved Albums - Get New Releases - ArtistsArtistsArtistsGet Artist - Get Several Artists - Get Artist's Albums - Get Artist's Top Tracks - Get Artist's Related Artists - AudiobooksAudiobooksAudiobooksGet an Audiobook - Get Several Audiobooks - Get Audiobook Chapters - Get User's Saved Audiobooks - Save Audiobooks for Current User - Remove User's Saved Audiobooks - Check User's Saved Audiobooks - CategoriesCategoriesCategoriesGet Several Browse Categories - Get Single Browse Category - ChaptersChaptersChaptersGet a Chapter - Get Several Chapters - EpisodesEpisodesEpisodesGet Episode - Get Several Episodes - Get User's Saved Episodes - Save Episodes for Current User - Remove User's Saved Episodes - Check User's Saved Episodes - GenresGenresGenresGet Available Genre Seeds - MarketsMarketsMarketsGet Available Markets - PlayerPlayerPlayerGet Playback State - Transfer Playback - Get Available Devices - Get Currently Playing Track - Start/Resume Playback - Pause Playback - Skip To Next - Skip To Previous - Seek To Position - Set Repeat Mode - Set Playback Volume - Toggle Playback Shuffle - Get Recently Played Tracks - Get the User's Queue - Add Item to Playback Queue - PlaylistsPlaylistsPlaylistsGet Playlist - Change Playlist Details - Get Playlist Items - Update Playlist Items - Add Items to Playlist - Remove Playlist Items - Get Current User's Playlists - Get User's Playlists - Create Playlist - Get Featured Playlists - Get Category's Playlists - Get Playlist Cover Image - Add Custom Playlist Cover Image - SearchSearchSearchSearch for Item - ShowsShowsShowsGet Show - Get Several Shows - Get Show Episodes - Get User's Saved Shows - Save Shows for Current User - Remove User's Saved Shows - Check User's Saved Shows - TracksTracksTracksGet Track - Get Several Tracks - Get User's Saved Tracks - Save Tracks for Current User - Remove User's Saved Tracks - Check User's Saved Tracks - Get Several Tracks' Audio Features - Get Track's Audio Features - Get Track's Audio Analysis - Get Recommendations - UsersUsersUsersGet Current User's Profile - Get User's Top Items - Get User's Profile - Follow Playlist - Unfollow Playlist - Get Followed Artists - Follow Artists or Users - Unfollow Artists or Users - Check If User Follows Artists or Users - Check if Current User Follows Playlist # Track Relinking The availability of a track depends on the country registered in the user’s Spotify profile settings. Often Spotify has several instances of a track in its catalogue, each available in a different set of markets. This commonly happens when the track the album is on has been released multiple times under different licenses in different markets. These tracks are linked together so that when a user tries to play a track that isn’t available in their own market, the Spotify mobile, desktop, and web players try to play another instance of the track that is available in the user’s market. ## Track Relinking in the Web API If your application supplies a `market` parameter in its call to the following track endpoints, the Web API will attempt to return information about alternative tracks that are available in the specified market: - [Get a Track]() - [Get Several Tracks]() - [Get an Album]() - [Get Several Albums]() - [Get an Album’s Tracks]() - [Get a Playlist’s Tracks]() - [Get a User’s Saved Tracks]() When using the `market` query parameter, the response will contain another instance of the tracks only if the original track is unavailable and other instances of the track are available. For example, the track “Heaven and Hell” by William Onyeabor is not available in the United States (market code `US`), as shown by the request to retrieve the track’s metadata: ` _10curl -X GET "https://api.spotify.com/v1/tracks/6kLCHFM39wkFjOuyPGLGeQ"` ` ` _10{_10 ..._10 available_markets: [ "AT", "AU", "BE", "DK", "ES", "FI", _10 "FR", "HU", "IT", "PL", "PT", "SE", _10 "SK", "TR", "TW" ],_10 ..._10 uri: "spotify:track:6kLCHFM39wkFjOuyPGLGeQ"_10} ` If a `market` query parameter specifying the US market is appended to the call, the Web API recognizes that the specified track is unplayable and instead returns information about a track that is playable in the specified market. In addition it returns information about the original track: ` _10curl -X GET "https://api.spotify.com/v1/tracks/6kLCHFM39wkFjOuyPGLGeQ?market=US"` ` ` _15{_15 ..._15 is_playable: true_15 linked_from: {_15 external_urls: {_15 spotify: "https://open.spotify.com/track/6kLCHFM39wkFjOuyPGLGeQ"_15 },_15 href: "https://api.spotify.com/v1/tracks/6kLCHFM39wkFjOuyPGLGeQ",_15 id: "6kLCHFM39wkFjOuyPGLGeQ",_15 type: "track",_15 uri: "spotify:track:6kLCHFM39wkFjOuyPGLGeQ"_15 },_15 ..._15 uri: "spotify:track:6ozxplTAjWO0BlUxN8ia0A"_15} ` There are a number of important differences between the response you get with and without the `market` query parameter. When the `market` parameter is supplied: - The `available_markets` property in the [Track]() object is replaced by the `is_playable` property. (Since the request contains the `market` query parameter, there’s no need for the `available_markets` property to determine if the user can play the track or not.) - If the track has been relinked, the response contains a `linked_from` object containing information about the original track. In the example above, the track that was requested had the Spotify URI `spotify:track:6kLCHFM39wkFjOuyPGLGeQ`. Since it’s been relinked, this original [track URI]() can be found in the `linked_from` object. The parent track object now contains metadata about the relinked track with URI `spotify:track:6ozxplTAjWO0BlUxN8ia0A`. - If the `is_playable` property is `false`, the original track is not available in the given market, and Spotify did not have any tracks to relink it with. The track response will still contain metadata for the original track, and a `restrictions` object containing the reason why the track is not available: `"restrictions" : {"reason" : "market"}`. - If the `is_playable` property is `true`, the `linked_from` object may or may not exist depending on whether the original track was available in the market. If the `linked_from` object exists, the original track has been relinked. Info:IMPORTANT: If you plan to do further operations on tracks (for example, removing the track from a playlist or saving it to “Your Music”), it is important that you operate on the **original** track id found in the `linked_from` object. Using the ID of the linked track returned at the root level will likely return an error or other unexpected result. Valid `market` query parameter values are [ISO 3166-1 alpha-2 codes](), as well as `from_token`. If `from_token` is used, an access token tied to a user must be supplied; `from_token` is the same thing as setting the market parameter to the [user’s]() `country`. ## Footer []()### Documentation - [Web API]() - [Web Playback SDK]() - [Ads API]() - [iOS]() - [Android]() - [Embeds]() - [Commercial Hardware]() ### Guidelines - [Design]() - [Accessibility]() ### Community - [News]() - [Forum]() ### Legal - [Developer Terms]() - [Developer Policy]() - [Compliance Tips]() - [Third Party Licenses]() [Legal]()[Cookies]()© 2025 Spotify AB