# Table of Contents - [Spotify URIs and IDs | Spotify for Developers](#spotify-uris-and-ids-spotify-for-developers) - [Track Relinking | Spotify for Developers](#track-relinking-spotify-for-developers) - [Authorization Code Flow | Spotify for Developers](#authorization-code-flow-spotify-for-developers) - [Rate Limits | Spotify for Developers](#rate-limits-spotify-for-developers) - [Playlists | Spotify for Developers](#playlists-spotify-for-developers) - [Redirect URIs | Spotify for Developers](#redirect-uris-spotify-for-developers) - [Quota modes | Spotify for Developers](#quota-modes-spotify-for-developers) - [Scopes | Spotify for Developers](#scopes-spotify-for-developers) - [Third Party Licenses | Spotify for Developers](#third-party-licenses-spotify-for-developers) - [Spotify Developer Policy | Spotify for Developers](#spotify-developer-policy-spotify-for-developers) - [Compliance Tips | Spotify for Developers](#compliance-tips-spotify-for-developers) - [Widget Terms of Use | Spotify for Developers](#widget-terms-of-use-spotify-for-developers) - [Open Access Concepts | Spotify for Developers](#open-access-concepts-spotify-for-developers) - [Account Linking | Spotify for Developers](#account-linking-spotify-for-developers) - [Content Management | Spotify for Developers](#content-management-spotify-for-developers) - [Changelog | Spotify for Developers](#changelog-spotify-for-developers) - [Open Access Reference | Spotify for Developers](#open-access-reference-spotify-for-developers) - [Open Access Reference | Spotify for Developers](#open-access-reference-spotify-for-developers) - [Home | Spotify for Developers](#home-spotify-for-developers) - [Web Playback SDK | Spotify for Developers](#web-playback-sdk-spotify-for-developers) - [Embeds | Spotify for Developers](#embeds-spotify-for-developers) - [Spotify Open Access | Spotify for Developers](#spotify-open-access-spotify-for-developers) - [iOS SDK | Spotify for Developers](#ios-sdk-spotify-for-developers) - [Design & Branding Guidelines | Spotify for Developers](#design-branding-guidelines-spotify-for-developers) - [Accessibility Guidelines | Spotify for Developers](#accessibility-guidelines-spotify-for-developers) - [Spotify Android SDK | Spotify for Developers](#spotify-android-sdk-spotify-for-developers) - [Community | Spotify for Developers](#community-spotify-for-developers) - [Spotify Developer Terms | Spotify for Developers](#spotify-developer-terms-spotify-for-developers) - [Authorization | Spotify for Developers](#authorization-spotify-for-developers) - [API calls | Spotify for Developers](#api-calls-spotify-for-developers) - [Apps | Spotify for Developers](#apps-spotify-for-developers) - [Getting started with Web API | Spotify for Developers](#getting-started-with-web-api-spotify-for-developers) - [Access Token | Spotify for Developers](#access-token-spotify-for-developers) - [Commercial Hardware | Spotify for Developers](#commercial-hardware-spotify-for-developers) - [Ads API | Spotify for Developers](#ads-api-spotify-for-developers) - [Creating an Embed | Spotify for Developers](#creating-an-embed-spotify-for-developers) - [Using the iFrame API | Spotify for Developers](#using-the-iframe-api-spotify-for-developers) - [Using the oEmbed API | Spotify for Developers](#using-the-oembed-api-spotify-for-developers) - [Troubleshooting | Spotify for Developers](#troubleshooting-spotify-for-developers) - [iFrame API | Spotify for Developers](#iframe-api-spotify-for-developers) - [Spotify for Developers](#spotify-for-developers) - [oEmbed API | Spotify for Developers](#oembed-api-spotify-for-developers) - [Getting Started with Web Playback SDK | Spotify for Developers](#getting-started-with-web-playback-sdk-spotify-for-developers) - [Spotify Connect | Spotify for Developers](#spotify-connect-spotify-for-developers) - [Getting Started with iOS SDK | Spotify for Developers](#getting-started-with-ios-sdk-spotify-for-developers) - [Application Lifecycle | Spotify for Developers](#application-lifecycle-spotify-for-developers) - [Advanced User Authentication | Spotify for Developers](#advanced-user-authentication-spotify-for-developers) - [Token Swap and Refresh | Spotify for Developers](#token-swap-and-refresh-spotify-for-developers) - [iOS Content Linking | Spotify for Developers](#ios-content-linking-spotify-for-developers) - [Building a Spotify Player inside a Web app | Spotify for Developers](#building-a-spotify-player-inside-a-web-app-spotify-for-developers) - [Getting started with Android SDK | Spotify for Developers](#getting-started-with-android-sdk-spotify-for-developers) - [Making Remote Calls | Spotify for Developers](#making-remote-calls-spotify-for-developers) - [Authorization | Spotify for Developers](#authorization-spotify-for-developers) - [iOS SDK Reference | Spotify for Developers](#ios-sdk-reference-spotify-for-developers) - [Onboarding | Spotify for Developers](#onboarding-spotify-for-developers) - [Application Fingerprints | Spotify for Developers](#application-fingerprints-spotify-for-developers) - [Implementation | Spotify for Developers](#implementation-spotify-for-developers) - [Application Lifecycle | Spotify for Developers](#application-lifecycle-spotify-for-developers) - [Android Content Linking | Spotify for Developers](#android-content-linking-spotify-for-developers) - [Making Remote Calls | Spotify for Developers](#making-remote-calls-spotify-for-developers) - [Security Notice: Deprecation of TLS 1.0 and 1.1 | Spotify for Developers](#security-notice-deprecation-of-tls-1-0-and-1-1-spotify-for-developers) - [Increasing the security requirements for integrating with Spotify | Spotify for Developers](#increasing-the-security-requirements-for-integrating-with-spotify-spotify-for-developers) - [Introducing some changes to our Web API | Spotify for Developers](#introducing-some-changes-to-our-web-api-spotify-for-developers) - [Getting Started | Spotify for Developers](#getting-started-spotify-for-developers) - [Migrating from Token to Authorization Code Flow | Spotify for Developers](#migrating-from-token-to-authorization-code-flow-spotify-for-developers) - [Companion App | Spotify for Developers](#companion-app-spotify-for-developers) - [Android SDK Reference | Spotify for Developers](#android-sdk-reference-spotify-for-developers) - [Android Media Notifications | Spotify for Developers](#android-media-notifications-spotify-for-developers) - [New Android SDK version: A Community update | Spotify for Developers](#new-android-sdk-version-a-community-update-spotify-for-developers) - [Smart Display | Spotify for Developers](#smart-display-spotify-for-developers) - [Speaker with Display | Spotify for Developers](#speaker-with-display-spotify-for-developers) - [Speaker with Voice | Spotify for Developers](#speaker-with-voice-spotify-for-developers) - [Ads API Quickstart | Spotify for Developers](#ads-api-quickstart-spotify-for-developers) - [HTTPs Support | Spotify for Developers](#https-support-spotify-for-developers) - [eSDK Initialization | Spotify for Developers](#esdk-initialization-spotify-for-developers) - [The Event Loop | Spotify for Developers](#the-event-loop-spotify-for-developers) - [Unknown](#unknown) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) - [API Reference eSDK 3.203.239 | Spotify for Developers](#api-reference-esdk-3-203-239-spotify-for-developers) - [Ads API Reference | Spotify for Developers](#ads-api-reference-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) - [Web API | Spotify for Developers](#web-api-spotify-for-developers) --- # Spotify URIs and IDs | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-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 URI | The 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 ID | The 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 ID | The unique string identifying the Spotify category.

Example: `party` | | Spotify user ID | The 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](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile)
.

