Web Playback SDK Reference
- The Spotify Platform can not be used to develop commercial streaming integrations. More information
- The Spotify Platform can not be used to develop applications that alter Spotify Content. More information
- You may not synchronize any sound recordings with any visual media, including any advertising, film, television program, slideshow, video, or similar content More information
- The Spotify Platform can not be used for non-interactive broadcasting. More information
Spotify.Player
Spotify.Player
| Description | The main constructor for initializing the Web Playback SDK. It should contain an object with the player name, volume and access token. | 
| Response | void | 
Code Example:
_10 window.onSpotifyWebPlaybackSDKReady = () => {_10   const token = '[My Spotify Web API access token]';_10   const player = new Spotify.Player({_10     name: 'Web Playback SDK Quick Start Player',_10     getOAuthToken: cb => { cb(token); }_10   });_10 }
| Parameter Name | Type | Description | Required | 
|---|---|---|---|
| name | String | The name of the Spotify Connect player. It will be visible in other Spotify apps | Required | 
| getOAuthToken | Function | This will be called every time you run Spotify.Player#connect or when a user's access token has expired (maximum of 60 minutes). You will be provided with a callbackparameter. You will need to execute this with a validaccess_tokenstring for a Spotify Premium user. | Required | 
| volume | Float | The default volume of the player. Represented as a decimal between 0 and 1. Default value is 1. | Optional | 
| enableMediaSession | Boolean | If set to true, the Media Session API will be set with metadata and action handlers. Default value is false. | Optional | 
Spotify.Player#connect
| Description | Connect our Web Playback SDK instance to Spotify with the credentials provided during initialization. | 
| Response | Returns a Promisecontaining aBoolean(eithertrueorfalse) with the success of the connection. | 
Code Example:
_10player.connect().then(success => {_10  if (success) {_10    console.log('The Web Playback SDK successfully connected to Spotify!');_10  }_10})
Spotify.Player#disconnect
| Description | Closes the current session our Web Playback SDK has with Spotify. | 
| Response | Void | 
Code Example:
_10player.disconnect()
Spotify.Player#addListener
| Description | Create a new event listener in the Web Playback SDK. Alias for Spotify.Player#on. | 
| Response | Returns a Boolean. Returnstrueif the event listener for theevent_nameis unique. See #removeListener for removing existing listeners. | 
Code Example:
_10player.addListener('ready', ({ device_id }) => {_10  console.log('The Web Playback SDK is ready to play music!');_10  console.log('Device ID', device_id);_10})
| Parameter Name | Type | Description | Required | 
|---|---|---|---|
| event_name | String | A valid event name. See Web Playback SDK Events. | Required | 
| callback | Function | A callback function to be fired when the event has been executed. | Required | 
Spotify.Player#removeListener
| Description | Remove an event listener in the Web Playback SDK. | 
| Response | Returns a Boolean. Returnstrueif the event name is valid with registered callbacks from #addListener. | 
Code Example:
_10// Removes all "ready" events_10player.removeListener('ready');_10// Remove a specific "ready" listener_10player.removeListener('ready', yourCallback)
| Parameter Name | Type | Description | Required | 
|---|---|---|---|
| event_name | String | A valid event name. See Web Playback SDK Events. | Required | 
| callback | Function | The callback function you would like to remove from the listener. If not provided, it will remove all callbacks under the event_name. | Optional | 
Spotify.Player#getCurrentState
| Description | Collect metadata on local playback. | 
| Response | Returns a Promise. It will return either a WebPlaybackState object or null depending on if the user is successfully connected. | 
Code Example:
_12player.getCurrentState().then(state => {_12  if (!state) {_12    console.error('User is not playing music through the Web Playback SDK');_12    return;_12  }_12_12  var current_track = state.track_window.current_track;_12  var next_track = state.track_window.next_tracks[0];_12_12  console.log('Currently Playing', current_track);_12  console.log('Playing Next', next_track);_12});
Spotify.Player#setName
| Description | Rename the Spotify Player device. This is visible across all Spotify Connect devices. | 
| Response | Returns a Promise. | 
Code Example:
_10player.setName("My New Player Name").then(() => {_10  console.log('Player name updated!');_10});
| Parameter Name | Type | Description | Required | 
|---|---|---|---|
| name | String | The new desired player name. | Required | 
Spotify.Player#getVolume
| Description | Get the local volume currently set in the Web Playback SDK. | 
| Response | Returns a Promisecontaining the local volume (as aFloatbetween 0 and 1). | 
Code Example:
_10player.getVolume().then(volume => {_10  let volume_percentage = volume * 100;_10  console.log('The volume of the player is ${volume_percentage}%');_10});
Spotify.Player#setVolume
| Description | Set the local volume for the Web Playback SDK. | 
| Response | Returns an empty Promise | 
Code Example:
_10player.setVolume(0.5).then(() => {_10  console.log('Volume updated!');_10});
| Parameter Name | Type | Description | Required | 
|---|---|---|---|
| volume | Float | The new desired volume for local playback. Between 0 and 1. Note: On iOS devices, the audio level is always under the user’s physical control. The volume property is not settable in JavaScript. Reading the volume property always returns 1. More details can be found in the iOS-specific Considerations documentation page by Apple. | Required | 
Spotify.Player#pause
| Description | Pause the local playback. | 
| Response | Returns an empty Promise | 
Code Example:
_10player.pause().then(() => {_10  console.log('Paused!');_10});
Spotify.Player#resume
| Description | Resume the local playback. | 
| Response | Returns an empty Promise | 
Code Example:
_10player.resume().then(() => {_10  console.log('Resumed!');_10});
Spotify.Player#togglePlay
| Description | Resume/pause the local playback. | 
| Response | Returns an empty Promise | 
Code Example:
_10player.togglePlay().then(() => {_10  console.log('Toggled playback!');_10});
Spotify.Player#seek
| Description | Seek to a position in the current track in local playback. | 
| Response | Returns an empty Promise | 
Code Example:
_10// Seek to a minute into the track_10player.seek(60 * 1000).then(() => {_10  console.log('Changed position!');_10});
| Parameter Name | Type | Description | Required | 
|---|---|---|---|
| position_ms | Integer | The position in milliseconds to seek to. | Required | 
Spotify.Player#previousTrack
| Description | Switch to the previous track in local playback. | 
| Response | Returns an empty Promise | 
Code Example:
_10player.previousTrack().then(() => {_10  console.log('Set to previous track!');_10});
Spotify.Player#nextTrack
| Description | Skip to the next track in local playback. | 
| Response | Returns an empty Promise | 
Code Example:
_10player.nextTrack().then(() => {_10  console.log('Skipped to next track!');_10});
Spotify.Player#activateElement
| Description | Some browsers prevent autoplay of media by ensuring that all playback is triggered by synchronous event-paths originating from user interaction such as a click. In the autoplay disabled browser, to be able to keep the playing state during transfer from other applications to yours, this function needs to be called in advance. Otherwise it will be in pause state once it’s transferred. | 
| Response | Returns an empty Promise | 
Code Example:
_10myActivateElementButton.addEventListener('click', () => {_10  // The player is activated. The player will keep the_10  // playing state once the state is transferred from other_10  // applications._10  player.activateElement();_10});_10// Transfer your currently playing track into your_10// application through device picker in Spotify APP.
Events
ready
| Description | Emitted when the Web Playback SDK has successfully connected and is ready to stream content in the browser from Spotify. | 
| Response | Returns a WebPlaybackPlayer object. | 
Code Example:
_10player.addListener('ready', ({ device_id }) => {_10  console.log('Connected with Device ID', device_id);_10});
not_ready
| Description | Emitted when the Web Playback SDK is not ready to play content, typically due to no internet connection. | 
| Response | Returns a WebPlaybackPlayer object. | 
Code Example:
_10player.addListener('not_ready', ({ device_id }) => {_10  console.log('Device ID is not ready for playback', device_id);_10});
player_state_changed
| Description | Emitted when the state of the local playback has changed. It may be also executed in random intervals. | 
| Response | Returns a WebPlaybackPlayer object. | 
Code Example:
_10player.addListener('player_state_changed', ({_10  position,_10  duration,_10  track_window: { current_track }_10}) => {_10  console.log('Currently Playing', current_track);_10  console.log('Position in Song', position);_10  console.log('Duration of Song', duration);_10});
autoplay_failed
| Description | Emitted when playback is prohibited by the browser’s autoplay rules. Check Spotify.Player#activateElement for more information. | 
| Response | Returns null | 
Code Example:
_10player.addListener('autoplay_failed', () => {_10  console.log('Autoplay is not allowed by the browser autoplay rules');_10});
Errors
initialization_error
| Description | Emitted when the Spotify.Playerfails to instantiate a player capable of playing content in the current environment. Most likely due to the browser not supporting EME protection. | 
Code Example:
_10player.on('initialization_error', ({ message }) => {_10  console.error('Failed to initialize', message);_10});
authentication_error
| Description | Emitted when the Spotify.Playerfails to instantiate a valid Spotify connection from the access token provided togetOAuthToken. | 
Code Example:
_10player.on('authentication_error', ({ message }) => {_10  console.error('Failed to authenticate', message);_10});
account_error
| Description | Emitted when the user authenticated does not have a valid Spotify Premium subscription. | 
Code Example:
_10player.on('account_error', ({ message }) => {_10  console.error('Failed to validate Spotify account', message);_10});
playback_error
| Description | Emitted when loading and/or playing back a track failed. | 
Code Example:
_10player.on('playback_error', ({ message }) => {_10  console.error('Failed to perform playback', message);_10});
Objects
WebPlaybackPlayer Object
This is an object that is provided in the ready event as an argument. WebPlaybackPlayer objects contain information related to the current player instance of the Web Playback SDK.
_10{ device_id: "c349add90ccf047f4e737492b69ba912bdc55f6a" }
WebPlaybackState Object
This is an object that is provided every time Spotify.Player#getCurrentState is called. It contains information on context, permissions, playback state, the user’s session, and more.
_26{_26  context: {_26    uri: 'spotify:album:xxx', // The URI of the context (can be null)_26    metadata: {},             // Additional metadata for the context (can be null)_26  },_26  disallows: {                // A simplified set of restriction controls for_26    pausing: false,           // The current track. By default, these fields_26    peeking_next: false,      // will either be set to false or undefined, which_26    peeking_prev: false,      // indicates that the particular operation is_26    resuming: false,          // allowed. When the field is set to `true`, this_26    seeking: false,           // means that the operation is not permitted. For_26    skipping_next: false,     // example, `skipping_next`, `skipping_prev` and_26    skipping_prev: false      // `seeking` will be set to `true` when playing an_26                              // ad track._26  },_26  paused: false,  // Whether the current track is paused._26  position: 0,    // The position_ms of the current track._26  repeat_mode: 0, // The repeat mode. No repeat mode is 0,_26                  // repeat context is 1 and repeat track is 2._26  shuffle: false, // True if shuffled, false otherwise._26  track_window: {_26    current_track: <WebPlaybackTrack>,                              // The track currently on local playback_26    previous_tracks: [<WebPlaybackTrack>, <WebPlaybackTrack>, ...], // Previously played tracks. Number can vary._26    next_tracks: [<WebPlaybackTrack>, <WebPlaybackTrack>, ...]      // Tracks queued next. Number can vary._26  }_26}
WebPlaybackTrack Object
This is an object that is provided inside track_window from the
WebPlaybackState Object. Track objects are Spotify Web API compatible objects
containing metadata on Spotify content.
_18{_18  uri: "spotify:track:xxxx", // Spotify URI_18  id: "xxxx",                // Spotify ID from URI (can be null)_18  type: "track",             // Content type: can be "track", "episode" or "ad"_18  media_type: "audio",       // Type of file: can be "audio" or "video"_18  name: "Song Name",         // Name of content_18  is_playable: true,         // Flag indicating whether it can be played_18  album: {_18    uri: 'spotify:album:xxxx', // Spotify Album URI_18    name: 'Album Name',_18    images: [_18      { url: "https://image/xxxx" }_18    ]_18  },_18  artists: [_18    { uri: 'spotify:artist:xxxx', name: "Artist Name" }_18  ]_18}
WebPlaybackError Object
This is an object that is provided in all error handlers from the Web Playback SDK. It is referred to as e and looks like this:
_10{ message: "This will contain a message explaining the error." }