Example: `wizzler` | | Spotify URL | When 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](https://play.spotify.com/)
.

Example: `http://open.spotify.com/track/6rqhFgbbKwnb9MLmUQDhG6` | ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Track Relinking | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/concepts/track-relinking#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-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](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get an Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get an Album’s Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get a Playlist’s Tracks](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Get a User’s Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-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: `` 1 curl -X GET "https://api.spotify.com/v1/tracks/6kLCHFM39wkFjOuyPGLGeQ"` `` ` 1 { 2 ... 3 available_markets: [ "AT", "AU", "BE", "DK", "ES", "FI", 4 "FR", "HU", "IT", "PL", "PT", "SE", 5 "SK", "TR", "TW" ], 6 ... 7 uri: "spotify:track:6kLCHFM39wkFjOuyPGLGeQ" 8 } ` 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: `` 1 curl -X GET "https://api.spotify.com/v1/tracks/6kLCHFM39wkFjOuyPGLGeQ?market=US"` `` ` 1 { 2 ... 3 is_playable: true 4 linked_from: { 5 external_urls: { 6 spotify: "https://open.spotify.com/track/6kLCHFM39wkFjOuyPGLGeQ" 7 }, 8 href: "https://api.spotify.com/v1/tracks/6kLCHFM39wkFjOuyPGLGeQ", 9 id: "6kLCHFM39wkFjOuyPGLGeQ", 10 type: "track", 11 uri: "spotify:track:6kLCHFM39wkFjOuyPGLGeQ" 12 }, 13 ... 14 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](https://developer.spotify.com/documentation/web-api/reference/get-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](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) 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](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) , 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](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) `country`. ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Authorization Code Flow | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/tutorials/code-flow#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-user-follows-playlist) Authorization Code Flow ======================= The authorization code flow is suitable for long-running applications (e.g. web and mobile apps) where the user grants permission only once. If you’re using the authorization code flow in a mobile app, or any other type of application where the client secret can't be safely stored, then you should use the PKCE extension. Keep reading to learn how to correctly implement it. The following diagram shows how the _authorization code flow_ works: ![Authorization Code Flow](https://developer-assets.spotifycdn.com/images/documentation/web-api/auth-code-flow.png) #### Pre-requisites This guide assumes that: * You have read the [authorization guide](https://developer.spotify.com/documentation/web-api/concepts/authorization) . * You have created an app following the [apps guide](https://developer.spotify.com/documentation/web-api/concepts/apps) . #### Example You can find an example app implementing Authorization Code flow on GitHub in the [web-api-examples](https://github.com/spotify/web-api-examples/tree/master/authorization/authorization_code) repository. Request User Authorization -------------------------- The first step is to request authorization from the user so that our app can access to the Spotify resources on the user's behalf. To do this, our application must build and send a `GET` request to the `/authorize` endpoint with the following parameters: | Query Parameter | Relevance | Value | | --- | --- | --- | | client\_id | _Required_ | The Client ID generated after registering your application. | | response\_type | _Required_ | Set to `code`. | | redirect\_uri | _Required_ | The URI to redirect to after the user grants or denies permission. This URI needs to have been entered in the Redirect URI allowlist that you specified when you registered your application (See the [app guide](https://developer.spotify.com/documentation/web-api/concepts/apps)
). The value of `redirect_uri` here must exactly match one of the values you entered when you registered your application, including upper or lowercase, terminating slashes, and such. | | state | _Optional, but strongly recommended_ | This provides protection against attacks such as cross-site request forgery. See [RFC-6749](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)
. | | scope | _Optional_ | A space-separated list of [scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes)
.If no scopes are specified, authorization will be granted only to access publicly available information: that is, only information normally visible in the Spotify desktop, web, and mobile players. | | show\_dialog | _Optional_ | Whether or not to force the user to approve the app again if they’ve already done so. If `false` (default), a user who has already approved the application may be automatically redirected to the URI specified by `redirect_uri`. If `true`, the user will not be automatically redirected and will have to approve the app again. | The following JavaScript code example implements the `/login` method using [Express](https://expressjs.com/) framework to initiates the authorization request: ` 1 var client_id = 'CLIENT_ID'; 2 var redirect_uri = 'http://127.0.0.1:8888/callback'; 3 4 var app = express(); 5 6 app.get('/login', function(req, res) { 7 8 var state = generateRandomString(16); 9 var scope = 'user-read-private user-read-email'; 10 11 res.redirect('https://accounts.spotify.com/authorize?' + 12 querystring.stringify({ 13 response_type: 'code', 14 client_id: client_id, 15 scope: scope, 16 redirect_uri: redirect_uri, 17 state: state 18 })); 19 }); ` Once the request is processed, the user will see the authorization dialog asking to authorize access within the `user-read-private` and `user-read-email` scopes. The Spotify OAuth 2.0 service presents details of the [scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) for which access is being sought. If the user is not logged in, they are prompted to do so using their Spotify credentials. When the user is logged in, they are asked to authorize access to the data sets or features defined in the scopes. Finally, the user is redirected back to your specified `redirect_uri`. After the user accepts, or denies your request, the Spotify OAuth 2.0 service redirects the user back to your `redirect_uri`. In this example, the redirect address is `https://127.0.0.1:8888/callback` #### Response If the user accepts your request, then the user is redirected back to the application using the `redirect_uri` passed on the authorized request described above. The callback contains two query parameters: | Query Parameter | Value | | --- | --- | | code | An authorization code that can be exchanged for an access token. | | state | The value of the `state` parameter supplied in the request. | For example: ` 1 https://my-domain.com/callback?code=NApCCg..BkWtQ&state=34fFs29kd09 ` If the user does not accept your request or if an error has occurred, the response query string contains the following parameters: | Query Parameter | Value | | --- | --- | | error | The reason authorization failed, for example: "access\_denied" | | state | The value of the `state` parameter supplied in the request. | For example: ` 1 https://my-domain.com/callback?error=access_denied&state=34fFs29kd09 ` In both cases, your app should compare the `state` parameter that it received in the redirection URI with the state parameter it originally provided to Spotify in the authorization URI. If there is a mismatch then your app should reject the request and stop the authentication flow. Request an access token ----------------------- If the user accepted your request, then your app is ready to exchange the authorization code for an access token. It can do this by sending a `POST` request to the `/api/token` endpoint. The body of this `POST` request must contain the following parameters encoded in `application/x-www-form-urlencoded`: | Body Parameters | Relevance | Value | | --- | --- | --- | | grant\_type | _Required_ | This field must contain the value `"authorization_code"`. | | code | _Required_ | The authorization code returned from the previous request. | | redirect\_uri | _Required_ | This parameter is used for validation only (there is no actual redirection). The value of this parameter must exactly match the value of `redirect_uri` supplied when requesting the authorization code. | The request must include the following HTTP headers: | Header Parameter | Relevance | Value | | --- | --- | --- | | Authorization | _Required_ | Base 64 encoded string that contains the client ID and client secret key. The field must have the format: `Authorization: Basic ` | | Content-Type | _Required_ | Set to `application/x-www-form-urlencoded`. | This step is usually implemented within the callback described on the request of the previous steps: ` 1 app.get('/callback', function(req, res) { 2 3 var code = req.query.code || null; 4 var state = req.query.state || null; 5 6 if (state === null) { 7 res.redirect('/#' + 8 querystring.stringify({ 9 error: 'state_mismatch' 10 })); 11 } else { 12 var authOptions = { 13 url: 'https://accounts.spotify.com/api/token', 14 form: { 15 code: code, 16 redirect_uri: redirect_uri, 17 grant_type: 'authorization_code' 18 }, 19 headers: { 20 'content-type': 'application/x-www-form-urlencoded', 21 'Authorization': 'Basic ' + (new Buffer.from(client_id + ':' + client_secret).toString('base64')) 22 }, 23 json: true 24 }; 25 } 26 }); ` ### Response On success, the response will have a `200 OK` status and the following JSON data in the response body: | key | Type | Description | | --- | --- | --- | | access\_token | string | An access token that can be provided in subsequent calls, for example to Spotify Web API services. | | token\_type | string | How the access token may be used: always "Bearer". | | scope | string | A space-separated list of scopes which have been granted for this `access_token` | | expires\_in | int | The time period (in seconds) for which the access token is valid. | | refresh\_token | string | See [refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens)
. | ### What's next? * Congratulations! Your fresh access token is ready to be used! How can we make API calls with it? take a look at to the [access token](https://developer.spotify.com/documentation/web-api/concepts/access-token) guide to learn how to make an API call using your new fresh access token. * If your access token has expired, you can learn how to issue a new one without requiring users to reauthorize your application by reading the [refresh token](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) guide. ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Rate Limits | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/concepts/rate-limits#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-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. ![Rate limits](https://developer-assets.spotifycdn.com/images/documentation/web-api/rate-limit.png) 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](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) . 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](https://developer.spotify.com/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](https://developer.spotify.com/documentation/web-api/reference/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](https://developer.spotify.com/documentation/web-api/concepts/playlists) guide. ### Study your app's request patterns When you load your app's detail page in the [Developer Dashboard](https://developer.spotify.com/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. ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Playlists | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/concepts/playlists#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-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. ![playlist](https://developer-assets.spotifycdn.com/images/documentation/web-api/playlistview.png) Public, Private, and Collaborative Status ----------------------------------------- When [creating](https://developer.spotify.com/documentation/web-api/reference/create-playlist) or [updating](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) 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](https://developer.spotify.com/documentation/web-api/reference/create-playlist) 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](https://developer.spotify.com/documentation/web-api/reference/create-playlist) 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](https://support.spotify.com/us/article/collaborative-playlists/) . 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](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) . The [Get a List of a User’s Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-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](https://developer.spotify.com/documentation/web-api/reference/get-playlist) endpoint, and a list of its items using [Get a Playlist’s Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) . 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](https://support.spotify.com/article/local-files/) . The Web API can retrieve the contents of playlists, including information on any local files that have been added, via the [Playlist endpoints](https://developer.spotify.com/documentation/web-api/reference/get-playlist) . ### 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: ` 1 { 2 "added_at": "2015-01-25T07:51:45Z", 3 "added_by": { 4 "external_urls": { 5 "spotify": "http://open.spotify.com/user/exampleuser" 6 }, 7 "href": "https://api.spotify.com/v1/users/exampleuser", 8 "id": "exampleuser", 9 "type": "user", 10 "uri": "spotify:user:exampleuser" 11 }, 12 "is_local": true, 13 "track": { 14 [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 ` 1 "track": { 2 "album": { 3 "album_type": null, 4 "available_markets": [], 5 "external_urls": {}, 6 "href": null, 7 "id": null, 8 "images": [], 9 "name": "Donkey Kong Country: Tropical Freeze", 10 "type": "album", 11 "uri": null 12 }, 13 "artists": [ 14 { 15 "external_urls": {}, 16 "href": null, 17 "id": null, 18 "name": "David Wise", 19 "type": "artist", 20 "uri": null 21 } 22 ], 23 "available_markets": [], 24 "disc_number": 0, 25 "duration_ms": 127000, 26 "explicit": false, 27 "external_ids": {}, 28 "external_urls": {}, 29 "href": null, 30 "id": null, 31 "name": "Snomads Island", 32 "popularity": 0, 33 "preview_url": null, 34 "track_number": 0, 35 "type": "track", 36 "uri": "spotify:local:David+Wise:Donkey+Kong+Country%3A+Tropical+Freeze:Snomads+Island:127" 37 } 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](https://developer.spotify.com/documentation/web-api/reference/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](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) or [Removed](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) . 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](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) , [Remove Items from a Playlist](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) , [Replace a Playlist’s Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) and [Reorder a Playlist’s Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) . 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](https://www.spotify.com/account/recover-playlists/) . 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**. ![Spotify Playlists Version Control and Snapshots](https://developer-assets.spotifycdn.com/images/documentation/web-api/version-control-and-snapshots.png) 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](https://developer.spotify.com/documentation/web-api/reference/create-playlist) and [Get a Playlist](https://developer.spotify.com/documentation/web-api/reference/get-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](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-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](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) and [Unfollow a Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-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](https://www.spotify.com/se/account/recover-playlists/) 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](https://developer.spotify.com/documentation/web-api/reference/get-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: ![cover-art-mosaic](https://developer-assets.spotifycdn.com/images/documentation/web-api/cover-art-mosaic.jpg) 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](http://open.spotify.com/user/thelinmichael/playlist/3EsfV6XzCHU8SPNdbnFogK) ) 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: ` 1 ... 2 3 "images" : [ { 4 "height" : 640, 5 "url" : "https://mosaic.scdn.co/640/e337f3661f68bc4d96a554de0ad7988d65edb25a134cd5ccaef9d411eba33df9542db9ba731aaf98ec04f9acee17a7576f939eb5aa317d20c6322494c4b4399d9b7c6f61b6a6ee70c616bc1a985c7ab8", 6 "width" : 640 7 }, { 8 "height" : 300, 9 "url" : "https://mosaic.scdn.co/300/e337f3661f68bc4d96a554de0ad7988d65edb25a134cd5ccaef9d411eba33df9542db9ba731aaf98ec04f9acee17a7576f939eb5aa317d20c6322494c4b4399d9b7c6f61b6a6ee70c616bc1a985c7ab8", 10 "width" : 300 11 }, { 12 "height" : 60, 13 "url" : "https://mosaic.scdn.co/60/e337f3661f68bc4d96a554de0ad7988d65edb25a134cd5ccaef9d411eba33df9542db9ba731aaf98ec04f9acee17a7576f939eb5aa317d20c6322494c4b4399d9b7c6f61b6a6ee70c616bc1a985c7ab8", 14 "width" : 60 15 } ], 16 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](https://developer.spotify.com/terms) . 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](https://developer.spotify.com/documentation/design) to help you with this. ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Redirect URIs | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-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](https://developer.spotify.com/documentation/blog/2025-02-12-increasing-the-security-requirements-for-integrating-with-spotify) . 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](https://www.rfc-editor.org/rfc/rfc8252.html#section-7.3) . Examples -------- Here are some examples of redirect URIs: ` 1 https://example.com/callback 2 http://127.0.0.1:8000/callback 3 http://[::1]:8000/callback ` ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Quota modes | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/concepts/quota-modes#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-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_: ![App status](https://developer-assets.spotifycdn.com/images/documentation/web-api/appstatus.png) 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: 1. Log in to the [Developer Dashboard](https://developer.spotify.com/dashboard) 2. Tap on the name of your app 3. Tap on the _Settings_ button 4. Tap on the _Users Management_ tab ![Users and Access](https://developer-assets.spotifycdn.com/images/documentation/web-api/users-and-access.png) 5. 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 6. 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](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) 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](https://developer.spotify.com/blog/2025-04-15-updating-the-criteria-for-web-api-extended-access) . Application must be sent through a company email **by using [this form](https://docs.google.com/forms/d/1O87xdPP1zWUDyHnduwbEFpcjA57JOaefCgBShKjAqlo) **. Check out the implementation requirements below to make sure your company is compatible before submitting your application. Implementation requirements: 1. Established Business Entity (legally registered business or organisation) 2. Operating an active, and Launched Service 3. Maintaining a minimum of active users (at least 250k MAUs) 4. Being available in key Spotify markets 5. Commercial Viability 6. 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](https://developer.spotify.com/policy) . 1. Log in to the [Developer Dashboard](https://developer.spotify.com/dashboard) 2. Tap on the name of your app 3. Tap on the _Settings_ button 4. Tap on the _Quota extension Request_ tab ![Request Extension link](https://developer-assets.spotifycdn.com/images/documentation/web-api/request-a-quota-extension.png) 5. Tell us about your app by filling out the provided questionnaire (4 steps) 6. 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. ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Scopes | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-api/concepts/scopes#main) Web API * [Overview](https://developer.spotify.com/documentation/web-api) * [Getting started](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) * ConceptsConcepts Concepts* [Access Token](https://developer.spotify.com/documentation/web-api/concepts/access-token) * [API calls](https://developer.spotify.com/documentation/web-api/concepts/api-calls) * [Apps](https://developer.spotify.com/documentation/web-api/concepts/apps) * [Authorization](https://developer.spotify.com/documentation/web-api/concepts/authorization) * [Redirect URIs](https://developer.spotify.com/documentation/web-api/concepts/redirect_uri) * [Playlists](https://developer.spotify.com/documentation/web-api/concepts/playlists) * [Quota modes](https://developer.spotify.com/documentation/web-api/concepts/quota-modes) * [Rate limits](https://developer.spotify.com/documentation/web-api/concepts/rate-limits) * [Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) * [Spotify URIs and IDs](https://developer.spotify.com/documentation/web-api/concepts/spotify-uris-ids) * [Track Relinking](https://developer.spotify.com/documentation/web-api/concepts/track-relinking) * TutorialsTutorials Tutorials* [Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) * [Authorization code PKCE](https://developer.spotify.com/documentation/web-api/tutorials/code-pkce-flow) * [Client credentials](https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow) * [Implicit grant \[Deprecated\]](https://developer.spotify.com/documentation/web-api/tutorials/implicit-flow) * [Refreshing tokens](https://developer.spotify.com/documentation/web-api/tutorials/refreshing-tokens) * [Migration: Implicit grant to Authorization code](https://developer.spotify.com/documentation/web-api/tutorials/migration-implicit-auth-code) * [Migration: Insecure redirect URI](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) * How-TosHow-Tos How-Tos* [Display your Spotify profile data in a web app](https://developer.spotify.com/documentation/web-api/howtos/web-app-profile) Reference * AlbumsAlbums Albums* [Get Album](https://developer.spotify.com/documentation/web-api/reference/get-an-album) * [Get Several Albums](https://developer.spotify.com/documentation/web-api/reference/get-multiple-albums) * [Get Album Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-albums-tracks) * [Get User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Remove Users' Saved Albums](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Check User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Get New Releases](https://developer.spotify.com/documentation/web-api/reference/get-new-releases) * ArtistsArtists Artists* [Get Artist](https://developer.spotify.com/documentation/web-api/reference/get-an-artist) * [Get Several Artists](https://developer.spotify.com/documentation/web-api/reference/get-multiple-artists) * [Get Artist's Albums](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-albums) * [Get Artist's Top Tracks](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-top-tracks) * [Get Artist's Related Artists](https://developer.spotify.com/documentation/web-api/reference/get-an-artists-related-artists) * AudiobooksAudiobooks Audiobooks* [Get an Audiobook](https://developer.spotify.com/documentation/web-api/reference/get-an-audiobook) * [Get Several Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-multiple-audiobooks) * [Get Audiobook Chapters](https://developer.spotify.com/documentation/web-api/reference/get-audiobook-chapters) * [Get User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-audiobooks) * [Save Audiobooks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-audiobooks-user) * [Remove User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/remove-audiobooks-user) * [Check User's Saved Audiobooks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-audiobooks) * CategoriesCategories Categories* [Get Several Browse Categories](https://developer.spotify.com/documentation/web-api/reference/get-categories) * [Get Single Browse Category](https://developer.spotify.com/documentation/web-api/reference/get-a-category) * ChaptersChapters Chapters* [Get a Chapter](https://developer.spotify.com/documentation/web-api/reference/get-a-chapter) * [Get Several Chapters](https://developer.spotify.com/documentation/web-api/reference/get-several-chapters) * EpisodesEpisodes Episodes* [Get Episode](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-episodes) * [Save Episodes for Current User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * GenresGenres Genres* [Get Available Genre Seeds](https://developer.spotify.com/documentation/web-api/reference/get-recommendation-genres) * MarketsMarkets Markets* [Get Available Markets](https://developer.spotify.com/documentation/web-api/reference/get-available-markets) * PlayerPlayer Player* [Get Playback State](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Transfer Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Get Available Devices](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) * [Start/Resume Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Pause Playback](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Skip To Next](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip To Previous](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Seek To Position](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Playback Volume](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Toggle Playback Shuffle](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Get Recently Played Tracks](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-queue) * [Add Item to Playback Queue](https://developer.spotify.com/documentation/web-api/reference/add-to-queue) * PlaylistsPlaylists Playlists* [Get Playlist](https://developer.spotify.com/documentation/web-api/reference/get-playlist) * [Change Playlist Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Get Playlist Items](https://developer.spotify.com/documentation/web-api/reference/get-playlists-tracks) * [Update Playlist Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Add Items to Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Remove Playlist Items](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Get Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-playlists) * [Create Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Get Featured Playlists](https://developer.spotify.com/documentation/web-api/reference/get-featured-playlists) * [Get Category's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-categories-playlists) * [Get Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/get-playlist-cover) * [Add Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) * SearchSearch Search* [Search for Item](https://developer.spotify.com/documentation/web-api/reference/search) * ShowsShows Shows* [Get Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get Show Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-episodes) * [Get User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-shows) * [Save Shows for Current User](https://developer.spotify.com/documentation/web-api/reference/save-shows-user) * [Remove User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/remove-shows-user) * [Check User's Saved Shows](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-shows) * TracksTracks Tracks* [Get Track](https://developer.spotify.com/documentation/web-api/reference/get-track) * [Get Several Tracks](https://developer.spotify.com/documentation/web-api/reference/get-several-tracks) * [Get User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Save Tracks for Current User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Several Tracks' Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-several-audio-features) * [Get Track's Audio Features](https://developer.spotify.com/documentation/web-api/reference/get-audio-features) * [Get Track's Audio Analysis](https://developer.spotify.com/documentation/web-api/reference/get-audio-analysis) * [Get Recommendations](https://developer.spotify.com/documentation/web-api/reference/get-recommendations) * UsersUsers Users* [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-profile) * [Get User's Top Items](https://developer.spotify.com/documentation/web-api/reference/get-users-top-artists-and-tracks) * [Get User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-users-profile) * [Follow Playlist](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Get Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) * [Follow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-users) * [Check If User Follows Artists or Users](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Check if Current User Follows Playlist](https://developer.spotify.com/documentation/web-api/reference/check-if-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](https://developer.spotify.com/documentation/web-api/concepts/authorization) guide to understand the basics. List of Scopes -------------- * Images * [ugc-image-upload](https://developer.spotify.com/documentation/web-api/concepts/scopes#ugc-image-upload) * Spotify Connect * [user-read-playback-state](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-read-playback-state) * [user-modify-playback-state](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-modify-playback-state) * [user-read-currently-playing](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-read-currently-playing) * Playback * [app-remote-control](https://developer.spotify.com/documentation/web-api/concepts/scopes#app-remote-control) * [streaming](https://developer.spotify.com/documentation/web-api/concepts/scopes#streaming) * Playlists * [playlist-read-private](https://developer.spotify.com/documentation/web-api/concepts/scopes#playlist-read-private) * [playlist-read-collaborative](https://developer.spotify.com/documentation/web-api/concepts/scopes#playlist-read-collaborative) * [playlist-modify-private](https://developer.spotify.com/documentation/web-api/concepts/scopes#playlist-modify-private) * [playlist-modify-public](https://developer.spotify.com/documentation/web-api/concepts/scopes#playlist-modify-public) * Follow * [user-follow-modify](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-follow-modify) * [user-follow-read](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-follow-read) * Listening History * [user-read-playback-position](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-read-playback-position) * [user-top-read](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-top-read) * [user-read-recently-played](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-read-recently-played) * Library * [user-library-modify](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-library-modify) * [user-library-read](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-library-read) * Users * [user-read-email](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-read-email) * [user-read-private](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-read-private) * [user-personalized](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-personalized) * Open Access * [user-soa-link](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-soa-link) * [user-soa-unlink](https://developer.spotify.com/documentation/web-api/concepts/scopes#user-soa-unlink) * [soa-manage-entitlements](https://developer.spotify.com/documentation/web-api/concepts/scopes#soa-manage-entitlements) * [soa-manage-partner](https://developer.spotify.com/documentation/web-api/concepts/scopes#soa-manage-partner) * [soa-create-partner](https://developer.spotify.com/documentation/web-api/concepts/scopes#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](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) ### `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](https://developer.spotify.com/documentation/web-api/reference/get-a-users-available-devices) * [Get Information About The User's Current Playback](https://developer.spotify.com/documentation/web-api/reference/get-information-about-the-users-current-playback) * [Get the User's Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) ### `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](https://developer.spotify.com/documentation/web-api/reference/pause-a-users-playback) * [Seek To Position In Currently Playing Track](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) * [Set Repeat Mode On User’s Playback](https://developer.spotify.com/documentation/web-api/reference/set-repeat-mode-on-users-playback) * [Set Volume For User's Playback](https://developer.spotify.com/documentation/web-api/reference/set-volume-for-users-playback) * [Skip User’s Playback To Next Track](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-next-track) * [Skip User’s Playback To Previous Track](https://developer.spotify.com/documentation/web-api/reference/skip-users-playback-to-previous-track) * [Start/Resume a User's Playback](https://developer.spotify.com/documentation/web-api/reference/start-a-users-playback) * [Toggle Shuffle For User’s Playback](https://developer.spotify.com/documentation/web-api/reference/toggle-shuffle-for-users-playback) * [Transfer a User's Playback](https://developer.spotify.com/documentation/web-api/reference/transfer-a-users-playback) * [Add An Item To The End Of User's Current Playback Queue](https://developer.spotify.com/documentation/web-api/reference/seek-to-position-in-currently-playing-track) ### `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](https://developer.spotify.com/documentation/web-api/reference/get-recently-played) * [Get the User's Queue](https://developer.spotify.com/documentation/web-api/reference/get-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](https://developer.spotify.com/documentation/ios) * [Android SDK](https://developer.spotify.com/documentation/android) ### `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](https://developer.spotify.com/documentation/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](https://developer.spotify.com/documentation/web-api/reference/check-if-user-follows-playlist) * [Get a List of Current User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get a List of a User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-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](https://developer.spotify.com/documentation/web-api/reference/get-a-list-of-current-users-playlists) * [Get a List of a User's Playlists](https://developer.spotify.com/documentation/web-api/reference/get-list-users-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](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow a Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Add Items to a Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Change a Playlist's Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Create a Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Remove Items from a Playlist](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Reorder a Playlist's Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Replace a Playlist's Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Upload a Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) ### 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](https://developer.spotify.com/documentation/web-api/reference/follow-playlist) * [Unfollow a Playlist](https://developer.spotify.com/documentation/web-api/reference/unfollow-playlist) * [Add Items to a Playlist](https://developer.spotify.com/documentation/web-api/reference/add-tracks-to-playlist) * [Change a Playlist's Details](https://developer.spotify.com/documentation/web-api/reference/change-playlist-details) * [Create a Playlist](https://developer.spotify.com/documentation/web-api/reference/create-playlist) * [Remove Items from a Playlist](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-playlist) * [Reorder a Playlist's Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Replace a Playlist's Items](https://developer.spotify.com/documentation/web-api/reference/reorder-or-replace-playlists-tracks) * [Upload a Custom Playlist Cover Image](https://developer.spotify.com/documentation/web-api/reference/upload-custom-playlist-cover) ### `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](https://developer.spotify.com/documentation/web-api/reference/follow-artists-users) * [Unfollow Artists or Users](https://developer.spotify.com/documentation/web-api/reference/unfollow-artists-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](https://developer.spotify.com/documentation/web-api/reference/check-current-user-follows) * [Get User's Followed Artists](https://developer.spotify.com/documentation/web-api/reference/get-followed) ### `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](https://developer.spotify.com/documentation/web-api/reference/get-an-episode) * [Get Several Episodes](https://developer.spotify.com/documentation/web-api/reference/get-multiple-episodes) * [Get a Show](https://developer.spotify.com/documentation/web-api/reference/get-a-show) * [Get Several Shows](https://developer.spotify.com/documentation/web-api/reference/get-multiple-shows) * [Get a Show's Episodes](https://developer.spotify.com/documentation/web-api/reference/get-a-shows-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](https://developer.spotify.com/documentation/web-api/reference/get-users-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](https://developer.spotify.com/documentation/web-api/reference/get-the-users-currently-playing-track) ### `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](https://developer.spotify.com/documentation/web-api/reference/remove-albums-user) * [Remove User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/remove-tracks-user) * [Remove User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/remove-episodes-user) * [Save Albums for Current User](https://developer.spotify.com/documentation/web-api/reference/save-albums-user) * [Save Tracks for User](https://developer.spotify.com/documentation/web-api/reference/save-tracks-user) * [Save Episodes for User](https://developer.spotify.com/documentation/web-api/reference/save-episodes-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](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-albums) * [Check User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-tracks) * [Get Current User's Saved Albums](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-albums) * [Get a User's Saved Tracks](https://developer.spotify.com/documentation/web-api/reference/get-users-saved-tracks) * [Check User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/check-users-saved-episodes) * [Get User's Saved Episodes](https://developer.spotify.com/documentation/web-api/reference/get-users-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](https://developer.spotify.com/documentation/web-api/reference/get-current-users-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](https://developer.spotify.com/documentation/web-api/reference/search) * [Get Current User's Profile](https://developer.spotify.com/documentation/web-api/reference/get-current-users-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](https://developer.spotify.com/documentation/open-access/reference/register-user) ### `user-soa-unlink` | | | | --- | --- | | **Description** | Unlink a partner user account from a Spotify account | **Endpoints that require the `user-soa-unlink` scope** * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) ### `soa-manage-entitlements` | | | | --- | --- | | **Description** | Modify entitlements for linked users | **Endpoints that require the `soa-manage-entitlements` scope** * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) ### `soa-manage-partner` | | | | --- | --- | | **Description** | Update partner information | **Endpoints that require the `soa-manage-partner` scope** * [Set partner logo](https://developer.spotify.com/documentation/documentation/open-access/reference/upload-logo) ### `soa-create-partner` | | | | --- | --- | | **Description** | Create new partners, platform partners only | **Endpoints that require the `soa-create-partner` scope** * [Create new partner](https://developer.spotify.com/documentation/documentation/open-access/reference/create-partner) ![Company Logo](https://cdn.cookielaw.org/logos/static/ot_company_logo.png) Tailored Advertising Opt-out ---------------------------- Spotify may collect and share some of your personal data associated with this browser or device with some of our partners for certain purposes such as targeted advertising on their platforms. For example, we may share your cookie data with a marketing partner to inform you of one of our latest promotions while you are on their platform. **The option below allows you to opt-out of the processing of such personal data** **Note**: Spotify may share additional personal data with third parties for tailored advertising purposes if you have a Spotify account. This toggle does not facilitate your privacy choices for any personal data associated with your Spotify account if you have not logged in. Please log in to your account to manage your privacy choices associated with your Spotify account. [Log in here](https://accounts.spotify.com/) ### Manage Consent Preferences #### Enable Tailored Advertising Enable Tailored Advertising * ##### First Party Targeting Cookies Switch Label label These cookies may be used to deliver targeted advertisements and to build a profile of your interests. If you do not allow these cookies you will still experience advertising but it will be less tailored to you. * ##### Store and access information on a device Switch Label label Cookies, device or similar online identifiers together with other information (e.g. browser type and information, language, screen size, supported technologies, etc.) can be stored or read on your device to recognise it each time it connects to an app or to a website, for one or several of the purposes presented here. #### Other Cookies used on this site Always Active * ##### Strictly Necessary Cookies Always Active These cookies are necessary for the service to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the service will not then work. * ##### First Party Functional Cookies Always Active These cookies enable us to provide enhanced functionality and personalisation. If you do not allow these cookies then some or all of these services may not function properly. * ##### First Party Performance Cookies Always Active These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our services. They help us to know which pages are the most and least popular and see how visitors move around the platform. If you do not allow these cookies we will not be able to monitor the performance of our services. * ##### Content Selection, Delivery, and Reporting Always Active These cookies are set by a range of social media services that we have added to the site to enable you to share our content with your friends and networks. They are capable of tracking your browser across other sites and building up a profile of your interests. This may impact the content and messages you see on other websites you visit. If you do not allow these cookies you may not be able to use or see these sharing tools. Back Button ### Cookie List Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Confirm My Choices [![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg "Powered by OneTrust Opens in a new Tab")](https://www.onetrust.com/products/cookie-consent/) --- # Third Party Licenses | Spotify for Developers [Skip to content](https://developer.spotify.com/third-party-licenses#main) Third Party Licenses * [Spotify Web Playback SDK](https://developer.spotify.com/third-party-licenses#spotify-web-playback-sdk) * [Embedded SDK Third-Party Licenses](https://developer.spotify.com/third-party-licenses#embedded-sdk-third-party-licenses) * [Partner Devices](https://developer.spotify.com/third-party-licenses#partner-devices) Third Party Licenses ==================== This page displays all the relevant licenses for third party tools we depend on to deliver an excellent Spotify Platform experience. Spotify Web Playback SDK ------------------------ We don't have any third party licenses to show right now. This may change in the future. ### Embedded SDK Third-Party Licenses Several fantastic pieces of [free](http://www.gnu.org/philosophy/free-sw.html) and [open-source](http://www.opensource.org/) software have helped get the Spotify Embedded SDK to where it is today. We include the licenses for these products below. A big thanks from all of us at Spotify to the smart people behind the fantastic programs listed. This open source software includes: ### getopt [Visit Website](http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdlib/) ` _27 Copyright (c) 1987, 1993, 1994 The Regents of the University of _27 California. All rights reserved. _27 _27 Redistribution and use in source and binary forms, with or without _27 modification, are permitted provided that the following conditions are _27 documentation and/or other materials provided with the distribution. ` ### libvorbis [Visit Website](https://xiph.org/vorbis/) ` _28 Copyright (c) 2002-2008 Xiph.org Foundation _28 _28 Redistribution and use in source and binary forms, with or without _28 modification, are permitted provided that the following conditions are _28 met: _28 – Redistributions of source code must retain the above copyright notice, ` ### mongoose [Visit Website](https://github.com/cesanta/mongoose/) ` _20 Copyright (c) 2004-2013 Sergey Lyubka _20 _20 Permission is hereby granted, free of charge, to any person obtaining a _20 copy of this software and associated documentation files (the _20 “Software”), to deal in the Software without restriction, including _20 without limitation the rights to use, copy, modify, merge, publish, ` ### PuTTY [Visit Website](http://www.chiark.greenend.org.uk/~sgtatham/putty/) ` _25 PuTTY is copyright 1997-2014 Simon Tatham. _25 _25 Portions copyright Robert de Bath, Joris van Rantwijk, Delian Delchev, _25 Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry, Justin _25 Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa, Markus Kuhn, Colin _25 IN NO EVENT SHALL SIMON TATHAM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ` ### Tremor [Visit Website](http://wiki.xiph.org/index.php/Tremor) ` _28 Copyright (c) 2002, Xiph.org Foundation _28 _28 Redistribution and use in source and binary forms, with or without _28 modification, are permitted provided that the following conditions are _28 met: _28 – Redistributions of source code must retain the above copyright notice, ` ### Bonjour [Visit Website](http://www.apache.org/licenses/) ` _169 Apache License _169 Version 2.0, January 2004 _169 _169 _169 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION _169 “License” shall mean the terms and conditions for use, reproduction, and ` ### SHA256 [Visit Website](http://www.ouah.org/ogay/hmac/) ` _27 Copyright (C) 2005, 2007 Olivier Gay \ All _27 rights reserved. _27 _27 Redistribution and use in source and binary forms, with or without _27 modification, are permitted provided that the following conditions are _27 documentation and/or other materials provided with the distribution. ` ### minimp3 [Visit Website](https://github.com/lieff/minimp3) ` _116 CC0 1.0 Universal _116 _116 Statement of Purpose _116 _116 The laws of most jurisdictions throughout the world automatically confer _116 based on applicable law or treaty, and any national implementations thereof. ` ### libcurl [Visit Website](https://curl.haxx.se/libcurl/) ` _23 COPYRIGHT AND PERMISSION NOTICE _23 _23 Copyright (c) 1996 - 2019, Daniel Stenberg, daniel@haxx.se, and many contributors, see the THANKS file. _23 _23 All rights reserved. _23 ` ### MbedTLS [Visit Website](https://github.com/ARMmbed/mbedtls) ` _203 Copyright (C) 2006-2015, ARM Limited, All Rights Reserved _203 _203 Apache License _203 Version 2.0, January 2004 _203 http://www.apache.org/licenses/ _203 risks associated with Your exercise of permissions under this License. ` Partner Devices --------------- Some of our partners have also used open source software in order to help us deliver the Spotify Embedded SDK on their devices. ### md32\_Common.h [Visit Website](https://www.openssl.org/source/license.html) ` _38 Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved. _38 _38 Redistribution and use in source and binary forms, with or without _38 modification, are permitted provided that the following conditions are _38 met: _38 documentation and/or other materials provided with the distribution. ` ### md5\_dgst.c, md5\_locl.h [Visit Website](https://www.openssl.org/source/license.html) ` _61 This product includes cryptographic software written by Eric Young _61 (eay@cryptsoft.com). This product includes software written by Tim _61 Hudson (tjh@cryptsoft.com). _61 _61 Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights _61 this distribution is covered by the same copyright terms except that the ` --- # Spotify Developer Policy | Spotify for Developers [Skip to content](https://developer.spotify.com/policy#main) Legal * Developer Terms[Developer Terms](https://developer.spotify.com/terms) Developer Terms* [Introduction](https://developer.spotify.com/terms#introduction) * [Principles](https://developer.spotify.com/terms#principles) * [Section I Acceptance of Terms](https://developer.spotify.com/terms#section-i-acceptance-of-terms) * [Section II Definitions](https://developer.spotify.com/terms#section-ii-definitions) * [Section III Licenses and Permissions](https://developer.spotify.com/terms#section-iii-licenses-and-permissions) * [Section IV Restrictions](https://developer.spotify.com/terms#section-iv-restrictions) * [Section V Users & Data](https://developer.spotify.com/terms#section-v-users--data) * [Section VI Access, Usage and Quotas](https://developer.spotify.com/terms#section-vi-access-usage-and-quotas) * [Section VII Intellectual Property & Confidential Information](https://developer.spotify.com/terms#section-vii-intellectual-property--confidential-information) * [Section VIII Representations and Warranties, Limitation of Liability, Indemnification, Disclaimers, Release](https://developer.spotify.com/terms#section-viii-representations-and-warranties-limitation-of-liability-indemnification-disclaimers-release) * [Section IX Other Legal Terms](https://developer.spotify.com/terms#section-ix--other-legal-terms) * [Section X Arbitration Agreement](https://developer.spotify.com/terms#section-x-arbitration-agreement) * [Appendix A Data Protection Appendix](https://developer.spotify.com/terms#appendix-a-data-protection-appendix) * Developer Policy[Developer Policy](https://developer.spotify.com/policy) Developer Policy* [I. Respect Users and Data](https://developer.spotify.com/policy#i-respect-users-and-data) * [II. Respect Content and Creators](https://developer.spotify.com/policy#ii-respect-content-and-creators) * [III. Some prohibited applications](https://developer.spotify.com/policy#iii-some-prohibited-applications) * [IV. Streaming and Commercial Use](https://developer.spotify.com/policy#iv-streaming-and-commercial-use) * [V. Widgets and Audio Preview Clips](https://developer.spotify.com/policy#v-widgets-and-audio-preview-clips) * [VI. Naming and Branding](https://developer.spotify.com/policy#vi-naming-and-branding) * [VII. Access, Usage and Quotas](https://developer.spotify.com/policy#vii-access-usage-and-quotas) * Compliance Tips[Compliance Tips](https://developer.spotify.com/compliance-tips) Compliance Tips* [Introduction](https://developer.spotify.com/compliance-tips#introduction) * [Focus on the user](https://developer.spotify.com/compliance-tips#focus-on-the-user) * [Use of content](https://developer.spotify.com/compliance-tips#use-of-content) * [Disallowed use cases](https://developer.spotify.com/compliance-tips#disallowed-use-cases) * [Special considerations of streaming](https://developer.spotify.com/compliance-tips#special-considerations-for-streaming) * [Commercial Use](https://developer.spotify.com/compliance-tips#commercial-use) Legal •Spotify Developer Policy Spotify Developer Policy ======================== Effective as of 15 May, 2025 The Spotify Platform (as defined in the [Developer Terms](https://developer.spotify.com/terms) ) is a set of tools that enable developers to develop applications, websites and services (SDAs) and retrieve data from Spotify. To use the Spotify Platform, you must comply with this Developer Policy which is a part of, and hereby incorporated by reference into, the [Developer Terms](https://developer.spotify.com/terms) . Capitalized terms used but not otherwise defined herein have the meaning given in the [Developer Terms](https://developer.spotify.com/terms) . For clarity, you agree that your access to and use of Spotify Platform is subject to the [Developer Terms](https://developer.spotify.com/terms) and all other applicable terms and policies. I. Respect Users and Data ------------------------- 1. You must read and comply with the Users and Data section of the [Developer Terms](https://developer.spotify.com/terms) . The following are a few key points: 1. **Be truthful and transparent.** Don’t mislead or confuse users about the ways you intend to use their data. You must provide a privacy policy which clearly describes how you intend to access, use, process and disclose user data. Don’t email users unless they have provided you with their explicit consent, or you obtained their email and permission from somewhere other than the Spotify Platform. Only request and process the data that is needed to operate your SDA. 2. **Give users control of their data.** As a general rule, you may store users’ personal data for as long as is necessary to provide your SDA. However, you must provide all users with an easily accessible mechanism to disconnect their Spotify account from your SDA at any time and provide clear instructions on how to do so. Further, when a user disconnects their Spotify account or otherwise expresses an intent to prevent your SDA from accessing their data, you agree to delete and no longer request or process any of that user’s personal data. 3. **Follow the law and user guidelines.** Don’t build or distribute an SDA which violates the [Spotify user guidelines](https://www.spotify.com/us/legal/end-user-agreement/#9-user-guidelines) . Don’t break the law or encourage or enable others to do so. 4. **Security.** Make sure your data practices protect users, including providing industry standard security protection for data. You are also responsible for the security measures used by third parties providing services to you. II. Respect Content and Creators -------------------------------- 1. **Endorsement and promotion.** Unless you have applicable permissions, don’t build an SDA which implies or suggests any endorsement, tie-in, co-branding or promotion by Spotify (except as allowed in the [Branding Guidelines](https://developer.spotify.com/documentation/design#introduction) or any creator, artist, rightsholders, or sound recording. For example, your SDA must not have a specific artist or artists as the sole subject of the SDA unless you have applicable permissions. 2. **Artificial manipulation.** Don’t artificially increase, or claim to artificially increase, play counts, follow counts or otherwise manipulate the Spotify Service. This includes: (i) using any bot, script or automated process; (ii) by providing any compensation (financial or otherwise); and (iii) any other means. 3. **Misleading use.** Don’t confuse or mislead anyone as to the artist, creator or user associated with any Spotify Content. 4. **Attribution.** 1. If you display any Spotify Content you must clearly attribute the content as being supplied and made available by Spotify, by using the Spotify Marks. Our [Branding Guidelines](https://developer.spotify.com/documentation/general/design-and-branding) include some examples of what you should and shouldn’t do. 2. Metadata, cover art and Audio Preview Clips must be accompanied by a link back to the applicable album, content or playlist on the Spotify Service. 3. You must not offer metadata, cover art, and/or Audio Preview Clips as a standalone service or product. 5. **Display metadata and cover art when streaming.** If you offer a Streaming SDA, metadata and cover art may only be used in connection with the underlying content, and there shall be no playback of Spotify Content without showing relevant cover art and metadata in your SDA. III. Some prohibited applications --------------------------------- This section of the Developer Policy identifies some types of SDA and functionality that you must not build, nor enable or encourage others to build: 1. Do not create ringtone or alert tone functionality or alarm functionality in an SDA, unless you receive Spotify’s written approval. 2. Do not create a game, including trivia quizzes. 3. Do not create a voice-enabled SDA that enables a user to control Spotify with their voice, or any kind of voice assistant that provides voice-control functionality. 4. Do not create any product or service which includes any non-interactive internet webcasting service. For example, you can’t create an application which plays content from a single source to several simultaneous listeners. 5. Do not create any product or service which is integrated with streams or content from another service. 6. Do not synchronize any sound recordings with any visual media, including any advertising, film, television program, slideshow, video, or similar content. 7. Do not permit any device or system to segue, mix, re-mix, or overlap any Spotify Content with any other audio content (including other Spotify Content). 8. Do not build products and services which are targeted to children. If you have actual or suspected knowledge that specific people using your SDA or online service are children, you must block the use of the Spotify Platform for those people. 9. Do not build an SDA that enables the transfer of data to another service, except for the purpose of enabling a user to transfer their personal data, or the metadata of the user's playlists to another service. 10. Do not build products or services which are targeted for use by businesses, such as in-store or by retail employees. Spotify is for personal, non-commercial use which means it can’t be broadcast or played publicly from a business, such as radio stations, bars, restaurants, stores, dance studios, etc., see [our Customer Support website](https://support.spotify.com/us/article/spotify-public-commercial-use/) for more details. 11. Do not build products or services that mimic, or replicate or attempt to replace a core user experience of Spotify or its group companies without our prior written permission. Your product or service must add independent value or functionality that improves users’ interactions with Spotify. 12. Do not generate news media, or commercial product offers. 13. Do not analyze the Spotify Content or the Spotify Service for any purpose, including without limitation, creating new or derived listenership metrics, benchmarking, functionality, usage statistics, user metrics, or building profiles of users, including for the purpose of targeting them with advertising or marketing. 14. Do not use the Spotify Platform or any Spotify Content to train a machine learning or AI model or otherwise ingest Spotify Content into a machine learning or AI model. IV. Streaming and Commercial Use -------------------------------- 1. **Streaming only permitted for Premium subscribers.** Streaming of music sound recordings through the Spotify Platform shall only be made available to subscribers to the Premium Spotify Service. Please note that (i) Widgets and (ii) Audio Preview Clips may be made available to Spotify users who do not subscribe to the Premium service to the extent such functionality is available through the Spotify Platform. Streaming of podcasts can be made available to all users of the Spotify Service. 2. **Commercial use restrictions.** Except for the limited commercial uses for Non-Streaming SDAs (set out below) commercial uses are not permitted for SDAs. Some examples of commercial uses that are not allowed include: 1. the sale, whether integrated or as a standalone product, of a Streaming SDA, the Spotify Platform, Spotify Content or Spotify Service, or sale of access to any of the foregoing; 2. any e-commerce (e.g., in-app payment or monetization) initiated via a Streaming SDA; 3. the sale of advertising, sponsorships, or promotions on the Streaming SDA itself. 3. **Limited commercial use permitted for Non-Streaming SDAs.** The following are the only permitted commercial uses of Non-Streaming SDAs: 1. the sale of advertising, sponsorships, or promotions on the Non-Streaming SDA; 2. the sale of, or sale of access to, a Non-Streaming SDA (including any e-commerce initiated via the Non-Streaming SDA). V. Widgets and Audio Preview Clips ---------------------------------- 1. **Widgets.** If you use Spotify Widgets, you must also comply with the restrictions set out in the [Spotify Widgets Terms](https://developer.spotify.com/documentation/embeds/terms) . 2. **Using Audio Preview Clips.** If you use Audio Preview Clips: 1. You may only make Audio Preview Clips available for streaming in the territories in which the corresponding full length track is available. 2. Audio Preview Clips may only be used to promote the underlying content and not for personalization or messaging products, podcasts or similar products. 3. Audio Preview Clips must be accompanied by a link back to the applicable content or playlist on the Spotify Service. 4. You must not offer Audio Preview Clips as a standalone service or product. VI. Naming and Branding ----------------------- 1. If you want to use the Spotify Marks, follow our [Branding Guidelines](https://developer.spotify.com/documentation/design#introduction) . 2. You must also follow the [Branding Guidelines](https://developer.spotify.com/documentation/design#introduction) when naming your SDA. For example, the name should not begin with “Spot” or be confusing in sound or spelling to Spotify. Unless you have applicable permissions, don’t imply any endorsement, tie-in, co-branding or promotion by Spotify. VII. Access, Usage and Quotas ----------------------------- You must read and comply with the Access, Usage and Quotas section of the [Developer Terms](https://developer.spotify.com/terms) . The following are a few key points: 1. **Accessing and registering for the Spotify Platform.** 1. To access and use the Spotify Platform, you must link your developer account to a Spotify account. You will be issued with a client I.D (“**Security Code**”) for accessing the Spotify Platform and managing your account. 2. Your account information and contact details must be accurate, complete and up to date. Please make sure to register with an actively monitored email address for service announcements or contacts for further information relating to your developer account. Your access to the Spotify Platform may be removed or restricted if we’re unable to contact you. 2. **Using Security Codes.** You must use a separate Security Code for each SDA. You may not use more than one Security Code for each SDA. 3. **Usage and Quotas.** 1. Spotify may use quotas and restrictions to ensure that the Spotify Platform is accessed and used as intended and in accordance with the [Developer Terms](https://developer.spotify.com/terms) . 2. If your SDA reaches a quota limit, you may be eligible to apply for extended access using the forms provided to you. You must meet (and continue to meet) all eligibility and other criteria to be considered for extended access, as determined by Spotify, and complete all forms and applications as required by Spotify. This criteria may change at any time in accordance with the Developer Terms. In that case, your application for extended access must specify the use case for which you need the extension. 3. While we hope to process applications within reasonable timeframes, Spotify makes no guarantees or promises on processing times, or that such extended access request will be approved. 4. Your access to the Spotify Platform may be revoked if the review process indicates that your SDA breaches our terms and policies. 5. If Spotify grants an additional quota: * You must use the additional quota granted only for the use case that Spotify reviewed. * If any of the information you provided to Spotify changes, you must notify Spotify of the change prior to using the additional quota for a non-reviewed use case. * If you need to request additional scopes, you can notify Spotify by submitting a scope extension request. 6. Please note that we review the applications on our platform from time to time. Please ensure compliance with the [Developer Terms](https://developer.spotify.com/terms) at all times. --- # Compliance Tips | Spotify for Developers [Skip to content](https://developer.spotify.com/compliance-tips#main) Legal * Developer Terms[Developer Terms](https://developer.spotify.com/terms) Developer Terms* [Introduction](https://developer.spotify.com/terms#introduction) * [Principles](https://developer.spotify.com/terms#principles) * [Section I Acceptance of Terms](https://developer.spotify.com/terms#section-i-acceptance-of-terms) * [Section II Definitions](https://developer.spotify.com/terms#section-ii-definitions) * [Section III Licenses and Permissions](https://developer.spotify.com/terms#section-iii-licenses-and-permissions) * [Section IV Restrictions](https://developer.spotify.com/terms#section-iv-restrictions) * [Section V Users & Data](https://developer.spotify.com/terms#section-v-users--data) * [Section VI Access, Usage and Quotas](https://developer.spotify.com/terms#section-vi-access-usage-and-quotas) * [Section VII Intellectual Property & Confidential Information](https://developer.spotify.com/terms#section-vii-intellectual-property--confidential-information) * [Section VIII Representations and Warranties, Limitation of Liability, Indemnification, Disclaimers, Release](https://developer.spotify.com/terms#section-viii-representations-and-warranties-limitation-of-liability-indemnification-disclaimers-release) * [Section IX Other Legal Terms](https://developer.spotify.com/terms#section-ix--other-legal-terms) * [Section X Arbitration Agreement](https://developer.spotify.com/terms#section-x-arbitration-agreement) * [Appendix A Data Protection Appendix](https://developer.spotify.com/terms#appendix-a-data-protection-appendix) * Developer Policy[Developer Policy](https://developer.spotify.com/policy) Developer Policy* [I. Respect Users and Data](https://developer.spotify.com/policy#i-respect-users-and-data) * [II. Respect Content and Creators](https://developer.spotify.com/policy#ii-respect-content-and-creators) * [III. Some prohibited applications](https://developer.spotify.com/policy#iii-some-prohibited-applications) * [IV. Streaming and Commercial Use](https://developer.spotify.com/policy#iv-streaming-and-commercial-use) * [V. Widgets and Audio Preview Clips](https://developer.spotify.com/policy#v-widgets-and-audio-preview-clips) * [VI. Naming and Branding](https://developer.spotify.com/policy#vi-naming-and-branding) * [VII. Access, Usage and Quotas](https://developer.spotify.com/policy#vii-access-usage-and-quotas) * Compliance Tips[Compliance Tips](https://developer.spotify.com/compliance-tips) Compliance Tips* [Introduction](https://developer.spotify.com/compliance-tips#introduction) * [Focus on the user](https://developer.spotify.com/compliance-tips#focus-on-the-user) * [Use of content](https://developer.spotify.com/compliance-tips#use-of-content) * [Disallowed use cases](https://developer.spotify.com/compliance-tips#disallowed-use-cases) * [Special considerations of streaming](https://developer.spotify.com/compliance-tips#special-considerations-for-streaming) * [Commercial Use](https://developer.spotify.com/compliance-tips#commercial-use) Legal •Compliance Tips Compliance Tips =============== Introduction ------------ Spotify is home to communities where people can create, express themselves, listen, share, learn, and be inspired. As a platform, we have a duty to the users to ensure they maintain their privacy, keep control of their experience, and stay safe while using Spotify and applications using the Spotify Platform. As a member of the Spotify for Developers community, please make sure that you are familiar with our [Developer Terms](https://developer.spotify.com/terms) , [Developer Policy](https://developer.spotify.com/policy) and [Widgets Terms](https://developer.spotify.com/documentation/embeds/terms) . Spotify wants to help you successfully build and launch your apps without issue, so we are including more information here about acceptable uses and behaviors to avoid. This resource serves to complement the [Spotify Developer Policy](https://developer.spotify.com/policy) and has been created to help you understand some of its guiding principles. We also give a few examples that demonstrate how our policies would apply in practice. We review the applications on our platform from time to time and may take action if you are found to violate our policies, including suspension, disabling your application or permanently revoking your access to the Spotify Platform. Focus on the User ----------------- Spotify’s users and their experience are at the core of what we do as a company. When using the Spotify Platform to build apps, keep user experience and user trust top of mind. ### User Experience Build a quality experience. If your application crashes, takes long to load, or is otherwise difficult to use or navigate, this will be a poor experience for users. To help avoid negative user experiences, refer to Spotify’s [Platform Documentation](https://developer.spotify.com/) . ### User Trust We encourage our developer community to create value from data and in turn, foster user trust. Developers are encouraged to use data made available through the Spotify Platform, but must do so in a way that abides by our developer documentation and keeps the best interest of the user in mind. #### OAuth Permission Scopes Your app can use OAuth to request scopes from the users of your app. When users visit the OAuth grant screen, the requested permissions will be displayed to them, and they will then choose to approve or reject the request. Use this feature carefully. Users tend to be suspicious of apps that request too many scopes, and of apps that ask for scopes that are particularly sensitive. When you are determining which scopes that your app should request from users, keep these tips in mind: * Make sure that your app isn’t requesting any OAuth scopes that it does not need. You can find information in our reference documentation about the data that is provided by each scope. * Make it clear to the user why your app is asking for the scopes that it does. You can write a privacy policy or help document for users who want to better understand your app’s usage of their data, or include a dialog in the app before the user begins the OAuth flow. * Sometimes, using the API is not the best way to deliver a product feature. Consider alternatives — like linking to a playlist in Spotify where the user can follow it manually, instead of building a programmatic follow button into your app. * If some scopes are only required by a subset of your app’s users, then consider customizing the scope request to each user as they install your app. Remember that you can always ask users to re-authorize your app later if they begin using your product in a new way that requires new scopes. * Don’t ask for scopes on the basis that your app might include a feature later that requires them. For more information about Spotify’s OAuth scopes, see [Authorization Scopes](https://developer.spotify.com/documentation/web-api/concepts/scopes) . #### Storing personal data Avoid storing data that your app can fetch on the fly through the Spotify API. Users sometimes change their Spotify profile image, their display name, and even their account country. By fetching the data that you need at the time it is required, your app can avoid rendering any stale information. Do periodically review the personal data stored by your app, and look for ways to retrieve less personal data, store less personal data, and shorten the length of time for which you store any personal data. To do this, consider: * Removing unpopular features from your app that may consume extra personal data. Not every feature is a hit, and removing an obscure feature can also help you simplify your codebase and improve the user experience. * Using newer Spotify APIs that enable you to deliver your applications, websites and services (SDAs) with less personal data. * Feedback from your users about how your app handles personal data. Take steps to proactively communicate with your users about how their personal data is handled, and listen to them about concerns they may raise. If at any point, a user wishes to request deletion of their data, this request should be easy and your response must be prompt and clear. When fielding requests from your users, it’s your duty as a developer to make this clear and easily navigable. For example, when a user requests the deletion of their data from your service, as a developer, you should make this process simple. Good practice would be to create a clickable button within your SDA user interface which is easy to find and allows a user to self-serve the request without difficulty. Don’t make simple user requests more difficult, such as requiring a user to email, phone or otherwise need to contact you for the removal of their data. To learn more about how to respect users and user data, see [this section of the Developer Policy.](https://developer.spotify.com/policy#i-respect-users-and-data) Use of content -------------- Spotify is home to over tens of millions of tracks, millions of podcast titles and thrives off its relationship with creators. When working with the Spotify Platform, ensure you represent your app, its function, and every component of your use of the Spotify platform (including all creators) accurately and appropriately. When using content provided by Spotify, including artwork and metadata, it is important to follow our [Design Guidelines](https://developer.spotify.com/documentation/design#introduction) . Ensure that you follow these guidelines closely and do not modify, crop or adjust artwork, including album art that is made available to you. If ever you are unsure about allowable use of content provided to you by Spotify, follow the easy to use guidelines and examples in the [Design Guidelines.](https://developer.spotify.com/documentation/design#introduction) Disallowed Use Cases -------------------- Spotify encourages our developer community to be creative and build positive experiences for users through their applications. Make sure to familiarize yourself with the prohibited use cases in the Developer Policy, in particular in [section III](https://developer.spotify.com/policy#iii-some-prohibited-applications) . Here are some common app use cases that break our policy, and you should not build: * **Ringtones, alarms and alert tones:** Using or modifying Spotify song clips for alarm, ringtones, or alert integrations. * **Software for restaurants, shops, bars, or other retail locations:** Spotify is for personal non-commercial use only. * **DJ/Mixes:** Using Spotify’s catalog to segue, mix, re-mix, or overlap any Spotify Content with any other audio content (including other Spotify content). * **Games or trivia quizzes:** Incorporating Spotify into any gaming or quiz functionality. For example, a “name that tune” quiz would not be allowed. * **Synchronization:** Syncing sound recordings accessed via the Spotify Platform with other recordings, lyrics, or video. * **Voice-Control:** Using Spotify’s tools to build voice-enabled experiences. Special Considerations for Streaming ------------------------------------ Be sure to make yourself aware that some features and capabilities are only available to users subscribed to the Premium version of Spotify. For example, only subscribers to the Premium Spotify Service are able to stream music sound recordings through the Spotify Platform, whereas widgets, audio preview clips and podcast streaming may be made available to users of Spotify’s Free service to the extent these functionalities are available through the platform at the time. Streaming apps include: * Apps using Web Playback SDK to play music * Apps using our `/v1/me/player/play` endpoint to play music * Apps using the `/v1/me/player/next` endpoint where music could be next * Apps using the `/v1/me/player/previous` endpoint when music could be the previous entity * Apps using the iOS or Android SDKs to start, stop or modify playback of music * Apps using any other Spotify API or SDK to control playback of music or stream music Streaming SDAs have specific considerations, including limited monetization options. To learn more about these, visit Spotify’s Developer Policy, specifically [IV. Streaming and Commercial Use](https://developer.spotify.com/policy#iv-streaming-and-commercial-use) . Commercial Use -------------- If you are a developer looking to monetize your app, familiarize yourself with [IV. Streaming and Commercial Use of the Developer Policy.](https://developer.spotify.com/policy#iv-streaming-and-commercial-use) Pay special attention to the rules for streaming apps as they differ from the rules for non-streaming apps when it comes to monetization. Some examples of Streaming SDAs are given above. The following are a few examples of use cases that **are not** allowed: * Any commercialization of streaming apps such as: * Charging users $5/month for a home automation app that includes the ability to trigger music with the press of a button * Creating a Spotify player with the Web Playback SDK that includes advertising served via Google Ads * Selling hoodies or merchandise featuring artwork or metadata that you obtained using our developer tools * Repackaging data that you’ve gathered from the API and selling it to businesses The following are a few examples of use cases that **are** allowed, provided you comply with the rest of our developer terms and policies: * Selling access to a non-streaming app such as: * Making a playlist manager app and charging users $5/month to use it. * Building an app that notifies users when a podcast episode is released with their chosen keyword in the description, and charging $2 for it in an app store. * Advertising served via Google Ads on a non-streaming app. * Creating a playlist discovery website with pay-per-click advertising on it If you have any questions, please check out our [Support Page](https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer) for more information. --- # Widget Terms of Use | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/embeds/terms#main) Embeds * [Overview](https://developer.spotify.com/documentation/embeds) * TutorialsTutorials Tutorials* [Creating an Embed](https://developer.spotify.com/documentation/embeds/tutorials/creating-an-embed) * [Using the iFrame API](https://developer.spotify.com/documentation/embeds/tutorials/using-the-iframe-api) * [Using the oEmbed API](https://developer.spotify.com/documentation/embeds/tutorials/using-the-oembed-api) * [Troubleshooting](https://developer.spotify.com/documentation/embeds/tutorials/troubleshooting) * PlaygroundsPlaygrounds Playgrounds* [iFrame API](https://developer.spotify.com/documentation/embeds/playgrounds/iFrameAPI) * [Terms of Use](https://developer.spotify.com/documentation/embeds/terms) Reference * [oEmbed API](https://developer.spotify.com/documentation/embeds/reference/oembed) * iFrame API[iFrame API](https://developer.spotify.com/documentation/embeds/references/iframe-api) iFrame API* [Methods](https://developer.spotify.com/documentation/embeds/references/iframe-api#methods) * [Events](https://developer.spotify.com/documentation/embeds/references/iframe-api#events) Widget Terms of Use =================== _Version 2.0. Effective as of 27 May 2014._ Introduction ------------ Hello and welcome to Spotify’s Widget Terms of Use! Thank you for using our Widgets. We’re working hard to bring the world’s music to everyone and we are excited that you are participating. Please read these terms carefully before embedding our Widgets on your website. We hope you are enjoying a strong cup of coffee and listening to a sweet sweet playlist. Principles ---------- When reviewing our Widget Terms of Use, please keep in mind these two principles: 1. Our users are very important to us. Let’s work together to give them tools to access, discover, manage, and share music. While doing so, please respect their data and privacy settings. 2. We respect rights holders, artists, and music. We work hard to make sure that all of the music on Spotify is fully licensed in order to monetize all content on our service. This respect manifests itself in what we do (or don’t) support on our platform. Section I: Acceptance of Terms ------------------------------ 1. Acceptance of Widget Terms. We invite you to review, download and embed our Widgets accessible, and documentation described, on our developer website (collectively the "Widgets"). Please note that this invitation is subject to your review and agreement with this Widget Terms of Use agreement and certain other terms and conditions (collectively, the “Widget Terms” or “Agreement”). You are not required to agree to the Widget Terms. However, if you reject the Widget Terms, you do not have any right to use the Spotify Widgets. If you use the Spotify Widgets, you will be deemed to have accepted the Widget Terms and entered into a legally binding contract with Spotify AB (“Spotify”, “we”, and sometimes “us”). 2. Other Terms Incorporated. You should also read our [Terms and Conditions of Use](https://www.spotify.com/legal/end-user-agreement/) , our [Privacy Policy](https://www.spotify.com/legal/privacy-policy/) , and the documentation made available to you on our [Spotify developer website](https://developer.spotify.com/) ("Documentation"). If there is an irreconcilable conflict between the Widget Terms and another of these documents with respect to your use of the Widgets, the Widget Terms shall govern. Please note that if you use any of the other developer tools available through the Spotify Platform, you shall be bound by the [Spotify Developer Terms of Service](https://developer.spotify.com/terms) . 3. Acceptance on Behalf of an Organization. If you are developing on behalf of an organization, you agree to these Widget Terms for that organization and promise that you have authority to bind that organization and its parents, subsidiaries and sister companies to these Widget Terms. In that case, "you" and “your” will refer to that organization, its parents, subsidiaries, and sister companies. 4. Language. In the event that these Widget Terms are translated into other languages and there is a discrepancy between versions in different languages, the English language version shall prevail to the extent that such discrepancy is the result of an error in translation. 5. Independent Contractors. There is no joint venture, partnership, agency, or fiduciary relationship existing between you and Spotify, and the parties do not intend to create any such relationship by this Agreement. Section II: Definitions ----------------------- Before we go any further, we think it would be helpful to define a few key terms. Any defined terms not set out in this section will be clearly defined elsewhere in these Widget Terms. 1. Spotify Content. "Spotify Content" means any content, data, information, or material made available through the Spotify Service or by Spotify. This includes, among other things, sound recordings, album artwork, artist biographies, metadata, playlists, and user data (which includes any data, including a user’s content or information that you or third parties obtain from or through Spotify). 2. Spotify Marks. "Spotify Marks" means all trademarks, service marks, logos, brand names, or trade names used to identify Spotify and its products or services. 3. Spotify Service. "Spotify Service" means the service, websites, software applications, and offers provided by Spotify. 4. Spotify Platform. As defined above, "Spotify Platform" includes any of our developer tools (e.g., APIs, SDKs, Widgets) accessible, and documentation described, on our developer website. 5. Widgets. "Widgets" means either or both the Spotify Play Button (or iteration thereof) and the Spotify Follow Button. Section III: Licenses and Permissions ------------------------------------- 1. License to Developer. Subject to and conditional upon your compliance at all times with these Widget Terms, Spotify grants to you a limited, non-exclusive, non-transferable, non-sublicensable, revocable right during the Term (defined in the "Term, Termination and Survival" Section) to the following: * a. Widgets. Use the Spotify Platform to reproduce and display the Spotify Widgets on any website or webpage controlled by you (a "Website"). For the avoidance of doubt, you may not make the Spotify Widget available on any third party website or webpage not controlled by you. If you cannot prevent the Spotify Widget from being displayed on a third party website or web page without acceptance of this Agreement by the controller of the third party site, then you may not incorporate the Spotify Widget into your Website. * b. Spotify Marks. Use any of the Spotify Marks found in the Spotify [Branding Guidelines](https://developer.spotify.com/documentation/design#introduction) solely to promote your use, and the results of your use, of the Spotify Platform in accordance with these Widget Terms, applicable law, and the Spotify Branding Guidelines. You agree that except for the limited license above, these Widget Terms do not grant you any rights to the Spotify Marks and that all goodwill generated through your use of such marks is to the sole benefit of Spotify. If you use any Spotify Marks, you will at no time contest or aid in contesting the validity or ownership of those Spotify Marks or Spotify’s rights in them, including but not limited to, applying to register any trademark, trade name, or other designation that is confusingly similar to the Spotify Marks. 1. Limitation. Except as expressly granted in these Widget Terms, neither party grants the other party any intellectual property rights or other proprietary rights. As between you and Spotify, Spotify, its corporate affiliates, and its applicable licensors retain all intellectual property rights (including all patent, trademark, copyright, trade secret, and other proprietary rights) in and to the Spotify Platform (including its documentation and specifications), all Spotify websites, Spotify Content, Spotify Services, and any derivative works thereof. 2. License to Spotify. You grant to us a paid-up, royalty-free, non-exclusive, worldwide, transferable, sublicensable, irrevocable right and license, under all of your intellectual property rights, to: * a. use, perform, make available, display to the public, reproduce, distribute, and import your Widget and use your name, likeness or brand (which includes all of your trademarks, service marks, logos, brand names or trade names, your "Marks") to the extent it is incorporated into your Widget; * b. link to and direct users to your Widget; and * c. sublicense the foregoing rights to our corporate affiliates or any third parties that are working with us as development partners, hosting facilities, and in similar capacities, in order to enable them to perform their services for us. Following the termination of this Agreement and upon written request from you, Spotify shall make commercially reasonable efforts, as determined in its sole discretion, to remove references and links to your Widget and any of your Marks from the Spotify website or Spotify Service. Spotify shall have no other obligation to delete copies of, or references or links to, your Widget. 1. Use of Widgets. By embedding a Spotify Widget, you agree that Spotify can use information collected through the Spotify Widget (including information collected through Google Analytics) in accordance with our Privacy Policy, and you shall include complete and accurate disclosure to end users as further described in Section V. You acknowledge that in order for the Spotify Widgets to function properly and to enhance user experience, Spotify places cookies and similar technologies (collectively, "Cookies"), and causes third party Cookies to be placed, on the browsers of users that visit websites that embed Spotify Widgets. Section IV: Restrictions ------------------------ 1. General Restrictions. You agree that you will follow the restrictions set out below and will not encourage or facilitate others to violate these restrictions. * a. Do not use the Spotify Platform in any manner that is not expressly authorized in this Agreement. * b. Do not use Spotify Content for any purpose other than delivering your Widget. * c. Do not misuse the Spotify Platform, including (i) modifying, editing, disassembling, decompiling, reverse-engineering or extracting source code from the Spotify Platform (including any client libraries), Spotify Service or Spotify Content (except to the extent such restrictions are expressly prohibited by law); (ii) distributing or making copies of the Spotify Platform or making the Spotify Platform available to any person, except as expressly provided in the Widget Terms; or (iii) interfering, or attempting to interfere, with the proper functioning or performance of the Spotify Platform or Spotify Service. * d. Do not facilitate unauthorized access to the Spotify Service or Spotify Content, including (i) enabling access to, or use of, the Spotify Service or Spotify Content in violation of the Spotify [Terms and Conditions of Use](https://www.spotify.com/legal/end-user-agreement/) , these Widget Terms, [Privacy Policy](https://www.spotify.com/legal/privacy-policy/) , [Branding Guidelines](https://developer.spotify.com/documentation/design#introduction) and Documentation; (ii) attempting to circumvent or render ineffective any geographical restrictions, including IP address-based restrictions; or (iii) facilitating "stream ripping" or other functionalities that make it easier for users to capture or otherwise make permanent copies of Spotify Content. * e. Do not use the Spotify Platform, Spotify Service, or Spotify Content for any illegal or unauthorized purpose, including (i) failing to comply with applicable laws and regulations, including, without limitation, laws regarding personal data, privacy, copyright, and export controls; or (ii) misusing Spotify Intellectual Property (defined below) (such as using Spotify Marks as part of the name of your company or service). * f. Do not use the Spotify Platform, Spotify Service, or Spotify Content in any manner to compete with Spotify or to build products or services that compete with the Spotify Service, Spotify Content, or any other Spotify product or service without our permission. * g. Do not improperly access, alter or store the Spotify Service or Spotify Content, including (i) using any robot, spider, site search/retrieval application, or other tool to retrieve, duplicate, or index any portion of the Spotify Service, Spotify Content (which includes playlist data) or collect information about Spotify users for any unauthorized purpose; (ii) making excessive service calls that are not strictly required for the proper functioning of your Widget via the Spotify Platform; (iii) aggregating metadata, album artwork, audio, or other Spotify Content to create databases or any other compilation other than as strictly necessary to offer and operate your Widget; (iv) requesting, collecting, soliciting or otherwise obtaining access to sign-in names, passwords, or other authentication credentials for the Spotify Service, other than via the means specifically provided for by the Spotify Platform and as strictly necessary to offer and operate your Widget or as expressly authorized by a Spotify user. * h. Do not transfer Spotify Content to unauthorized third parties, including (i) directly or indirectly transferring any data (including aggregate, anonymous or derivative data) received from Spotify to, or use such data in connection with, any ad network, ad exchange, data broker, or other advertising or monetization-related toolset, even if a user consents to such transfer or use; or (ii) to another music service that competes with Spotify or the Spotify Service. * i. Do not use any viruses, worms, Trojan horses, or any other harmful code that could affect the Spotify Platform, Spotify Service, or Spotify Content. * j. Do not damage, disparage, or take other actions that would be detrimental to Spotify, the Spotify Service, Spotify Content, or Spotify’s content providers, corporate affiliates, and partners. * k. Do not associate, imply, or otherwise suggest an endorsement, tie-in, co-branding, or promotion of any brand, service, website, product, or offering with or by (i) Spotify (except as allowed by the [Branding Guidelines](https://developer.spotify.com/documentation/design#introduction) , or (ii) any Spotify Content, including any artist, record label, or sound recording. * l. Do not use the Spotify Platform, Spotify Content, Spotify Service, or Spotify Marks in any way to promote or distribute an application, product, service, website, or other offering, including any Widget: * (i) that is associated with, promotes, features, encourages, facilitates, or condones (a) illegal activity or the illegal or unauthorized use or sharing of audio and/or audiovisual content; (b) any illegal, defamatory, obscene, sexually explicit, malicious, or discriminatory content; (c) violence; (d) political positions or political candidates and/or religious causes; (e) the sale or advertisement of tobacco products, ammunition, firearms, and/or pornography; or (f) content that is deceptive or fraudulent; * (ii) that could be considered defamatory of third parties, obscene, malicious, or discriminatory in any way, including but not limited to on the basis of race, disability, sex, sexual orientation, or religion; * (iii) that infringes any intellectual property or other right of Spotify or any third party, including, without limitation, any right of privacy, publicity, copyright, trademark, patent, or contractual right; or * (iv) that is used to harass, embarrass, harm or improperly target any Spotify user or artist. 1. Spotify Content Restrictions. In addition to the foregoing, you must comply with the following restrictions related to Spotify Content. * a. Editing, Modifying, and Altering. Except as agreed upon by Spotify in writing, you shall not edit, modify, alter, or create derivative works of Spotify Content in any way. * b. Misleading Use. You shall not mislead Spotify users as to the artist or user associated with any Spotify Content. * c. Local Caching. You may not use a Widget to locally cache any Spotify Content. * d. Games and Trivia Quizzes. Unless you receive Spotify’s written approval, you may not use the Spotify Platform to incorporate Spotify Content into any game functionality (including trivia quizzes). * e. No Content Saving Functionality. Your SDA shall not provide any functionality that would enable users to download or save Spotify Content. For example, your SDA must not allow users to "rip" any songs or download cover art. * f. Integration with Third Party Services. You shall not create any product or service by integrating the Spotify Platform, Spotify Service or Spotify Content with (i) any non-interactive internet webcasting service or (ii) streams from another service. * g. Synchronization. You may not synchronize any sound recordings accessed via the Spotify Platform with any visual media, including any advertising, film, television program, slideshow, video, or similar content. * h. Spotify User Data. For restrictions, please see Section V. 1. Widgets Restrictions. In addition to the foregoing, you agree to comply with the following restrictions if you use Spotify Widgets. * a. You shall display the Spotify Widgets in the form made available by Spotify, without alteration, and in accordance with the requirements set out on our developer website. * b. You shall not obfuscate the Spotify Widgets in any way, whether by banner advertisements or by any other means, or alter the form or format of the Spotify Widgets from that made available by Spotify. * c. In the event that you receive information from Spotify or from the use of a Spotify Widget about visitors to your site, your use of such information must comply with these Widget Terms, your end user license agreement, your privacy policy, and all applicable laws and regulations. You may not collect or store personal information about Spotify users such as a name, user ID, or password. * d. You are responsible for use of Widgets, and for all licensing, reporting, and payment obligations to third parties required in connection with content on or within your Website other than content within the Spotify Widgets. * e. Please note that the Spotify Play Button may not be used for commercial purposes. This restriction does not prohibit you from embedding the Spotify Play Button on Websites that contain advertising. Section V: Users & Data ----------------------- 1. You agree not to circumvent any privacy features (e.g., opt outs) offered by Spotify, you, or by third parties. 2. You will not sell or purchase any Spotify Content, including data obtained from Spotify. 3. You shall not email Spotify users unless you obtain their explicit consent or obtain their email address and permission through means other than Spotify. 4. If we prohibit your use of the Spotify Platform or if either party terminates this agreement, you shall delete all Spotify Content (including user data, song metadata, etc.). If you violate these Widget Terms, we may require you to delete all Spotify Content. 5. You must have an end user agreement and privacy policy. Any access, use, processing, and disclosure of Spotify user data shall comply with (i) these Widget Terms; (ii) your end user license agreement; (iii) your privacy policy; and (iv) applicable laws and regulations. 6. You will make a complete and accurate disclosure to end users of the privacy practices and policies applicable to your Website, including, without limitation, notice to the end user: * a. that your collection and use of data is subject to your privacy policy; * b. of the information you collect from users; * c. about how you collect, use, and share that information; * d. about your use of Cookies; * e. that you allow third parties to place Cookies on users’ browsers in order to collect information about their browsing activities on your Website; and * f. about users’ options for Cookie management. 1. If your Website or service is targeted to children, you may not embed or otherwise use the Spotify Platform. If you have actual knowledge that specific people using your Website or online service are children under 13, you must not use the Widgets. You must not knowingly share information with Spotify that you have collected from children under the age of 13 unless you obtain verifiable parental consent that covers Spotify’s collection, use, and disclosure in compliance with applicable law. Section VI: Access to Spotify Platform -------------------------------------- 1. Enforcement of Widget Terms. We may enforce these Widget Terms against you or your Website if we conclude that your Website violates this Agreement or is negatively impacting the Spotify Platform, Spotify Service, or Spotify Content. We may or may not notify you in advance. Enforcement can include revoking your access to the Spotify Platform (including its functionality), requiring you to delete data, terminating our Agreement with you or any other action that we deem appropriate. 2. Limitations on Use of Spotify Platform. Spotify may limit the number of service calls that your Widget may make, the volume of Spotify Content that may be accessed, or anything else about the Spotify Service as Spotify deems appropriate, in its sole discretion, without notice. Spotify may use technical measures to prevent over-usage or stop usage of the Spotify Platform. 3. Monitoring Usage. You agree that Spotify may monitor your use of, and collect usage data related to, the Spotify Platform to ensure quality, improve the Spotify Service, and verify your compliance with these terms. You agree not to block or interfere with such efforts and to provide us with reasonable access to information related to your compliance with these Widget Terms. Spotify may use any technical means to overcome any interference. At our sole discretion we may request, and you shall provide, proof that your website, product or service and any content within your website, product, or service is properly licensed. 4. Cooperation. You agree to cooperate with Spotify in pursuing any violations of the prohibition against ripping or other capture of streamed content. 5. Reporting of Non-Complying SDAs. If you believe that someone is violating these Widget Terms or misusing the Spotify Platform, please contact us using [this form](https://developer.spotify.com/report-non-complying-apps) . 6. Modification of Spotify Platform. Spotify reserves the right to modify the Spotify Platform and to release subsequent versions of the Spotify Platform at any time without notice to you. You may be required to obtain and use the most recent version of the Spotify Platform in order for your Widget to function. Section VII: Representations and Warranties, Limitation of Liability, Indemnification, Disclaimers, Release ----------------------------------------------------------------------------------------------------------- 1. Representations and Warranties. In addition to any other representations, warranties and covenants made by you, you represent, warrant and covenant to Spotify that: * a. You have the legal capacity to enter into these Widget Terms; * b. Any and all information you provide to Spotify is and shall be true, accurate, complete, and up to date; * c. You possess all authorizations, approvals, consents, licenses, permits, and other rights and permissions necessary to provide your Website and perform your obligations hereunder; * d. You own or have secured all rights necessary to copy, display, distribute, render, and publicly perform all content (other than Spotify Content) on or within your Website; * e. Your use of the Spotify Platform complies with all applicable laws and regulations, including without limitation, any right of privacy, publicity, copyright, trademark, patent, trade secret, or contractual right; and * f. Your use of the Spotify Platform shall not infringe any intellectual property or other rights of Spotify or any third party, including without limitation, any right of copyright, trademark, patent, privacy, publicity, or contractual right. 1. LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL SPOTIFY, ITS AFFILIATES, OFFICERS, DIRECTORS, EMPLOYEES, AGENTS, SHAREHOLDERS, LICENSORS, LICENSEES, ASSIGNS OR SUCCESSORS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO ANY LOSS OF DATA, SERVICE INTERRUPTION, COMPUTER FAILURE, OR PECUNIARY LOSS) ARISING OUT OF THE USE OF, OR INABILITY TO USE, THE SPOTIFY SERVICE, SPOTIFY CONTENT, OR SPOTIFY PLATFORM, INCLUDING ANY DAMAGES RESULTING THEREFROM, REGARDLESS OF THE FORM OF THE ACTION OR THE BASIS OF THE CLAIM, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. YOUR ONLY RIGHT WITH RESPECT TO ANY PROBLEMS OR DISSATISFACTION WITH THE SPOTIFY PLATFORM IS TO STOP USING THE SPOTIFY PLATFORM. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR CERTAIN TYPES OF DAMAGES REFERRED TO ABOVE (INCLUDING INCIDENTAL OR CONSEQUENTIAL DAMAGES). ACCORDINGLY, SOME OF THE ABOVE LIMITATIONS AND EXCLUSIONS MAY NOT APPLY TO YOU. YOU AGREE THAT SPOTIFY’S AGGREGATE LIABILITY UNDER THIS AGREEMENT IS LIMITED TO FIVE HUNDRED DOLLARS ($500). 2. INDEMNIFICATION. YOU SHALL INDEMNIFY AND HOLD SPOTIFY AND ITS AFFILIATES, OFFICERS, DIRECTORS, EMPLOYEES, AGENTS, SHAREHOLDERS, LICENSORS, LICENSEES, ASSIGNS OR SUCCESSORS HARMLESS FROM ANY CLAIM OR DEMAND (INCLUDING BUT NOT LIMITED TO REASONABLE ATTORNEY FEES AND COSTS OF INVESTIGATION) MADE BY A THIRD PARTY DUE TO OR ARISING OUT OF OR RELATED TO YOUR USE OF THE SPOTIFY PLATFORM, SPOTIFY SERVICE OR SPOTIFY CONTENT OR YOUR VIOLATION OF THE TERMS OF THIS AGREEMENT OR YOUR VIOLATION OF ANY LAWS, REGULATIONS, OR THIRD PARTY RIGHTS. 3. DISCLAIMERS. * a. ANY USE OF THE SPOTIFY PLATFORM IS AT YOUR OWN RISK. THE SPOTIFY PLATFORM IS PROVIDED ON AN "AS IS" AND “AS AVAILABLE” BASIS. THERE IS NO WARRANTY, EXPRESSED OR IMPLIED, AS TO THE SPOTIFY PLATFORM, SPOTIFY SERVICE OR SPOTIFY CONTENT, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. NO ADVICE OR INFORMATION, WHETHER ORAL OR IN WRITING, OBTAINED BY YOU FROM SPOTIFY SHALL CREATE ANY WARRANTY ON BEHALF OF SPOTIFY IN THIS REGARD. * b. SPOTIFY EXPRESSLY DISCLAIMS ANY WARRANTY THAT: (I) THE SPOTIFY PLATFORM, SPOTIFY SERVICE OR SPOTIFY CONTENT WILL MEET ALL OF YOUR REQUIREMENTS; (II) THE OPERATION OF THE SPOTIFY PLATFORM, SPOTIFY SERVICE OR SPOTIFY CONTENT WILL BE UNINTERRUPTED, TIMELY, SECURE OR ERROR-FREE; OR (III) THE SPOTIFY PLATFORM, SPOTIFY SERVICE OR SPOTIFY CONTENT WILL PROVIDE RESULTS THAT ARE ACCURATE OR RELIABLE OR CONSISTENT WITH YOUR EXPECTATIONS. * c. Further, Spotify has no obligation to provide you or any users of your SDA with support, software upgrades, enhancements, or modifications to the Spotify Platform or Spotify Service. You are solely responsible for providing user support and any other technical assistance to your users. 1. Release. Your agree that any claim arising out of or related to the Spotify Platform, Spotify Service or Spotify Content or otherwise arising out of the Widget Terms must be brought within one year after the claim accrues. Otherwise such claim is permanently barred. In addition, if you have a dispute with one or more third parties (for example, Spotify users or account holders) in connection with the Spotify Platform, Spotify Service or Spotify Content, you release Spotify and its corporate affiliates and any of their officers, directors, employees, agents, shareholders, licensors, licensees, assigns, or successors, for any and all damages, liabilities, causes of action, judgments, and claims arising out of or in any way connected with such disputes. To the extent that California Civil Code 1542 is applicable to you, you waive California Civil Code 1542 with respect to the foregoing claims described in this paragraph: "A general release does not extend to claims which the creditor does not know or suspect to exist in his favor at the time of executing the release, which if known by him must have materially affected his settlement with debtor." Section VIII: Other Legal Terms ------------------------------- 1. Entire Agreement. These Widget Terms constitute the entire agreement between you and Spotify with respect to your use of the Widgets and supersede any prior agreements, whether oral or written, concerning the subject matter of these Widget Terms, except and then only to the extent that you have entered into a Separate Agreement or the [Spotify Developer Terms of Service](https://developer.spotify.com/terms) . A "Separate Agreement" is a written agreement between and signed by Spotify and you governing your use of the Spotify Platform. 2. Changes to the Agreement. We may revise these Widget Terms from time to time and the most current version will always be posted on our website, so please check it regularly. If a revision is material we will notify you (for example via our developer blog or by email). By continuing to access or use the Spotify Platform after revisions become effective, you agree to be bound by the revised Widget Terms. If you do not agree to the new terms, you must terminate this Agreement, stop using the Spotify Platform to deliver Widgets, delete all Spotify Content, and cease all operation, promotion, distribution, and support of all your products and services that rely on the Widgets provided through the Spotify Platform. 3. Non-exclusive Agreement and Competition. * a. These Widget Terms are a non-exclusive agreement. Please understand that Spotify and/or other third parties (including other developers) may be developing and may develop products and services that may be similar to or competitive with your website or other products or services provided by you. Nothing in these Widget Terms shall in any way restrict or preclude Spotify and/or such third parties from creating and fully exploiting such products, services or other business activities without any obligation to you. * b. If you provide Spotify with any feedback (including suggestions, comments, improvements, ideas, etc.), you assign all right, title and interest in and to such feedback to Spotify and acknowledge that we will be entitled to use, implement, and exploit any such feedback in any manner without restriction, and without any obligation of confidentiality, attribution, accounting, or compensation. 1. Export. You shall comply with all applicable export and re-export control laws and regulations, including the Export Administration Regulations, the International Traffic in Arms Regulations and country-specific economic sanctions programs implemented by the Office of Foreign Assets Control in connection with your use of the Spotify Platform. 2. Assignment. You may not assign any of your rights or delegate any of your duties under this Agreement, in whole or in part, to any person or entity. Spotify may assign, delegate, or novate this Agreement or any part thereof to any third party without restrictions. 3. Third Parties. Each corporate affiliate of Spotify shall be a third party beneficiary to these Widget Terms, and such corporate affiliates shall be entitled to directly enforce, and rely upon, any provision of these Widget Terms which confers a benefit on them. Other than the preceding sentence, nothing in this Agreement shall create any third party beneficiaries, or confer any rights in any third parties. 4. Intellectual Property. * a. Spotify respects intellectual property rights, and expects you to do the same. The Spotify Platform, Spotify Service, Spotify Content, and any Spotify Marks (our "Intellectual Property") are the property of Spotify or Spotify’s licensors and protected by intellectual property rights. You do not have the right to use the Intellectual Property in any manner not covered by this Agreement. * b. Nothing in this Agreement shall be construed to convey, and by virtue of this Agreement you shall not acquire, any ownership interest in the Intellectual Property. * c. You shall not contest, or assist others in contesting, the validity, enforceability, ownership, or title of any Intellectual Property. You agree not to attempt to use or register any trademark or domain name that includes the word "Spotify," any other Spotify trademark, or any name that is confusingly similar to any of them. Further, you may not remove or alter any copyright, trademark, or other intellectual property notice contained in or provided through Spotify’s Intellectual Property. 1. Confidentiality. In your interactions with Spotify, you may be given access to certain non-public information, software, specifications, or code ("Confidential Information"), which is confidential and proprietary to Spotify. You may use this Confidential Information only as necessary in exercising such rights as are granted to you in these Widget Terms. You may not disclose any of this Confidential Information to any third party without Spotify’s prior written consent. You further agree that you will protect this Confidential Information from any unauthorized use, access, or disclosure with no less than a reasonable degree of care than your own confidential information. 2. Publicity. You may not suggest a partnership with, sponsorship by, or endorsement by Spotify without Spotify’s prior written approval. You permit Spotify to make public statements about your use of the Spotify Platform at any time. 3. Term, Termination and Survival. * a. This Agreement begins on either (i) the date you demonstrate your acceptance of the Widget Terms or (ii) when you first use the Spotify Platform, and shall continue until terminated (the "Term") as permitted under these Widget Terms. * b. Compliance with the provisions of these Widget Terms is very important. Any licenses contained in these Widget Terms will terminate automatically and without notice if you fail to comply with the Widget Terms. * c. We reserve the right to modify, suspend or discontinue the Spotify Widgets and/or the Spotify Service, or to terminate your ability to use the Spotify Widgets, at any time prior to or after your development of a SDA, website, product or service, without notice, for any reason or for no reason, without any liability to you or your users. * d. Spotify may terminate these Widget Terms by notice to you of termination or by terminating your ability to use the Spotify Widgets. You may terminate these Widget Terms by ceasing all use of the Spotify Widgets and notifying Spotify. * e. Upon any termination or notice of any discontinuance, you must immediately cease and desist from using the Spotify Widgets and delete all Spotify Content obtained through use of the Spotify Platform (including, without limitation, from your servers). * f. Sections III.2, III.4, V, VI.4, VII, VIII.3, VIII.5, VIII.6, VIII.7, VIII.8, VIII.11, VIII.12 and IX of these Widget Terms (or any section necessary to interpret such clauses) shall survive any termination or expiration of these Widget Terms and will continue to bind you. 1. Severability. Should for any reason, or to any extent, any provision of these Widget Terms be held invalid or unenforceable, such invalidity or enforceability shall not affect or render invalid or unenforceable the remaining provisions of these Widget Terms and the application of that provision shall be enforced to the extent permitted by law. 2. Governing Law and Venue. Unless otherwise required by a mandatory law of a member state of the European Union or any other jurisdiction: * a. This Agreement is subject to the law of the State of California, United States, without regard to choice or conflicts of law principles, except to the extent California law is preempted by United States Federal Law, including the Federal Arbitration Act. * b. You and Spotify agree to the exclusive jurisdiction of the state and federal courts in San Francisco County, California, to resolve any dispute, claim, or controversy that arises in connection with this Agreement. To the extent either of Sections VIII.12.a. or VIII.12.b. is not enforceable, the controlling law and exclusive jurisdiction of this Agreement shall be those of Sweden, unless the choice of Swedish law or Swedish jurisdiction would itself be unenforceable. 1. No Waiver. The failure or delay by Spotify to exercise or enforce any right or provision of these Widget Terms or rights under applicable law shall not constitute a waiver of any such provisions or rights. Section IX: Disputes -------------------- 1. CLASS ACTION WAIVER. YOU AND SPOTIFY AGREE THAT EACH MAY BRING CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE ACTION. Unless both you and Spotify agree, no arbitrator or judge may consolidate more than one person’s claims or otherwise preside over any form of a representative or class proceeding. 2. Arbitration. If you are located in, are based in, have offices in, or do business in a jurisdiction in which this Section IX.2. is enforceable, the following mandatory arbitration provisions apply to you: * a. Dispute Resolution and Arbitration. You and Spotify agree that any dispute, claim, or controversy between you and Spotify arising in connection with or relating in any way to these Widget Terms or to your relationship with Spotify as a user of the Spotify Platform (whether based in contract, tort, statute, fraud, misrepresentation, or any other legal theory, and whether the claims arise during or after the termination of these Widget Terms) will be determined by mandatory binding individual arbitration. Arbitration is more informal than a lawsuit in court. THERE IS NO JUDGE OR JURY IN ARBITRATION, AND COURT REVIEW OF AN ARBITRATION AWARD IS LIMITED. There may be more limited discovery than in court. The arbitrator must follow this agreement and can award the same damages and relief as a court (including attorney fees), except that the arbitrator may not award declaratory or injunctive relief benefiting anyone but the parties to the arbitration. This arbitration provision will survive termination of these Widget Terms. * b. Exceptions. Notwithstanding clause (a) above, you and Spotify both agree that nothing herein will be deemed to waive, preclude, or otherwise limit either of our rights, at any time, to (i) bring an individual action in a U.S. small claims court; (ii) pursue enforcement actions through applicable U.S. federal, state, or local agencies where such actions are available; (iii) seek injunctive relief in a court of law; or (iv) to file suit in a court of law to address intellectual property infringement claims. * c. Arbitration Rules. Either you or we may start arbitration proceedings. If you are located in, are based in, have offices in, or do business in the United States, any arbitration between you and Spotify will be finally settled under the Commercial Dispute Resolution Procedures of the American Arbitration Association ("AAA") then in force (the “AAA Rules”), as modified by these Widget Terms. You and Spotify agree that these Agreements affect interstate commerce, so the U.S. Federal Arbitration Act and federal arbitration law apply and govern the interpretation and enforcement of this provision (despite the choice of law provision above). The AAA Rules, as well as instructions on how to file an arbitration proceeding with the AAA, appear at [www.adr.org](http://www.adr.org/) , or you may call the AAA at 1-800-778-7879. Spotify can also help put you in touch with the AAA. Any arbitration hearings will take place at a location to be agreed upon in San Francisco, California or New York, New York, provided that if the claim is for $10,000 or less, you may choose whether the arbitration will be conducted (i) solely on the basis of documents submitted to the arbitrator; (ii) through a non-appearance based telephonic hearing; or (iii) by an in-person hearing as established by the AAA Rules in the county (or parish) of your billing address. The AAA fees will be set by the AAA according to its fee schedules. You and Spotify will share the AAA fees equally, unless otherwise reallocated by the arbitrator. If the arbitrator finds that either the substance of your claim or the relief sought in the Demand is frivolous or brought for an improper purpose (as measured by the standards set forth in Federal Rule of Civil Procedure 11(b)), then the payment of all fees will be governed by the AAA Rules. In such case, you agree to reimburse Spotify for all monies previously disbursed by it that are otherwise your obligation to pay under the AAA Rules. Regardless of the manner in which the arbitration is conducted, the arbitrator shall issue a reasoned written decision sufficient to explain the essential findings and conclusions on which the decision and award, if any, are based. The arbitrator may make rulings and resolve disputes as to the payment and reimbursement of fees or expenses at any time during the proceeding and upon request from either party made within 14 days of the arbitrator’s ruling on the merits. If you are not located in, are not based in, do not have offices in, and do not do business in the United States, any arbitration between you and Spotify will be finally settled under the Rules of Arbitration of the International Chamber of Commerce (the “ICC”) then in force (the “ICC Rules”) by one or more arbitrators appointed in accordance with the ICC Rules, as modified by these Developer Terms, and will be administered by the International Court of Arbitration of the ICC. Any arbitration will be conducted in the English language and unless otherwise required by a mandatory law of a member state of the European Union or any other jurisdiction, the law to be applied in any arbitration shall be the law of the State of California, United States, without regard to choice or conflicts of law principles. * d. Time for Filing. Any arbitration must be commenced by filing a demand for arbitration with the AAA within ONE (1) YEAR after the date the party asserting the claim first knows or reasonably should know of the act, omission, or default giving rise to the claim; and there shall be no right to any remedy for any claim not asserted within that time period. If applicable law prohibits a one-year limitation period for asserting claims, any claim must be asserted within the shortest time period permitted by applicable law. * e. Notice; Process. A party who intends to seek arbitration must first send a written notice of the dispute to the other, by certified mail or Federal Express (signature required), or in the event that we do not have a physical address on file for you, by electronic mail ("Notice"). Spotify’s address for Notice is: Spotify AB, Attn: General Counsel, 45 W. 18th Street, 7th Floor, New York, New York 10011, USA. The Notice must (i) describe the nature and basis of the claim or dispute; and (ii) set forth the specific relief sought (“Demand”). We agree to use good faith efforts to resolve the claim directly, but if we do not reach an agreement to do so within 30 days after the Notice is received, you or Spotify may commence an arbitration proceeding. During the arbitration, the amount of any settlement offer made by you or Spotify shall not be disclosed to the arbitrator until after the arbitrator makes a final decision and award, if any. In the event our dispute is finally resolved through arbitration in your favor, Spotify shall pay you (i) the amount awarded by the arbitrator, if any, (ii) the last written settlement amount offered by Spotify in settlement of the dispute prior to the arbitrator’s award; or (iii) $1,000.00, whichever is greater. All documents and information disclosed in the course of the arbitration shall be kept strictly confidential by the recipient and shall not be used by the recipient for any purpose other than for purposes of the arbitration or the enforcement of arbitrator’s decision and award and shall not be disclosed except in confidence to persons who have a need to know for such purposes or as required by applicable law. Except as required to enforce the arbitrator’s decision and award, neither you nor Spotify shall make any public announcement or public comment or originate any publicity concerning the arbitration, including, but not limited to, the fact that the parties are in dispute, the existence of the arbitration, or any decision or award of the arbitrator. * f. Modifications. In the event that Spotify makes any future change to this arbitration provision (other than a change to Spotify’s address for Notice), you may reject any such change by sending us written notice within 30 days of the change to Spotify’s address for Notice, in which case your license under this Agreement shall be immediately terminated and this arbitration provision, as in effect immediately prior to the amendments you reject, shall survive. * g. Enforceability. If the class action waiver at Section IX.1. is found to be unenforceable in arbitration or if the entirety of this Section IX.2. is found to be unenforceable, then the entirety of this Section IX.2. shall be null and void and, in such case, the parties agree that the exclusive jurisdiction and venue described in Section VIII.12. shall govern any action arising out of or related to these Widget Terms. Copyright © 2014 Spotify AB. All rights reserved. Spotify AB Birger Jarlsgatan 61 SE-113 56 Stockholm Sweden _See also:_ * [Report Non-Complying Apps](https://developer.spotify.com/report-non-complying-apps) * [Spotify Developer Terms of Service](https://developer.spotify.com/terms) * [Spotify Terms and Conditions of Use](https://www.spotify.com/legal/end-user-agreement/) * [Spotify Privacy Policy](https://www.spotify.com/legal/privacy-policy/) * [Spotify Branding Guidelines](https://developer.spotify.com/documentation/design#introduction) --- # Open Access Concepts | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/open-access/concepts#main) Open Access * [Overview](https://developer.spotify.com/documentation/open-access) * [Concepts](https://developer.spotify.com/documentation/open-access/concepts) * TutorialsTutorials Tutorials* [Account Linking](https://developer.spotify.com/documentation/open-access/tutorials/account) * [Content Management](https://developer.spotify.com/documentation/open-access/tutorials/content) * [Changelog](https://developer.spotify.com/documentation/open-access/changelog) Reference * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Create new partner](https://developer.spotify.com/documentation/open-access/reference/create-partner) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Register new user](https://developer.spotify.com/documentation/open-access/reference/register-user) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) * [Set partner logo](https://developer.spotify.com/documentation/open-access/reference/upload-logo) * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) Open Access Concepts ==================== Info: Spotify Open Access features are available only for approved partners Client ID --------- The OAuth 2.0 Client ID is provided by Spotify’s OAuth server, which is used for accessing the Spotify Open Access API. A single Client ID can own and control multiple Partner IDs. Info: The description entered when creating a Client ID will be used in the account linking flow, and should be descriptive of the partner’s offering. Client IDs should be created and managed by the partners themselves through the [dashboard](https://developer.spotify.com/dashboard) . Creating a Client ID also generates a Client Secret. The client secret is needed to access the API and should not be shared with users, browsers or client software. The new Client ID must be allow-listed by the Spotify Partner Management team before it can be used with the Spotify Open Access API. Contact the Spotify Partner Management team and provide the Client ID. They will register your Client ID as an Open Access partner and return a Partner ID to you. Partner ID ---------- The Partner ID identifies a Spotify Open Access Partner. Spotify will issue a Partner ID during the onboarding process when registering your Client ID (see below). Accounts are linked per Partner ID. Partner user ID --------------- The Partner User ID is a partner-defined, unique, and never reassigned user identifier, intended to be consumed by Spotify. The format of a Partner User ID is a lower case string between 16 and 128 hexadecimal characters in length (inclusive). This could be, for example, a UUID (without dashes or curly braces) or a hash digest. The Partner User ID should not contain any personally identifiable information. Partner User IDs are namespaced by Partner ID. Entitlements ------------ Entitlements are identifiers that the partner defines and assigns to users and episodes. An episode is playable if the user and the episode have at least one entitlement identifier in common. Entitlements are namespaced by Partner ID. Completion URL -------------- The response from the `/v1/register-user` endpoint contains a Completion URL. After successfully registering the user, the partner must forward the user to this URL using an HTTP 302 redirect. The linking flow completes after Spotify loads the user’s personalized landing page. This page lists the shows that are unlocked for the user and, if the linking flow starts by passing a Spotify show URI, it displays the relevant show at the top. Entrypoint URL -------------- Each partner should provide an Entrypoint URL, used to bring the user into the account linking flow. The Entrypoint URL will be used to initiate the account linking flow from Spotify surfaces. Info: The Entrypoint URL is required to be served over SSL (https). An example of this could be `https://partner.com/link-with-spotify`. When a user is sent to this URL the following should happen (see Figure 1 above): 1. Check if the user is authenticated/logged in to your website. If not, the user should get redirected to an authentication/login flow of your website. When successfully authenticated the user should be redirected to the next step: 2. A Spotify OAuth authorization URL (`https://accounts.spotify.com/authorize&...`) should be generated using the client ID obtained from Spotify and a user-specific state. 3. A redirect (preferably a 302) should be returned with a “Location” header set to the generated URL in point 2. This initiates the authorization code Flow. 4. The partner backend makes a synchronous call to the register-user endpoint using the token acquired in step 2 above. 5. The register-user endpoint returns a "completion\_url" upon successful account linking. 6. The user should be redirected to the completion\_url from step 5, which will have a link back into Spotify with the content they have unlocked (assuming entitlements were granted). JWT & JWS usage --------------- Info: We recommend reading about [JWTs here](https://datatracker.ietf.org/doc/html/rfc7519#section-3) and [JWS here](https://www.rfc-editor.org/rfc/rfc7515.html#section-3) in their respective RFCs. Unless otherwise stated, the payload of API requests should be a JSON Web Signature (JWS) signed by the sender. Signing the payloads allows Spotify to verify that it is the partner backend making the requests. The JWT should be signed using the HS256 (HMAC SHA256) algorithm with the client\_secret as the signing key. All request parameters are added to the JWS payload. The entire signed JWS is included as the request payload. Info: Keep your client secret a secret. Confidentiality helps maintain API security. Do not expose or make it available to browsers, or client software. You only use the secret to request access tokens and sign request payloads. See the [Client ID](https://developer.spotify.com/documentation/open-access/concepts#client-id) section above for more information. Spotify recommends using a [library](https://jwt.io/libraries) for generating the JWS. The JWS header should contain the algorithm and type: ` _10 { _10 "alg": "HS256", _10 "typ": "JWT" _10 } ` The payload should include the fields described for each API call. As an example: ` _10 { _10 "partner_id": "0000000000000000000000", _10 "partner_user_id": "63e6d54b993a447fa1e81d25dd5f09ac", _10 "entitlements": ["entitlement-1", "entitlement-2"] _10 } ` The resulting JWS should be encoded with '.' delimiters as is standard. An example call to the register-user endpoint. The encoded JWS is passed as the request payload: ` _10 curl -X POST -d 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXJ0bmVyX2lkIjoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsInBhcnRuZXJfdXNlcl9pZCI6IjYzZTZkNTRiLTk5M2EtNDQ3Zi1hMWU4LTFkMjVkZDVmMDlhYyIsImVudGl0bGVtZW50cyI6WyJlbnRpdGxlbWVudC0xIiwiZW50aXRsZW1lbnQtMiJdfQ.22W1Mp9bDHUzg_KwBAWbT2B8aUvRU_5Kefau6LlLzyw' https://open-access.spotify.com/api/v1/register-user ` Scopes ------ Spotify Open Access API uses four OAuth 2.0 scopes. One user-related scope to be used in the authorization code flow, and three service-related scopes to be used with the client credentials flow. A single request must not contain both user-related scopes and service-related scopes. User-related scope (to be used with the authorization code flow): * `user-soa-link` User-related scopes are included in the `https://accounts.spotify.com/authorize` URL using the scope query parameter. Service-related scopes (to be used with the client credentials flow): * `soa-manage-entitlements` * `soa-manage-partner` * `soa-create-partner` * `user-soa-unlink` Service-related scopes are included in the `https://accounts.spotify.com/token` request using the scope query parameter. Multiple scopes can be passed as a space-separated list. Spotify show URI ---------------- In order to highlight the show that a user-initiated a linking journey from, we will need the corresponding show URI. When a user initiates the linking flow from a Spotify client, Spotify will include a `spotifyShowUri` query parameter that will be stored as a cookie on the spotify.com domain. This cookie has a value of the show URI that the user clicked from one of Spotify’s surfaces. Spotify will later highlight the corresponding show on the success page after a user has linked their accounts. This means that when a user initiates a flow from a Spotify client the partners will not need to take action for the chosen show to be highlighted. When a user initiates the flow on the partner's site the partner still has the opportunity to highlight the show that the user started the flow with. This show URI needs to be manually added as a query parameter by the partner to the /link URL, for example: `https://content-access.spotify.com/link/?spotifyShowUri=spotify:show:` Partners do not need to take any additional action. Spotify will set the cookie and highlight the show. --- # Account Linking | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/open-access/tutorials/account#main) Open Access * [Overview](https://developer.spotify.com/documentation/open-access) * [Concepts](https://developer.spotify.com/documentation/open-access/concepts) * TutorialsTutorials Tutorials* [Account Linking](https://developer.spotify.com/documentation/open-access/tutorials/account) * [Content Management](https://developer.spotify.com/documentation/open-access/tutorials/content) * [Changelog](https://developer.spotify.com/documentation/open-access/changelog) Reference * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Create new partner](https://developer.spotify.com/documentation/open-access/reference/create-partner) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Register new user](https://developer.spotify.com/documentation/open-access/reference/register-user) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) * [Set partner logo](https://developer.spotify.com/documentation/open-access/reference/upload-logo) * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) Account Linking =============== Account linking makes it possible for partners to link their users to Spotify users, and to control the user's content access through Spotify’s Web API. * Link their users to Spotify users. * Control content access via the SOA API. As a partner, you initiate account linking using the [OAuth 2.0 authorization code flow](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) with Spotify’s OAuth 2.0 server. This returns an access token. Subsequent calls to the `/register-user` endpoint require this token to create a link between the third-party user and a Spotify account. ![SOA Linking Sequence](https://developer-assets.spotifycdn.com/images/documentation/open-access/soa-linking-sequence.png) The image is also accessible with [better resolution](https://developer.spotify.com/images/documentation/open-access/soa-linking-sequence.png) . Account linking is initiated by the partner using the [OAuth 2.0 authorization code flow](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) with Spotify’s OAuth 2.0 server. The resulting access token can be used to call the `/register-user` endpoint, creating a link between the third-party user and a Spotify account. The API also provides endpoints to modify the access permissions (see [Entitlements](https://developer.spotify.com/documentation/open-access/concepts#entitlements) ) for an already existing user, and to create new partner ID’s. These use the [OAuth 2.0 client credentials flow](https://developer.spotify.com/documentation/web-api/tutorials/code-flow) , making it possible to call these endpoints without user involvement. Account unlinking ----------------- Users can manage their linked accounts at [content-access.spotify.com](https://content-access.spotify.com/) . By unlinking, they lose all access permissions on Spotify associated with that account. To regain access, they must go through the account linking flow again. Partners can direct their users to the [Content Access page](https://content-access.spotify.com/) to verify what Spotify account is linked to the partner account and to see what shows they have access to. The API also provides an endpoint [to unlink a user account](https://developer.spotify.com/documentation/open-access/reference/unlink-user) . To prevent confusion, we advise to only call this endpoint when it's triggered by a user. --- # Content Management | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/open-access/tutorials/content#main) Open Access * [Overview](https://developer.spotify.com/documentation/open-access) * [Concepts](https://developer.spotify.com/documentation/open-access/concepts) * TutorialsTutorials Tutorials* [Account Linking](https://developer.spotify.com/documentation/open-access/tutorials/account) * [Content Management](https://developer.spotify.com/documentation/open-access/tutorials/content) * [Changelog](https://developer.spotify.com/documentation/open-access/changelog) Reference * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Create new partner](https://developer.spotify.com/documentation/open-access/reference/create-partner) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Register new user](https://developer.spotify.com/documentation/open-access/reference/register-user) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) * [Set partner logo](https://developer.spotify.com/documentation/open-access/reference/upload-logo) * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) Content Management ================== Content access -------------- SOA uses a concept of entitlements to control how users can access restricted content. [Entitlements](https://developer.spotify.com/documentation/open-access/concepts#entitlements) are identifiers that the partner defines and assigns to users and episodes. An episode is playable if the user and the episode have at least one entitlement identifier in common. User entitlements are supplied by the partner during the authentication process. A user can have 0, 1, or multiple active entitlements. Episode entitlements are defined in the RSS feed during ingestion. An episode can have 0, 1, or multiple entitlements. Episodes with 0 entitlements are publicly available without further authorization. In the [Lunar Industries](https://lunar-industries.spotify.com/) example, in the content: * **Moonshots** will have no entitlements attached to any episodes. * **The Dark Side** has its bonus episodes tagged with the `"lunar_dark_side"` entitlement. Living on the Moon has all its episodes (except the teaser trailer) tagged with the `"lunar_living"` entitlement. And for the users: * Users that subscribe to the "Bonus Content" tier are given the `"lunar_dark_side"` entitlement. * Users that subscribe to the "Premium" tier are given both the `"lunar_dark_side"` and `"lunar_living"` entitlements in their tokens. ![SOA Content Playback](https://developer-assets.spotifycdn.com/images/documentation/open-access/soa-content-playback.png) An example for the **Lunar Industries** show **The Dark Side** is below. This is not complete RSS as it is of course missing many tags required for full ingestion, but we highlight some SOA details. You can also view [the show's RSS feed directly](https://content-access.spotifycdn.com/lunar-industries/the-dark-side-bonus.rss) . ` _22 _22 _22 _22 The Dark Side _22 Lunar's Bonus Content _22 _22 _22 _22 _22 Free Episode #1 _22 _22 _22 _22 _22 Bonus Episode #1 _22 _22 _22 _22 _22 _22 _22 ` Similarly, the **Living on the Moon** RSS would have all its episodes tagged: ` _24 _24 _24 _24 Living on the Moon _24 Lunar's Premium Content _24 _24 _24 _24 _24 Living Episode #1 _24 _24 _24 _24 _24 _24 _24 Living Episode #2 _24 _24 _24 _24 _24 _24 _24 ` View [the full RSS feed here](https://content-access.spotifycdn.com/lunar-industries/living-on-the-moon.rss) . ### Supporting many shows In the case that a partner has a large number of shows which are bundled, it may make more sense to define entitlements that map to a "tier" rather than individual shows, to reduce the size of the set of entitlements that would need to be sent in register and update calls. Spotify Open Access supports this as well - it is up to the partner how to define entitlements. Content ingestion ----------------- All gated content will be ingested and served through the Spotify platform. ### RSS ingestion RSS-based podcast feeds are submitted through [podcasters.spotify.com](https://podcasters.spotify.com/) . Content ingested through RSS must conform to the [Spotify Podcast Delivery Specification](https://providersupport.spotify.com/article/podcast-delivery-specification-1-9) in addition to the addenda in this section. Spotify recommends having an RSS feed that is specific to Spotify ingestion, which contains the additional information described in this section. For the ingestion of a podcast RSS feed that has a mix of free and paid episodes, Spotify has introduced two new fields in the spotify namespace in the RSS that will allow the ingestion of the mixed subscription tier episodes for the podcast show. The two fields are partner-id at the channel level: ` _10 _10 _10 ` and entitlement at the item level -- example from The Dark Side restricted episode: ` _10 _10 _10 ` Note that in the opening xml tag, the Spotify namespace must be referenced, using `xmlns:spotify="http://www.spotify.com/ns/rss"` ### Sandbox mode Sandbox mode allows partners to test a show before it becomes widely available to Spotify users. A sandboxed show can be accessed only via a direct link if the link is known: `https://open.spotify.com/show/0CTGu9RccEYBWxDJF1LovM`. It will not be available through search and it will not be recommended to users. The same applies to all the episodes in the show. Spotify has introduced a new field in the `spotify` namespace in the RSS that will allow sandbox mode. The field is `sandbox` at the channel level: ` _10 _10 _10 _10 ` Info: All shows from our example partner Lunar Industries are sandboxed. Try searching for [Living on the Moon](https://open.spotify.com/show/0EwATaqqn7Yb0LX6O9XiqI) on Spotify or [view the RSS feed](https://content-access.spotifycdn.com/lunar-industries/living-on-the-moon.rss) to verify how it works. Once a show is tested and is ready to be consumed by Spotify users, remove the tag altogether or mark sandbox enabled as false. ` _10 _10 _10 _10 ` Note that this only goes into effect when the `partner-id` field is also present; a `sandbox` tag on its own has no effect. This field can be toggled as suited. However, some surfaces might not be covered. For example, if this show has previously been searched by a user, since search results are heavily cached, it might still show up on a search for that user. If it has been added to a user’s library, it will stay available. Content protection ------------------ Content hosted on the Spotify platform is protected by Spotify's content protection/DRM systems. Restrictions are enforced by services in the Spotify backend, ensuring that only authorized users are allowed to stream a particular media item. Restrictions take into account the content's availability markets and dates, and the user's authorization status (for SOA content). --- # Changelog | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/open-access/changelog#main) Open Access * [Overview](https://developer.spotify.com/documentation/open-access) * [Concepts](https://developer.spotify.com/documentation/open-access/concepts) * TutorialsTutorials Tutorials* [Account Linking](https://developer.spotify.com/documentation/open-access/tutorials/account) * [Content Management](https://developer.spotify.com/documentation/open-access/tutorials/content) * [Changelog](https://developer.spotify.com/documentation/open-access/changelog) Reference * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Create new partner](https://developer.spotify.com/documentation/open-access/reference/create-partner) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Register new user](https://developer.spotify.com/documentation/open-access/reference/register-user) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) * [Set partner logo](https://developer.spotify.com/documentation/open-access/reference/upload-logo) * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) Changelog ========= Info:Spotify Open Access features are available only for approved partners This page keeps track of improvements and iterations of the Spotify Open Access platform. ### Version 1.6.0 - July 27th, 2022 * **[Unlinking support](https://developer.spotify.com/documentation/open-access/tutorials/account#unlinking) ** - Partners can now direct their users to [content-access.spotify.com](https://content-access.spotify.com/) to manage their linked accounts, and unlink themselves. Additionally, partners are now able to build the unlinking patterns into their own user interface using the new [/unlink-user endpoint](https://developer.spotify.com/documentation/open-access/reference/unlink-user) . * **[Example partner website](https://lunar-industries.spotify.com/) ** - We've created an example website and open source repository to help guide partners as they build an integration with Open Access. Lunar Industries has three shows, [a website](https://lunar-industries.spotify.com/) and [a public git repository](https://github.com/spotify/soa-reference-integration) that simulates a working integration. The documentation now refers to the example partner with links. ### Version 1.5.0 - January 27th, 2022 * **[Sandbox mode](https://developer.spotify.com/documentation/open-access/tutorials/content#sandbox-mode) ** - Content can now be used during testing without worrying that users might find it pre-launch, as it won’t be searchable. Partners will have to link directly to their show to be able to find it. * **[Improved account linking flow](https://developer.spotify.com/documentation/open-access/tutorials/account#linking) ** - We started seeing varying user flows on partner websites, often leaving the user on a general landing page, only to have to find the relevant podcast themselves. We’ve added an educational step and shortened the linking flow, which will improve and simplify our partner’s understanding of this important part of their SOA integration. Additionally, we’ve also shipped Auto-login for Android devices, which makes this experience a little smoother for users on an Android-powered phone (we already support this for iOS). * **[Passing show state](https://developer.spotify.com/documentation/open-access/concepts#spotify-show-uri) ** - When a user has linked their Spotify account to a partner account, we show them a success page with all of the shows they’ve gotten access to. With this update, we remember the show where the user has clicked “Get Access”, and show it on top of the success screen. * **Upload membership images** - SOA supports both single publishers and membership platforms. Partners can upload their member logos using the SOA API so that when a user connects their account, they are reassured that connecting to Spotify will give them access to the creator they already support. ### Version 1.4.0 - December 12th, 2021 * **[Updated linking flow sequence diagram](https://developer.spotify.com/documentation/open-access/tutorials/account#linking) ** - We now use UML to generate the linking flow sequence diagram. * **[Introduced SOA specific concepts](https://developer.spotify.com/documentation/open-access/concepts) ** - With additional domain-specific terminology, SOA concepts are now easier to grasp. --- # Open Access Reference | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/open-access/reference/create-partner#main) Open Access * [Overview](https://developer.spotify.com/documentation/open-access) * [Concepts](https://developer.spotify.com/documentation/open-access/concepts) * TutorialsTutorials Tutorials* [Account Linking](https://developer.spotify.com/documentation/open-access/tutorials/account) * [Content Management](https://developer.spotify.com/documentation/open-access/tutorials/content) * [Changelog](https://developer.spotify.com/documentation/open-access/changelog) Reference * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Create new partner](https://developer.spotify.com/documentation/open-access/reference/create-partner) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Register new user](https://developer.spotify.com/documentation/open-access/reference/register-user) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) * [Set partner logo](https://developer.spotify.com/documentation/open-access/reference/upload-logo) * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) Open Access •References / Create new partner Create new partner ================== OAuth 2.0 **Required scope:** `soa-create-partner` Create a new partner so that users of that partner can be linked to Spotify users. Returns the partner ID to use in subsequent requests managing partner information, user linking, and entitlements. Authorization scopes * soa-create-partner Create new partners \[platform partners only\] [Read more](https://developer.spotify.com/documentation/web-api/concepts/scopes#soa-create-partner) Request ------- POST /create-partner Body jwt Required This endpoint requires the payload to be [provided as a JWT](https://developer.spotify.com/documentation/open-access/concepts#jwt--jws-usage) . The payload has the following fields: | Property | Type | Required | Description | | --- | --- | --- | --- | | partner\_name | string | yes | The display name of the partner to create | | entrypoint\_url | string | yes | Used to initiate the account linking flow from Spotify surfaces. Must be served over SSL (https). See [Entrypoint URL](https://developer.spotify.com/documentation/open-access/concepts#entrypoint-url) | Response -------- * 200 * 400 * 403 On success the response contains the ID of the newly created partner * partner\_id string Response sample --------------- { "partner\_id": "1234567890aBcDeFgHiJkL"} --- # Open Access Reference | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/open-access/reference/upload-logo#main) Open Access * [Overview](https://developer.spotify.com/documentation/open-access) * [Concepts](https://developer.spotify.com/documentation/open-access/concepts) * TutorialsTutorials Tutorials* [Account Linking](https://developer.spotify.com/documentation/open-access/tutorials/account) * [Content Management](https://developer.spotify.com/documentation/open-access/tutorials/content) * [Changelog](https://developer.spotify.com/documentation/open-access/changelog) Reference * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Create new partner](https://developer.spotify.com/documentation/open-access/reference/create-partner) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Register new user](https://developer.spotify.com/documentation/open-access/reference/register-user) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) * [Set partner logo](https://developer.spotify.com/documentation/open-access/reference/upload-logo) * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) Open Access •References / Set partner logo Set partner logo ================ OAuth 2.0 **Required scope:** `soa-manage-partner` Image guidelines: * Neither height nor width should be greater than 8000 pixels. * At least one side should be 1000 pixels or greater. * It is advised to use a square image. * The file size should not exceed 10 Mb. * Supported file formats are PNG, JPG, and TIFF. * Make sure that the partner logo respects the logos and naming restrictions according to Spotify’s design guidelines. Authorization scopes * soa-manage-partner Update partner information [Read more](https://developer.spotify.com/documentation/web-api/concepts/scopes#soa-manage-partner) Request ------- POST /upload-logo/{partnerId} * partnerId string Required The Partner ID issued by Spotify at creation. Body image/\* Required Response -------- * 200 * 403 A successful response will have HTTP status code 200 and an empty payload. Response sample --------------- empty response --- # Home | Spotify for Developers [Skip to content](https://developer.spotify.com/#main) Build with Spotify’s 100 million songs, ======================================= 5 million podcasts and much more See it in action ![](https://developer-assets.spotifycdn.com/images/home/mobile-banner-confetti.svg) Build with Spotify’s 100 million songs, ======================================= 5 million podcasts and much more See it in action ![](https://developer-assets.spotifycdn.com/images/home/tutorial-background.svg) Code tutorial ------------- 1. 1Get your top 5 tracks 2. 2Save the 5 songs in a playlist 3. 3Listen to the songs right here right now --- # Web Playback SDK | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/web-playback-sdk#main) Web Playback SDK * [Overview](https://developer.spotify.com/documentation/web-playback-sdk) * [Getting started](https://developer.spotify.com/documentation/web-playback-sdk/tutorials/getting-started) * ConceptsConcepts Concepts* [Spotify Connect](https://developer.spotify.com/documentation/web-playback-sdk/concepts/spotify-connect) * How-TosHow-Tos How-Tos* [Building a Spotify Player inside a Web app](https://developer.spotify.com/documentation/web-playback-sdk/howtos/web-app-player) Reference* Spotify.Player[Spotify.Player](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayer) Spotify.Player* [connect](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayerconnect) * [disconnect](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayerdisconnect) * [addListener](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayeraddlistener) * [removeListener](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayerremovelistener) * [getCurrentState](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayergetcurrentstate) * [setName](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayersetname) * [getVolume](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayergetvolume) * [setVolume](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayersetvolume) * [pause](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayerpause) * [resume](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayerresume) * [togglePlay](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayertoggleplay) * [seek](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayerseek) * [previousTrack](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayerprevioustrack) * [nextTrack](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayernexttrack) * [activateElement](https://developer.spotify.com/documentation/web-playback-sdk/reference#spotifyplayeractivateelement) * Events[Events](https://developer.spotify.com/documentation/web-playback-sdk/reference#events) Events* [ready](https://developer.spotify.com/documentation/web-playback-sdk/reference#ready) * [not\_ready](https://developer.spotify.com/documentation/web-playback-sdk/reference#not_ready) * [player\_state\_changed](https://developer.spotify.com/documentation/web-playback-sdk/reference#player_state_changed) * [autoplay\_failed](https://developer.spotify.com/documentation/web-playback-sdk/reference#autoplay_failed) * Errors[Errors](https://developer.spotify.com/documentation/web-playback-sdk/reference#errors) Errors* [initialization\_error](https://developer.spotify.com/documentation/web-playback-sdk/reference#initialization_error) * [authentication\_error](https://developer.spotify.com/documentation/web-playback-sdk/reference#authentication_error) * [account\_error](https://developer.spotify.com/documentation/web-playback-sdk/reference#account_error) * [playback\_error](https://developer.spotify.com/documentation/web-playback-sdk/reference#playback_error) * Objects[Objects](https://developer.spotify.com/documentation/web-playback-sdk/reference#objects) Objects* [WebPlaybackPlayer](https://developer.spotify.com/documentation/web-playback-sdk/reference#webplaybackplayer-object) * [WebPlaybackState](https://developer.spotify.com/documentation/web-playback-sdk/reference#webplaybackstate-object) * [WebPlaybackTrack](https://developer.spotify.com/documentation/web-playback-sdk/reference#webplaybacktrack-object) * [WebPlaybackError](https://developer.spotify.com/documentation/web-playback-sdk/reference#webplaybackerror-object) The Web Playback SDK is a client-side only JavaScript library designed to create a local [Spotify Connect](https://developer.spotify.com/documentation/web-playback-sdk/concepts/spotify-connect) device in your browser, stream and control audio tracks from Spotify inside your website and get metadata about the current playback. Info:The Web Playback SDK requires a [Spotify Premium subscription](https://www.spotify.com/premium/) (mobile only types of premium subscriptions are excluded) Getting started --------------- The Web Playback SDK is supported by most web browsers (Chrome, Firefox, Safari and Microsoft Edge) in both mobile (Android and iOS) and Desktop (macOS, Windows and Linux). We provide a [getting started tutorial](https://developer.spotify.com/documentation/web-playback-sdk/tutorials/getting-started) to help you get started with the Web Playback SDK. Documentation ------------- The documentation is organized as follows: * Concepts that clarify key topics * How-Tos, step-by-step guides that cover practical tasks or use cases * Reference, the API specification Examples -------- We've provided a complete [step-by-step how-to](https://developer.spotify.com/documentation/web-playback-sdk/howtos/web-app-player) to lead you through the creation of a simple web app that makes a Spotify Player instance that can be controlled through Spotify Connect. Troubleshooting --------------- * iOS support has some limitations: * The playback does not start automatically after transfering playback. The user must interact with the SDK events to play audio. * The Web Playback SDK require iframes to allow encrypted-media and autoplay in cases of cross origin iframes. This currently affects Chrome browsers since they introduced Feature Policy which disallows features within iframes by default. * Some users have reported issues when loading the SDK using certain browser extensions, specifically the ones related to privacy or 3rd party blockers. If you experience a similar behavior, try to temporarily disable those extensions. Support ------- If you have any questions or run into any issues while using the Spotify Web Playback SDK, you can find help in the [Spotify Developer Community](https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer) . Here, you can connect and get help from other developers. Legal ----- This SDK must not be used in commercial projects without Spotify's prior written approval. By using Spotify developer tools, you accept our [Developer Terms of Use](https://developer.spotify.com/terms) . They contain important information about what you can and can't do with our developer tools. We highly suggest getting familiar with our [Developer Policy](https://developer.spotify.com/policy) and [Complying with Spotify's developer policy](https://developer.spotify.com/compliance-tips) . Please read them carefully. --- # Embeds | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/embeds#main) Embeds * [Overview](https://developer.spotify.com/documentation/embeds) * TutorialsTutorials Tutorials* [Creating an Embed](https://developer.spotify.com/documentation/embeds/tutorials/creating-an-embed) * [Using the iFrame API](https://developer.spotify.com/documentation/embeds/tutorials/using-the-iframe-api) * [Using the oEmbed API](https://developer.spotify.com/documentation/embeds/tutorials/using-the-oembed-api) * [Troubleshooting](https://developer.spotify.com/documentation/embeds/tutorials/troubleshooting) * PlaygroundsPlaygrounds Playgrounds* [iFrame API](https://developer.spotify.com/documentation/embeds/playgrounds/iFrameAPI) * [Terms of Use](https://developer.spotify.com/documentation/embeds/terms) Reference * [oEmbed API](https://developer.spotify.com/documentation/embeds/reference/oembed) * iFrame API[iFrame API](https://developer.spotify.com/documentation/embeds/references/iframe-api) iFrame API* [Methods](https://developer.spotify.com/documentation/embeds/references/iframe-api#methods) * [Events](https://developer.spotify.com/documentation/embeds/references/iframe-api#events) Embeds help you share interactive content from Spotify on a website that you control. Using an Embed, you can add a podcast, an album, or other audio content to your website that your users can listen to. It's a great way to promote your music, share your new podcast episodes with fans, or highlight your favorite album or playlist. Getting started --------------- You can create a simple Embed by copying a few lines of HTML and dropping it into a web page that you control. The Embed will give your website's users a window into a piece of Spotify content that you'd like to highlight. Embeds are interactive. Users can click on them to listen to the content, find out more about the creator, or follow the artist or show. Every website is different, we know that you'll want your Embed to fit in with the look and feel of your existing website or app. You can adjust the background color, height, and width of your Embed using the options in the Embed creation menu. In the case of podcast episodes, you can set a custom start point, allowing listeners to begin listening at a defined point in the show. There are three different ways of creating Embeds: * [Getting the HTML code](https://developer.spotify.com/documentation/embeds/tutorials/creating-an-embed) directly from the Spotiy client and embedding it into your web app. * Using the [iFrame API](https://developer.spotify.com/documentation/embeds/tutorials/using-the-iframe-api) , to create web apps that dynamically load, play and pause Spotify podcast episodes in an Embed. * Using the [oEmbed API](https://developer.spotify.com/documentation/embeds/tutorials/using-the-oembed-api) , if your website handles links that have been shared by users. It's also possible to combine Embeds with other Spotify developer tools, like our [Web API](https://developer.spotify.com/documentation/web-api) . Documentation ------------- The documentation contains different tutorials about how to create and integrate Embeds in your web app, as well as the API Reference for both [oEmbed](https://developer.spotify.com/documentation/embeds/reference/oembed) and [iFrame](https://developer.spotify.com/documentation/embeds/references/iframe-api) . Support ------- Check out the [troubleshooting](https://developer.spotify.com/documentation/embeds/tutorials/troubleshooting) page, which collects typical problems when using Embeds. If you have any questions or run into any issues while using the Spotify Embeds, You can find help in the [Spotify Developer Community](https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer) . Legal ----- By using Spotify Embeds, you accept the [Spotify Developer Terms of Service](https://developer.spotify.com/terms) . --- # Spotify Open Access | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/open-access#main) Open Access * [Overview](https://developer.spotify.com/documentation/open-access) * [Concepts](https://developer.spotify.com/documentation/open-access/concepts) * TutorialsTutorials Tutorials* [Account Linking](https://developer.spotify.com/documentation/open-access/tutorials/account) * [Content Management](https://developer.spotify.com/documentation/open-access/tutorials/content) * [Changelog](https://developer.spotify.com/documentation/open-access/changelog) Reference * [Add user entitlements](https://developer.spotify.com/documentation/open-access/reference/add-entitlements) * [Create new partner](https://developer.spotify.com/documentation/open-access/reference/create-partner) * [Get user entitlements](https://developer.spotify.com/documentation/open-access/reference/get-entitlements) * [Register new user](https://developer.spotify.com/documentation/open-access/reference/register-user) * [Removes user entitlements](https://developer.spotify.com/documentation/open-access/reference/delete-entitlements) * [Replace user entitlements](https://developer.spotify.com/documentation/open-access/reference/replace-entitlements) * [Set partner logo](https://developer.spotify.com/documentation/open-access/reference/upload-logo) * [Unlink user](https://developer.spotify.com/documentation/open-access/reference/unlink-user) Spotify Open Access (SOA) allows partners with existing subscription or membership systems to publish podcast content on Spotify, and restrict access to that content based on existing subscription enforcement. Info:Spotify Open Access features are available only for approved partners Spotify Open Access (SOA) is a first-of-its-kind offering in the audio industry, broadening distribution for creators who offer paid content. The system enables creators with existing paid content businesses to activate their customers on Spotify, and it allows Spotify users to unlock and listen to content they paid for via third-party services: for example, publications with paywalled content or licensed audiobook providers. ![soa-abstracted-linking-flow](https://developer-assets.spotifycdn.com/images/documentation/open-access/soa-abstracted-linking-flow.png) How it works ------------ Info:The Open Access API specs are subject to change at Spotify's discretion. ### You control who has access Use the Open Access API to tell Spotify what episodes or shows are playable by whom using the concept of [Entitlements](https://developer.spotify.com/documentation/open-access/concepts#entitlements) . Subscription canceled or credit card expired? You can revoke or update entitlements in near realtime. ### Tell your subscribers to connect with Spotify Your subscribers can link their accounts to a Spotify account using [OAuth](https://oauth.net/2/) . Spotify does not store any passwords or usernames of your subscribers and they can revoke access at any time. ### Securing your content Content hosted on the Spotify platform is protected by Spotify's battle-tested content protection/DRM systems. Restrictions are enforced by services in the Spotify backend, ensuring that only authorized users are allowed to stream a particular media item. Restrictions take into account the content's availability markets and dates, as well as the users access permissions to SOA content. Example ------- [Lunar Industries](https://lunar-industries.spotify.com/) is a fictitious company we’ve created to help illustrate various scenarios, and examples, and to provide sample data from the SOA API. Lunar Industries has multiple shows on Spotify. Users can subscribe to either a "Bonus" tier or a "Premium" tier on Lunar Industries' website. Of all of their shows on Spotify, one is public (no authorization required), one has bonus episodes that only certain subscribers can access, and one is a paid show apart from a teaser trailer. Each gated show has been set up with corresponding [entitlements](https://developer.spotify.com/documentation/open-access/concepts#entitlements) . Lunar Industries has published the following shows: * **Public** - [Moonshots](https://open.spotify.com/show/7inz2m1bx25SgNBZcRzqBP) does not require a paid subscription. * **Limited Access** - [The Dark Side](https://open.spotify.com/show/0hFhphwy0gCuuFkOGF4BRu) is a show that has a few bonus episodes available to subscribers in the “Bonus Content” tier or higher. * **Premium Access** - [Living on the Moon](https://open.spotify.com/show/0EwATaqqn7Yb0LX6O9XiqI) is for “Premium Tier” subscribers only. The source code can be found on [GitHub](https://github.com/spotify/soa-reference-integration) [![Lunar Industries](https://developer-assets.spotifycdn.com/assets/lunar-industries-screenshot.png)](https://lunar-industries.spotify.com/) Legal ----- Integrating with Spotify Open Access is subject to applicable terms and conditions. --- # iOS SDK | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/ios#main) iOS SDK * [Overview](https://developer.spotify.com/documentation/ios) * [Getting Started](https://developer.spotify.com/documentation/ios/getting-started) * ConceptsConcepts Concepts* [Application Lifecycle](https://developer.spotify.com/documentation/ios/concepts/application-lifecycle) * [Token Swap and Refresh](https://developer.spotify.com/documentation/ios/concepts/token-swap-and-refresh) * TutorialsTutorials Tutorials* [Advanced User Authentication](https://developer.spotify.com/documentation/ios/tutorials/advanced-auth) * [Content Linking](https://developer.spotify.com/documentation/ios/tutorials/content-linking) * [Making Remote Calls](https://developer.spotify.com/documentation/ios/tutorials/making-remote-calls) Reference* [iOS SDK Reference](https://developer.spotify.com/documentation/ios/reference) This SDK lets you offload complexity to the main Spotify application such as: playback, authentication, networking, and offline caching. This means that you can focus on making your own user experience delightful. Getting started --------------- We have a friendly [Getting Started](https://developer.spotify.com/documentation/ios/getting-started) guide which walks you through configuring your Xcode project, as well as authenticating users, connecting to the Spotify main application, and subscribing to player state changes. To use the Spotify iOS SDK, your application will need to get the user's permission to control playback remotely first. We provide built-in support for this (as seen in the [User Authentication section of the Getting Started](https://developer.spotify.com/documentation/ios/getting-started#set-up-user-authentication) ), and [additional scopes can be requested](https://developer.spotify.com/documentation/web-api/concepts/scopes) for making calls to the Spotify Web API. In the [iOS SDK GitHub](https://github.com/spotify/ios-sdk) , you will find a **Demo Projects** folder containing numerous demo applications with full source provided to help you build your first application with the iOS SDK. ### Key features * Lightweight SDK * Authentication * Always-in-sync Playback (via the Spotify main application) * Offline support \* * Built-in networking, track relinking, and caching support \*Excludes calls to the Web API. User must initially authenticate your application, which requires an internet connection. Download -------- The latest stable version of the iOS SDK can be downloaded from [GitHub](https://github.com/spotify/ios-sdk/releases) . ### Requirements The framework requires a deployment target of iOS 12 or higher. The following architectures are supported in the SDK: * device: arm64 * simulator: arm64 x86\_64 A physical iOS device is needed to install the Spotify app. [Learn more about building to devices](https://help.apple.com/xcode/mac/current/#/dev60b6fbbc7) . Documentation ------------- The documentation is organized as follows: * Concepts that clarify key topics * Tutorials, which serve as an introduction to important topics when using iOS SDK * Reference, the API specification API documentation ----------------- The download packages include comprehensive documentation of all API classes in the `/docs` folder. You can also read the documentation [online](https://spotify.github.io/ios-sdk/html) . Support ------- Please report problems with this SDK through the [public issue tracker](https://github.com/spotify/ios-sdk/issues) on GitHub. Legal ----- Note that by using Spotify iOS SDK, you accept our [Developer Terms of Service](https://developer.spotify.com/terms) . --- # Design & Branding Guidelines | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/design#main) Design Guidelines * [Introduction](https://developer.spotify.com/documentation/design#introduction) * [Attribution](https://developer.spotify.com/documentation/design#attribution) * [Using our content](https://developer.spotify.com/documentation/design#using-our-content) * [Browsing Spotify content](https://developer.spotify.com/documentation/design#browsing-spotify-content) * [Linking to Spotify](https://developer.spotify.com/documentation/design#linking-to-spotify) * [Playing views](https://developer.spotify.com/documentation/design#playing-views) * [Showing entities](https://developer.spotify.com/documentation/design#showing-entities) * [Using our logo](https://developer.spotify.com/documentation/design#using-our-logo) * [Using our colors](https://developer.spotify.com/documentation/design#using-our-colors) * [Logos and naming restrictions](https://developer.spotify.com/documentation/design#logos-and-naming-restrictions) * [Fonts](https://developer.spotify.com/documentation/design#fonts) Design & Branding Guidelines ============================ Introduction ------------ Welcome to our hub for partner guidelines and assets. We want to make it easy for you to integrate Spotify in your platform while respecting our brand and legal/licensing restrictions. These guidelines are meant to help any external developer integrating Spotify into their product while ensuring all Spotify users receive the same delightful user experience - no matter which platform they listen on. By using these resources, you accept our [Developer Terms of Service](https://developer.spotify.com/terms) . Usage of these resources may also be covered by the [Spotify End User Agreement](https://www.spotify.com/legal/end-user-agreement/) and our [Privacy Policy](https://www.spotify.com/legal/privacy-policy/) . * * * Attribution ----------- ![](https://developer-assets.spotifycdn.com/images/guidelines/design/attribution.svg) ### When does this apply? Content available through Spotify is owned by many different rights holders. If you use any Spotify metadata (including artist, album and track names, album artwork, and audio playback) it must always be accompanied by the Spotify brand. ### Attribute with the Spotify logo To comply with our licensing agreements, you must always attribute content from Spotify with the logo. In partner integrations, you should always use our full logo (icon + wordmark). We do allow using only our icon if it's featured as an app icon on the app screen of a device. ### Spotify full logo and icon * The full logo is the combination of a wordmark with our icon. * Our icon is a shorter version of our logo. Only use it if you do not have enough room for the full logo. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/full-logo-framed.svg) Full logo ![](https://developer-assets.spotifycdn.com/images/guidelines/design/icon-framed.svg) Icon Full logo and icon use must comply with our [Logo & Color Guidelines](https://developer.spotify.com/documentation/design#using-our-logo) . * * * Using our content ----------------- ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-our-content.svg) ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-our-content-example1.svg) YES The artwork must be kept in its original form, and its corners rounded according to the guidelines below. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-our-content-example2.svg) NO Don’t crop the artwork in any way. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-our-content-example3.svg) NO Don’t overlay images or text on top of the artwork. Don’t cover the artwork with playback controls. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-our-content-example4.svg) NO Don’t place your brand or logo on top of album artwork. ### When does this apply? If you're using artwork and/or metadata provided by Spotify. ### Follow these guidelines: #### For album and podcast artwork * You may only use the artwork provided by Spotify. * Artwork must be kept in its original form. Don't animate or distort it in any way. This includes applying overlays and blurring. * Artwork corners must be rounded to create optical blending with nearby UI elements. Small & medium devices should use a 2px corner radius, whereas large devices should use a 4px corner radius. * If screen real estate is limited, it's OK to not include any album artwork. #### For metadata * Track, artist, playlist, and album titles must always be presented with the metadata provided by Spotify. * The metadata must always be legible. * You may truncate metadata if space is limited. The user should always be able to view the entire metadata. * Don't manipulate any content or metadata. #### For podcasts For podcasts, two sets of metadata need to be supported: * Title of episode * Podcast name We recommend using two lines in your layout for the title of the episode, since podcast episodes often have longer titles than music. The third line is then used for the podcast name. #### For audiobooks For audiobooks, two sets of metadata need to be supported and one is suggested. * Title of book * Name of Author * Chapter if sharing #### Considerations Your layout should be able to accommodate these character counts: * Playlist/album name: 25 characters * Artist name: 18 characters * Track name: 23 characters * * * Browsing Spotify content ------------------------ ![](https://developer-assets.spotifycdn.com/images/guidelines/design/browsing-spotify-content.svg) ### When does this apply? If your app links to a user's Spotify account and there's a dedicated space to display Spotify content. Platforms that aggregate content from multiple audio providers must give Spotify fair treatment - anything made available to all other partners must be available to Spotify. ### Follow these guidelines: ### Content provided by Spotify * Spotify will provide rows - or shelves - of recommended content. * Spotify provides metadata and decides what metadata should be shown to the user, such as headlines and naming of unique contexts and groups of contexts, for all relevant surfaces. * Spotify should determine and populate your content categories. We've optimised our APIs to cover several use cases and serve the most relevant content to each user. ### How to display provided content * Don't manipulate any content or metadata. * Spotify content should never be seated next to content from similar services. * Dedicate the full row (shelf) in the view to Spotify content. * Never show more than 20 items in a content set. At the end of each content set, a link to the Spotify app should allow listeners to keep exploring the category. * Use Spotify's logo or icon to attribute content. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/browsing-spotify-content-examples.svg) YES The full row (shelf) in the view should be dedicated to Spotify content. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/browsing-spotify-content-examples-2.svg) NO Spotify content should never be seated next to content from similar services. * * * Linking to Spotify ------------------ ![](https://developer-assets.spotifycdn.com/images/guidelines/design/linking-to-spotify.svg) ### When does this apply? On a platform where Spotify already exists. If you have built an integration on a platform where the Spotify client exists (mobile and desktop integrations), always link to the Spotify app. The Spotify app is the default playback mechanism. For full access to Spotify functionality, users should be directed to the Spotify application installed on the partner platform. If the app is not installed, the user should be directed to the app store so that they can install Spotify. ### Using Spotify metadata If you use any Spotify metadata (including artist, album and track names, album artwork and audio playback) it must always link back to the Spotify Service. ### How to link to Spotify * If the Spotify app is not installed then the link should say, GET SPOTIFY FREE * If the Spotify app is installed then use any of the following text strings: OPEN SPOTIFY, PLAY ON SPOTIFY or LISTEN ON SPOTIFY The link to Spotify must follow [Spotify's attribution requirements](https://developer.spotify.com/documentation/design#attribution) and be accessible in your companion app. * * * Playing views ------------- ![](https://developer-assets.spotifycdn.com/images/guidelines/design/playing-views.svg) ### When does this apply? When you're showing any playing views in your app. ### Follow these guidelines: * Follow [Spotify's attribution requirements](https://developer.spotify.com/documentation/design#attribution) , you must always attribute content from Spotify with either the Spotify logo or icon. * Follow the artwork and metadata requirements. * Always link to the Spotify app (when the Spotify client is available on platform). ### Our recommendation: It is recommended that no play controls other than play/pause are provided in your app. ### Why? Disabling and enabling play controls in response to restricted actions for Spotify Free may result in a confusing experience for the user. For example, the user may not understand why the skip back option has been disabled. Rather than explaining these restrictions to the user or creating a frustrating UX, we recommended you don't provide play controls. If you choose to show play controls in your app, the following requirements need to be followed: ### Handling Spotify Free restricted actions in your companion app * Use the restrictions returned in PlaybackRestrictions to correctly set the playback state in the companion app and to respond to the user when they try to perform a restricted action. * Play controls must either have a disabled state to indicate that they are restricted or they should not be displayed at all. * Make clear that the track progress bar is for information only - there should be no indication that the user can seek. ### Upgrade information in Spotify Free When the user tries to perform a restricted action you may display this messaging. Spotify Premium lets you play any track, podcast episode or audiobook, ad-free and with better audio quality. Go to spotify.com/premium to try it for free. ### Handling playback actions for podcasts in your companion app * Podcasts need to have the option to seek 15 seconds forward or backwards. * Audiobook samples also need to have the option to seek 15 seconds forward or backwards. * You can parse the track URI in order to differentiate between podcast episodes and regular tracks. In all playback views where content from Spotify is playing (fullscreen views, widgets, bars, skipped song notifications) make sure to follow these guidelines: ![](https://developer-assets.spotifycdn.com/images/guidelines/design/playback-views-dont.svg) DON'T * Crop artwork * Overlay images or text on top of artwork * Place the logo over artwork ![](https://developer-assets.spotifycdn.com/images/guidelines/design/playback-views-do.svg) DO * Extract artwork color for background ([Android Palette](https://developer.android.com/reference/android/support/v7/graphics/Palette) ). If not possible, use Spotify color #191414. ### Liking a song The Like feature should signal back to Spotify and the liked content must not be saved by the partner. When the user taps the + icon, they are liking a song or episode. The icon should change to its active state and show a message saying "Added to Liked Songs" or "New Episodes". If the user taps the + icon again to unlike the song, show a message saying "Removed from Liked Songs" or "Removed from New Episodes". The like action is always represented with the + icon and can be downloaded here: #### Download Like icon [.svg](https://developer.spotify.com/images/guidelines/design/like-icon-svg.zip) [.png](https://developer.spotify.com/images/guidelines/design/like-icon-png.zip) ![States for the Like icon](https://developer-assets.spotifycdn.com/images/guidelines/design/liking.svg) States for the Like icon * * * Showing entities ---------------- ![Graphic of Spotify tracks being displayed on a mobile phone](https://developer-assets.spotifycdn.com/images/guidelines/design/showing-entities.svg) ### When does this apply? In Spotify Free, for on-demand playback and shuffle play. ### Follow these guidelines For Spotify Free, you have to support two types of layouts for tracklists when showing a playlist/album entity: For on-demand playback, the user will be able to see and play all tracks in the playlist/album. For shuffle play the user will only be able to see a content summary of the playlist/album and then start shuffle playback. The user can't pick a particular song to play, it will start playback in shuffle. ### Displaying explicit content Using the [Web API](https://developer.spotify.com/documentation/web-api) , your app can determine whether or not a track or a podcast episode is marked as containing explicit content. Consider using this information in your app to help users discover the content that is appropriate for them. Apps that serve users in South Korea should follow local regulations governing explicit content. When displaying a tracklist or a piece of content to a user in South Korea, your app must display an explicit content badge next to the title of any explicit track or podcast episode. See the [Web API reference documentation for more information about the `explicit` field.](https://developer.spotify.com/documentation/web-api/reference/get-track) | | | | --- | --- | | ![](https://developer.spotify.com/images/guidelines/design/19badge-light.png) | Sample explicit content badge for a white background | | ![](https://developer.spotify.com/images/guidelines/design/19badge-dark.png) | Sample explicit content badge for a dark background | * * * Using our logo -------------- ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-our-logo.svg) We are very proud of our logo. Follow these guidelines to ensure it always looks its best. Our full logo is the combination of our logo icon and the wordmark. [Download Full Logo](https://developer.spotify.com/images/guidelines/design/2024-spotify-full-logo.zip) [Download Icon](https://developer.spotify.com/images/guidelines/design/2024-spotify-logo-icon.zip) ![](https://developer-assets.spotifycdn.com/images/guidelines/design/logo.svg) ### Using the icon Our icon is a shorter version of our logo. Use the icon on its own only if you do not have enough room for the full logo or in cases when the Spotify brand has already been established. While the icon can exist without the wordmark, the wordmark should never exist without the icon. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/icon1.svg) ![](https://developer-assets.spotifycdn.com/images/guidelines/design/icon2.svg) ![](https://developer-assets.spotifycdn.com/images/guidelines/design/icon3.svg) ![](https://developer-assets.spotifycdn.com/images/guidelines/design/icon4.svg) ### Using the logo The Spotify green logo, pictured top left, is our primary logo colorway, and it should only be used with black, white, and non-duotoned photography. ### Which color logo to use The Spotify green logo should only be used on a black or white background, for any other background you should use a monochrome logo. The black logo should be used on light colored backgrounds. The white logo should be used on dark colored backgrounds. ### Legibility Our logo should always be legible and impactful. Always apply the logo and the icon's exclusion zone to isolate the logo from competing visual elements such as a busy area of an image, low contrast areas where legibility is compromised, or on top of text or supporting graphics. The exclusion zone is equal to half the height of the icon (marked as × in the diagram). ![](https://developer-assets.spotifycdn.com/images/guidelines/design/legibility.svg) ### Minimum size Establishing a minimum size ensures that the impact and legibility of the logo aren't compromised. ![Spotify logo](https://developer.spotify.com/images/guidelines/design/logo-size.svg) The Spotify logo should never be smaller than 70px in digital or 20mm in print. ![Spotify icon](https://developer.spotify.com/images/guidelines/design/logo-size2.svg) The Spotify icon should never be smaller than 21px in digital or 6mm in print. ### Logo misuse It's important that the appearance of the logo remains consistent. The logo should not be misinterpreted, modified, or added to. Its orientation, color, and composition should remain as indicated in this document — there are no exceptions. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/logo-misuse1.svg) NO Don't rotate the logo ![](https://developer-assets.spotifycdn.com/images/guidelines/design/logo-misuse2.svg) NO Don't fill the lines of the logo ![](https://developer-assets.spotifycdn.com/images/guidelines/design/logo-misuse3.svg) NO Don't stretch or alter the shape of the logo ![](https://developer-assets.spotifycdn.com/images/guidelines/design/logo-misuse4.svg) NO Don't use the logo in a sentence or as a letter ![](https://developer-assets.spotifycdn.com/images/guidelines/design/logo-misuse5.svg) NO Don't use the logo to make new objects or shapes ![](https://developer-assets.spotifycdn.com/images/guidelines/design/logo-misuse6.svg) NO Don't place the logo in a busy area, or in low-contrast areas where legibility is compromised * * * Using our colors ---------------- While embracing a much more colorful language in our brand communications, Spotify Green is our resting color, used whenever Spotify's voice needs to be recognizable. ![](https://developer-assets.spotifycdn.com/images/guidelines/design/colors.svg) ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-colors1.svg) YES Do get creative with surprising color combinations ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-colors2.svg) YES Do choose colors with high contrast to ensure accessibility ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-colors3.svg) NO Don't introduce new colors outside our brand palette ![](https://developer-assets.spotifycdn.com/images/guidelines/design/using-colors4.svg) NO Don't use over-saturated colors for CMYK printing * * * Logo and naming restrictions ---------------------------- ### Naming your application If you are registering your application with us (on the [Dashboard page](https://developer.spotify.com/dashboard) ) you will need to enter the name of your app. This name will be used in communications to your app's users when you seek authorization to access their data. We have a few pointers to consider when naming your app: The app name should not include 'Spotify' or be similar to 'Spotify' in sound or spelling. It shouldn't imply endorsement by Spotify, but suggesting to users that it is 'for Spotify' is acceptable. ### Your application's logo Your logo should not include, or look similar to the Spotify logo or any of its brand elements (e.g. Spotify Green, the circle, and the waves). Don't incorporate Spotify's trademarks, in whole or in part, in the name of your company, product, application, service, or website. ### Don't pair brands Don't use the Spotify brand together with any other brand or in any co-branded communications. Pairing of brands is not permitted under our Developer Terms. * * * Fonts ----- ![](https://developer-assets.spotifycdn.com/images/guidelines/design/fonts.svg) ### What font to use? We recommend you to use the default sans-serif font for the platform you are working on. Try commonly available defaults in this order: * Default sans-serif for the platform * Helvetica Neue * Helvetica * Arial * * * Thank you! ---------- For additional programming resources, check out Stack Overflow (tag: Spotify). --- # Accessibility Guidelines | Spotify for Developers [Skip to content](https://developer.spotify.com/documentation/accessibility#main) Accessibility Guidelines * Introduction[Introduction](https://developer.spotify.com/documentation/accessibility#introduction) Introduction* [What is Accessibility?](https://developer.spotify.com/documentation/accessibility#what-is-accessibility) * [Accessibility in the SDLC](https://developer.spotify.com/documentation/accessibility#accessibility-in-the-software-development-lifecycle) * [How to Use This Guide](https://developer.spotify.com/documentation/accessibility#how-to-use-this-guide) * Quick Wins[Quick Wins](https://developer.spotify.com/documentation/accessibility#quick-wins) Quick Wins* [Alt-text in Images](https://developer.spotify.com/documentation/accessibility#alt-text-in-images) * [Animations](https://developer.spotify.com/documentation/accessibility#animations) * [Buttons](https://developer.spotify.com/documentation/accessibility#buttons) * [Color Contrast](https://developer.spotify.com/documentation/accessibility#color-contrast) * [Headers](https://developer.spotify.com/documentation/accessibility#headers) * [Modality](https://developer.spotify.com/documentation/accessibility#modality) * [Multimodality](https://developer.spotify.com/documentation/accessibility#multimodality) * [Order of Actions](https://developer.spotify.com/documentation/accessibility#order-of-actions) * [Share Buttons](https://developer.spotify.com/documentation/accessibility#share-buttons) * Medium Term Wins[Medium Term Wins](https://developer.spotify.com/documentation/accessibility#medium-term-wins) Medium Term Wins* [Navigation](https://developer.spotify.com/documentation/accessibility#navigation) * [Order and Grouping](https://developer.spotify.com/documentation/accessibility#order-and-grouping) * [Semantics](https://developer.spotify.com/documentation/accessibility#semantics) * Intensive Wins[Intensive Wins](https://developer.spotify.com/documentation/accessibility#intensive-wins) Intensive Wins* [Master Assistive Technologies](https://developer.spotify.com/documentation/accessibility#master-assistive-technologies) * [Master States in Accessibility](https://developer.spotify.com/documentation/accessibility#master-states-in-accessibility) Accessibility Guidelines ======================== Introduction ------------ ### What is Accessibility? Info: Accessibility (hereafter abbreviated to A11y — as in, 'a', then 11 characters, and then 'y') is the body of work involved in (i) making your application available to all and (ii) in providing equitable experiences to users, context and abilities notwithstanding. Our mission at Spotify is to allow billions of fans the opportunity to enjoy and be inspired by artists' work. Because our applications are for everyone, [product a11y is now a core focus for Spotify](https://newsroom.spotify.com/2021-12-03/spotify-joins-the-valuable-500-with-a-commitment-to-disability-inclusion/) . As developers extending the Spotify experience to our communities elsewhere, we have the responsibility to our users to create a safe and equitable space for them, regardless of the manner in which they use our applications and interface with their devices. ![WCAG Map - In the center it says WCAG 2.1 and is surrounded by Perceivable, Operable, Robust and Understandable. Perceivable has a cartoon blind user and is defined as Information and user interface components must be presentable to users in ways they can perceive. Operable has a picture of two hands using a tablet computer and is defined as User interface components and navigation must be operable. Robust has an image of a laptop, headphones and braille display connected by arrows and is defined as Content must be robust enough that it can be interpreted reliably by a wide variety of user agents, including assistive technologies. Understandable has a cartoon woman using a laptop with a light bulb above her head as if she had a good idea and is defined as Information and the operation of user interface must be understandable.](https://developer-assets.spotifycdn.com/images/a11y/wcag-map.png) _Abbreviated version of [The WCAG map by Intopia](https://intopia.digital/wp-content/uploads/2019/10/2019-WCAG2.1-Map-Intopia-plus-reading-order.pdf) ._ **“Who might this experience exclude?”** is a question we answer every time we make implementation choices in our applications. In everyday life, stores that can only be accessed by a staircase have actively made the decision to exclude wheelchair users, parents with strollers, shoppers with wheel bags. Every design decision is a stance on inclusion, or lack thereof. Susan Goltsman, co-author of [Play for All Guidelines](https://www.worldcat.org/title/27241984) and [The Inclusive City](https://www.worldcat.org/title/61247468) , has popularly described inclusion as allowing a variety of ways for people to experience one thing (like your application), rather than availing only one experience for everybody. If your end goal for the “who might this experience exclude?” question is to get to the answer “no one” - then this is the right guide for you to use to deliver a high quality application that is at par with Spotify’s core value of inclusion for all. Testing accessibility manually is indispensable as automated tests will only catch a small percentage of issues and will not validate the experience as a whole. Info: As an application developer, remember to make it possible and seamless for yourself to toggle between enabling and disabling a11y controls for your application as you develop it, much like a light switch gives users autonomy over the decision to have their bulbs on or off. Configuring your devices so it is quick and easy to test with assistive technologies, removes friction and saves time. You will find yourself testing more and more often. ### Accessibility in the Software Development Lifecycle A11y done right results in high quality applications. Prioritizing a11y early on in your development process reduces regression and ensures your application includes everyone from the onset. Info: This guide assumes you have some understanding of a11y at a foundational level. At any point, should you need further reference material, the World Wide Web Consortium (W3C)’s Web A11y Institute has published the [Fundamentals of A11y resource](https://www.w3.org/WAI/fundamentals/) covering a range of topics and in-depth contexts also relevant to this guide. The image below is [Jason Dippel’s take on baking accessibility into the early stages of your software development lifecycle(SDLC)](https://medium.com/hootsuite-engineering/building-an-accessible-product-eae6b3f3c2d6) . We agree with the recommendation that accessibility should be baked into the SDLC as follows: \_ between the Wireframe and Product Backlog stage as part of the User Experience Design process, \_ as part of Sprints that then inform the Sprints Backlog and between the Product Backlog and Deployed product as part of the User Experience Research process, effectively saving you time and money down the road. ![Jason Dippel's illustration of Bake-In accessibility. Image shows the Software Development Life Cycle (SDLC) against a yellow background. Different stages of the SDLC are represented as blue quadrilaterals (squares and rectangles) and connected with black dotted lines. From Left to Right, the stages of the SDLC in the diagram are Wireframe, Product Backlog, Sprint Backlog, Shippable Product and Deployed Product. Accessibility is represented as a navy blue circle, and juxtaposed against the dotted black lines between different stages where Jason recommends baking in accessibility into the SDLC.](https://developer-assets.spotifycdn.com/images/a11y/bake-in-accessibility.png) ### How to Use this Guide This guide will focus on levelling up your skills so that you can identify a11y gaps in the applications you have already developed and work to fix them, or use the tools in this guide as you begin to develop a new application. The guide is divided into three sections, all designed as task lists to guide you on your quest to create a high quality and accessible application. The sections are organized in order of ease of implementation, but all recommendations are equally important and should be prioritized in your application development. They are: * [quick wins](https://developer.spotify.com/documentation/accessibility#quick-wins) , * [medium-term wins](https://developer.spotify.com/documentation/accessibility#medium-term-wins) , and * [intensive wins](https://developer.spotify.com/documentation/accessibility#intensive-wins) Quick Wins ---------- Accessibility quick wins are modifications that take a short amount of time to implement in your application as a first step to making it more accessible for all. ### Alt-text in Images All visual and non-text elements (images, GIFs, graphs, charts) in your application should be accompanied by alternative text (alt-text for short), which is text that describes your non-text elements in detail, providing necessary context for assistive technology users. **A11y Actions:** 1. Add the alt-text attribute to all your image elements, for example, `Two kittens playing with a ball of yarn` 2. Alternatively, write detailed captions under your non-text elements 3. For purely decorative images on a page, consider adding an empty `` attribute so screen readers can skip them altogether **Resources:** * [WebAim’s guide to alternative text](https://webaim.org/techniques/alttext/) * [W3C’s guide to text-alternatives in images](https://www.w3.org/WAI/tutorials/images/) ### Animations Info: As an application developer, it is important to honor system settings. In-app settings are ok too, but should be superseded by system preferences that a user has already specified. Animations on the web and mobile have been known to trigger seizures, induce nausea or trigger headaches and more. It is also not uncommon for users to turn animations off to meet their preferences, for example, optimize their device performance or save battery. As such, it is important to incorporate animations in a way that is inclusive of all without causing harm. **A11y Actions:** 1. Adopt the three flashes or less [recommendation from WCAG](https://www.w3.org/TR/WCAG21/#three-flashes-or-below-threshold) , which stipulates that your animation should not have any more than a maximum of three flashes in a one second period. 2. Give users [full control of the animations](https://www.w3.org/TR/WCAG21/#pause-stop-hide) in your application, so that they can pause the animations, stop the animations or hide them from a page altogether should they prefer to. 3. Where user interaction on a page i.e. scrolling up and down triggers animation, add provisions to disable or reduce this motion-induced animation. **Resources:** * [University of Maryland’s Photosensitive Epilepsy Analysis Tool](https://trace.umd.edu/peat/) ### Buttons Buttons are an important way to deliver calls-to-action to your application’s users. **A11y Actions:** 1. Icon-only buttons should include button labels to provide context around button actions. 2. Disabled buttons are often used to communicate that an action needs to be completed first before moving to the next step. However, disabled buttons are inaccessible to screen readers and often, it is unclear to an assistive tech user what the final outcome of completing a couple of steps is. Adding labels that describe why a button is disabled and what needs to happen to enable it is a good first step. 3. With button sizing, make sure to provide a large area for user interaction, for example, [in iOS the minimum touch target size is 44x44 points](https://developer.apple.com/design/human-interface-guidelines/foundations/layout/) , and in Android it is 48x48 points. 4. Consider using in-built button elements by default (on the web as well as on mobile) as they have predefined styles and a11y features like touch target size, tab focus, focus highlight and interaction shortcuts (not everyone uses a pointing device to interact with components) written into them. **Resources:** * [Accessibility guidelines on links, images and other clickable elements](http://web-accessibility.carnegiemuseums.org/content/buttons/) * Find detailed recommendations about share buttons and best practices around them in the [Share Buttons](https://developer.spotify.com/documentation/accessibility#share-buttons) section of this a11y guide. ### Color Contrast Color contrast is a measure of how different colors are from each other - colors that are opposites have the highest contrast and those that are next to each other on the color wheel have the least contrast. **A11y Actions:** WCAG recommends that 1. the color contrast between background and foreground elements should have a 4.5:1 contrast ratio, 2. icons for user interfaces that are essential should have a 3:1 contrast ratio. **Resources:** * You can use [this color contrast resource by WebAIM](https://webaim.org/articles/contrast/) to guide you on what ratio to aim for. * You can use [WebAIM’s color contrast checker tool](https://webaim.org/resources/contrastchecker/) to confirm that the colors you are using are appropriately contrasted. ### Headers Page headers are primarily how screen readers and other assistive technologies navigate pages on the web. Correctly identifying page headers makes it possible for assistive technology users to get a quick overview of what’s on the page and jump to the sections they are interested in. **A11y Actions:** 1. Use HTML markup to identify page headers. For example, [here are guidelines on using the `
` element on the web](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header) 2. Organize your headers hierarchically, being careful not to skip levels i.e. H2 should come after H1, do not skip to H3 or H4 after H1. 3. On native mobile apps, you can also configure anything that represents a header as a heading to let the users quickly explore what the screen has to offer and speed up navigation, by jumping from one to another with a simple gesture. **Resources:** * [Web Accessibility Initiative (WAI) Guide to Headings](https://www.w3.org/WAI/tutorials/page-structure/headings/) * [Digitally Accessible Headings by Princeton University](https://accessibility.princeton.edu/how/content/headings) ### Modality Modals are pieces of information that pop up, and are commonly used to nudge a user to complete a specific action, or to provide more information. **A11y Actions:** Because modals are informative but also disrupt the flow of information on a page, it is important to give the user full control over opening and closing modals throughout your application. An accessible modal is one that 1. provides the right information to screen readers 2. manages keyboard focus properly You can use HTML and ARIA to serve semantic information and work with JavaScript to change behavior and CSS to dictate appearance. Info: A common mistake with modals in applications is that the focus doesn't move to the modal or if it does, focus remains on the content underneath the modal. Be sure to test your application modals and fix this behavior where it occurs. **Resources:** * [How to test an alert / modal dialog](https://www.magentaa11y.com/checklist-native/alert-dialog/) ### Multimodality Important information should be conveyed in multiple modes, that is - color, haptics, sound, through messages and iconography - so everyone can perceive it. For example, consider a text box in a form that is highlighted in red when the user enters invalid information: colorblind users may not perceive it and screen reader users may also miss it if it is not actively configured by developers. Adding some messaging next to it with specific information on why the information entered is invalid and how the user can fix it, will make it much easier for everyone to identify. Redundancy helps in this case. The more modes your information is presented in, the easier it will be to understand. **Resources:** * [WCAG 2.1 (Level A) 1.4.1 Success Criteria: Use of Color](https://www.w3.org/WAI/WCAG21/quickref/?showtechniques=141#use-of-color) ### Order of Actions If your application presents the user with a choice of actions at any point, be sure to present the least destructive option first from the range of choices, for example, when asking the user to confirm their selected action to delete a playlist, the **OK** option should be highlighted first instead of the **CANCEL** option; or if you have **CANCEL** and **CONFIRM** as options for the user to pick from, highlight **CANCEL** first because remedial actions are easier (when one cancels, they can redo a task. Info: For time management reasons, should a user select **CANCEL**, consider returning them to the most-recent state i.e. to the populated version of a form rather than discarding all their input. **Resources:** * [WebAIM’s guide to contrast and color accessibility](https://webaim.org/articles/contrast/) ### Share Buttons Providing ways for users to share your application across different social media is one of the most common ways to spread the word about your application and draw users’ attention to it. A minimalist / common approach is to use hyperlinked social media icons to achieve this. Accessible icons are images which can be accessed equitably and whose function can be understood clearly by all application users. To make your icons accessible: **A11y Actions:** 1. Add alternative text to your icons that describes their purpose i.e. what to expect on click. For further reading on alt-text best practices, see the [images and alt text](https://developer.spotify.com/documentation/accessibility#alt-text-in-images) section. 2. Choose icon colors that have high contrast to your background and see the [color contrast](https://developer.spotify.com/documentation/accessibility#color-contrast) section for more detailed best practices. 3. Provide clarity by including accompanying on-screen text, usually a one-word descriptive label, next to your icons. Info: It is an accessible practice to include either alt-text or associated on-screen text with an icon. **Resources:** * [Accessibility guidelines on links, images and other clickable elements](http://web-accessibility.carnegiemuseums.org/content/buttons/) Medium-term Wins ---------------- Medium-term wins are modifications that take a bit more time to implement in your application than [accessibility quick wins](https://developer.spotify.com/documentation/accessibility#quick-wins) . These are key, and we strongly recommend that you prioritize incorporating them into your application. ### Navigation Structural presentation of a menu and its items i.e. in a list gives a good basis for assistive technologies to pick out menu items and serve corresponding functionality to assistive technology users. Coding menus semantically makes them adaptive to different scenarios i.e. different-size screens, varying zoom/ magnification levels and access via different assistive technologies. **A11y Actions:** 1. Place your menu in one consistent area across all pages in your application 2. Label your menus so they can be understood and differentiated easily 3. Highlight the currently selected / active item in your menu using HTML or ARIA i.e. 4. See the [Order and Grouping section](https://developer.spotify.com/documentation/accessibility#order-and-grouping) for best practices around grouping and ordering menu items Info: One of the best ways to check how accessible your navigation is, is to take on the [keyboard / no-mouse challenge](https://nomouse.org/) for web applications or the screen-reader challenge for mobile applications i.e. use your application with a screen-reader only ### Order and Grouping Grouping related items in your application makes it easier for screen readers to keep track of progress and overarching context as a user navigates the application. Any items that are grouped visually should also be represented similarly semantically. **A11y Actions:** 1. Ordered and unordered lists 2. Use unordered lists for menu items where content can be accessed and consumed in random order, and 3. Use ordered lists for menu items where systemic navigation matters 4. Adhere to rules of lists 5. Only have list tags (`
  • `) as children of your ordered and unordered lists. Avoid adding other types of elements to them. **Resources:** 1. [Principles of improving app accessibility in Android - groups of related content](https://developer.android.com/guide/topics/ui/accessibility/principles#content-groups) ### Semantics Semantic elements are those that provide context about the nature of content held within them and include elements like `
    `, ``, `
    `, `

    `, `