{"note":"OpenAPI conversion -- returning structured metadata","name":"spotify-com","description":"Spotify Web API","version":"1.0.0","base_url":"https://api.spotify.com/v1","endpoints":96,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Spotify Web API\n@base https://api.spotify.com/v1\n@version 1.0.0\n@auth OAuth2\n@endpoints 96\n@hint download_for_search\n@toc albums(3), artists(5), shows(3), episodes(2), audiobooks(3), me(46), chapters(2), tracks(2), search(1), playlists(15), users(3), browse(5), audio-features(2), audio-analysis(1), recommendations(2), markets(1)\n\n@group albums\n@endpoint GET /albums/{id}\n@desc Get Album\n@required {id: str}\n@optional {market: str}\n@returns(200) An album\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /albums\n@desc Get Several Albums\n@required {ids: str}\n@optional {market: str}\n@returns(200) {albums: [any]} # A set of albums\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /albums/{id}/tracks\n@desc Get Album Tracks\n@required {id: str}\n@optional {market: str, limit: int=20, offset: int=0}\n@returns(200) Pages of tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group artists\n@endpoint GET /artists/{id}\n@desc Get Artist\n@required {id: str}\n@returns(200) {external_urls: any, followers: any, genres: [str], href: str, id: str, images: [map], name: str, popularity: int, type: str, uri: str} # An artist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /artists\n@desc Get Several Artists\n@required {ids: str}\n@returns(200) {artists: [map]} # A set of artists\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /artists/{id}/albums\n@desc Get Artist's Albums\n@required {id: str}\n@optional {include_groups: str, market: str, limit: int=5, offset: int=0}\n@returns(200) Pages of albums\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /artists/{id}/top-tracks\n@desc Get Artist's Top Tracks\n@required {id: str}\n@optional {market: str}\n@returns(200) {tracks: [map]} # A set of tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /artists/{id}/related-artists\n@desc Get Artist's Related Artists\n@required {id: str}\n@returns(200) {artists: [map]} # A set of artists\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group shows\n@endpoint GET /shows/{id}\n@desc Get Show\n@required {id: str}\n@optional {market: str}\n@returns(200) A show\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /shows\n@desc Get Several Shows\n@required {ids: str}\n@optional {market: str}\n@returns(200) {shows: [any]} # A set of shows\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /shows/{id}/episodes\n@desc Get Show Episodes\n@required {id: str}\n@optional {market: str, limit: int=20, offset: int=0}\n@returns(200) Pages of episodes\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group episodes\n@endpoint GET /episodes/{id}\n@desc Get Episode\n@required {id: str}\n@optional {market: str}\n@returns(200) An episode\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /episodes\n@desc Get Several Episodes\n@required {ids: str}\n@optional {market: str}\n@returns(200) {episodes: [map]} # A set of episodes\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group audiobooks\n@endpoint GET /audiobooks/{id}\n@desc Get an Audiobook\n@required {id: str}\n@optional {market: str}\n@returns(200) An Audiobook\n@errors {400: The request contains malformed data in path, query parameters, or body., 401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 404: The requested resource cannot be found., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /audiobooks\n@desc Get Several Audiobooks\n@required {ids: str}\n@optional {market: str}\n@returns(200) {audiobooks: [any]} # A set of audiobooks. If one of the requested audiobooks is unavailable then you'll find a `null` item in the `audiobooks` array where the audiobook object would otherwise be.\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /audiobooks/{id}/chapters\n@desc Get Audiobook Chapters\n@required {id: str}\n@optional {market: str, limit: int=20, offset: int=0}\n@returns(200) Pages of chapters\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group me\n@endpoint GET /me/audiobooks\n@desc Get User's Saved Audiobooks\n@optional {limit: int=20, offset: int=0}\n@returns(200) Pages of audiobooks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/audiobooks\n@desc Save Audiobooks for Current User\n@required {ids: str}\n@returns(200) Audiobook(s) are saved to the library\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /me/audiobooks\n@desc Remove User's Saved Audiobooks\n@required {ids: str}\n@returns(200) Audiobook(s) have been removed from the library\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/audiobooks/contains\n@desc Check User's Saved Audiobooks\n@required {ids: str}\n@returns(200) Array of booleans\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group chapters\n@endpoint GET /chapters/{id}\n@desc Get a Chapter\n@required {id: str}\n@optional {market: str}\n@returns(200) A Chapter\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /chapters\n@desc Get Several Chapters\n@required {ids: str}\n@optional {market: str}\n@returns(200) {chapters: [map]} # A set of chapters\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group tracks\n@endpoint GET /tracks/{id}\n@desc Get Track\n@required {id: str}\n@optional {market: str}\n@returns(200) {album: any, artists: [map], available_markets: [str], disc_number: int, duration_ms: int, explicit: bool, external_ids: any, external_urls: any, href: str, id: str, is_playable: bool, linked_from: map, restrictions: any, name: str, popularity: int, preview_url: str?, track_number: int, type: str, uri: str, is_local: bool} # A track\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /tracks\n@desc Get Several Tracks\n@required {ids: str}\n@optional {market: str}\n@returns(200) {tracks: [map]} # A set of tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group search\n@endpoint GET /search\n@desc Search for Item\n@required {q: str, type: [str]}\n@optional {market: str, limit: int=5, offset: int=0, include_external: str}\n@returns(200) {tracks: map, artists: map, albums: map, playlists: map, shows: map, episodes: map, audiobooks: map} # Search response\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group me\n@endpoint GET /me\n@desc Get Current User's Profile\n@returns(200) {country: str, display_name: str, email: str, explicit_content: any, external_urls: any, followers: any, href: str, id: str, images: [map], product: str, type: str, uri: str} # A user\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group playlists\n@endpoint GET /playlists/{playlist_id}\n@desc Get Playlist\n@required {playlist_id: str}\n@optional {market: str, fields: str, additional_types: str}\n@returns(200) {collaborative: bool, description: str?, external_urls: any, href: str, id: str, images: [map], name: str, owner: any, public: bool, snapshot_id: str, items: map, tracks: map, type: str, uri: str} # A playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /playlists/{playlist_id}\n@desc Change Playlist Details\n@required {playlist_id: str}\n@optional {name: str # The new name for the playlist, for example `\"My New Playlist Title\"`, public: bool # The playlist's public/private status (if it should be added to the user's profile or not): `true` the playlist will be public, `false` the playlist will be private, `null` the playlist status is not relevant. For more about public/private status, see [Working with Playlists](/documentation/web-api/concepts/playlists), collaborative: bool # If `true`, the playlist will become collaborative and other users will be able to modify the playlist in their Spotify client.  _**Note**: You can only set `collaborative` to `true` on non-public playlists._, description: str # Value for playlist description as displayed in Spotify Clients and in the Web API.}\n@returns(200) Playlist updated\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /playlists/{playlist_id}/tracks\n@desc Get Playlist Items [DEPRECATED]\n@required {playlist_id: str}\n@optional {market: str, fields: str, limit: int=20, offset: int=0, additional_types: str}\n@returns(200) Pages of tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint POST /playlists/{playlist_id}/tracks\n@desc Add Items to Playlist [DEPRECATED]\n@required {playlist_id: str}\n@optional {position: int, uris: str, uris: [str] # A JSON array of the [Spotify URIs](/documentation/web-api/concepts/spotify-uris-ids) to add. For example: `{\"uris\": [\"spotify:track:4iV5W9uYEdYUVa79Axb7Rh\",\"spotify:track:1301WleyT98MSxVHPZCA6M\", \"spotify:episode:512ojhOuo1ktJprKbVcKyQ\"]}`A maximum of 100 items can be added in one request. _**Note**: if the `uris` parameter is present in the query string, any URIs listed here in the body will be ignored._, position: int # The position to insert the items, a zero-based index. For example, to insert the items in the first position: `position=0` ; to insert the items in the third position: `position=2`. If omitted, the items will be appended to the playlist. Items are added in the order they appear in the uris array. For example: `{\"uris\": [\"spotify:track:4iV5W9uYEdYUVa79Axb7Rh\",\"spotify:track:1301WleyT98MSxVHPZCA6M\"], \"position\": 3}`}\n@returns(201) {snapshot_id: str} # A snapshot ID for the playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /playlists/{playlist_id}/tracks\n@desc Update Playlist Items [DEPRECATED]\n@required {playlist_id: str}\n@optional {uris: str, uris: [str], range_start: int # The position of the first item to be reordered., insert_before: int # The position where the items should be inserted.To reorder the items to the end of the playlist, simply set _insert_before_ to the position after the last item.Examples:To reorder the first item to the last position in a playlist with 10 items, set _range_start_ to 0, and _insert_before_ to 10.To reorder the last item in a playlist with 10 items to the start of the playlist, set _range_start_ to 9, and _insert_before_ to 0., range_length: int # The amount of items to be reordered. Defaults to 1 if not set.The range of items to be reordered begins from the _range_start_ position, and includes the _range_length_ subsequent items.Example:To move the items at index 9-10 to the start of the playlist, _range_start_ is set to 9, and _range_length_ is set to 2., snapshot_id: str # The playlist's snapshot ID against which you want to make the changes.}\n@returns(200) {snapshot_id: str} # A snapshot ID for the playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /playlists/{playlist_id}/tracks\n@desc Remove Playlist Items [DEPRECATED]\n@required {playlist_id: str, tracks: [map{uri: str}] # An array of objects containing [Spotify URIs](/documentation/web-api/concepts/spotify-uris-ids) of the tracks or episodes to remove. For example: `{ \"tracks\": [{ \"uri\": \"spotify:track:4iV5W9uYEdYUVa79Axb7Rh\" },{ \"uri\": \"spotify:track:1301WleyT98MSxVHPZCA6M\" }] }`. A maximum of 100 objects can be sent at once.}\n@optional {snapshot_id: str # The playlist's snapshot ID against which you want to make the changes. The API will validate that the specified items exist and in the specified positions and make the changes, even if more recent changes have been made to the playlist.}\n@returns(200) {snapshot_id: str} # A snapshot ID for the playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /playlists/{playlist_id}/items\n@desc Get Playlist Items\n@required {playlist_id: str}\n@optional {market: str, fields: str, limit: int=20, offset: int=0, additional_types: str}\n@returns(200) Pages of tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint POST /playlists/{playlist_id}/items\n@desc Add Items to Playlist\n@required {playlist_id: str}\n@optional {position: int, uris: str, uris: [str] # A JSON array of the [Spotify URIs](/documentation/web-api/concepts/spotify-uris-ids) to add. For example: `{\"uris\": [\"spotify:track:4iV5W9uYEdYUVa79Axb7Rh\",\"spotify:track:1301WleyT98MSxVHPZCA6M\", \"spotify:episode:512ojhOuo1ktJprKbVcKyQ\"]}`A maximum of 100 items can be added in one request. _**Note**: if the `uris` parameter is present in the query string, any URIs listed here in the body will be ignored._, position: int # The position to insert the items, a zero-based index. For example, to insert the items in the first position: `position=0` ; to insert the items in the third position: `position=2`. If omitted, the items will be appended to the playlist. Items are added in the order they appear in the uris array. For example: `{\"uris\": [\"spotify:track:4iV5W9uYEdYUVa79Axb7Rh\",\"spotify:track:1301WleyT98MSxVHPZCA6M\"], \"position\": 3}`}\n@returns(201) {snapshot_id: str} # A snapshot ID for the playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /playlists/{playlist_id}/items\n@desc Update Playlist Items\n@required {playlist_id: str}\n@optional {uris: str, uris: [str], range_start: int # The position of the first item to be reordered., insert_before: int # The position where the items should be inserted.To reorder the items to the end of the playlist, simply set _insert_before_ to the position after the last item.Examples:To reorder the first item to the last position in a playlist with 10 items, set _range_start_ to 0, and _insert_before_ to 10.To reorder the last item in a playlist with 10 items to the start of the playlist, set _range_start_ to 9, and _insert_before_ to 0., range_length: int # The amount of items to be reordered. Defaults to 1 if not set.The range of items to be reordered begins from the _range_start_ position, and includes the _range_length_ subsequent items.Example:To move the items at index 9-10 to the start of the playlist, _range_start_ is set to 9, and _range_length_ is set to 2., snapshot_id: str # The playlist's snapshot ID against which you want to make the changes.}\n@returns(200) {snapshot_id: str} # A snapshot ID for the playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /playlists/{playlist_id}/items\n@desc Remove Playlist Items\n@required {playlist_id: str, items: [map{uri: str}] # An array of objects containing [Spotify URIs](/documentation/web-api/concepts/spotify-uris-ids) of the tracks or episodes to remove. For example: `{ \"items\": [{ \"uri\": \"spotify:track:4iV5W9uYEdYUVa79Axb7Rh\" },{ \"uri\": \"spotify:track:1301WleyT98MSxVHPZCA6M\" }] }`. A maximum of 100 objects can be sent at once.}\n@optional {snapshot_id: str # The playlist's snapshot ID against which you want to make the changes. The API will validate that the specified items exist and in the specified positions and make the changes, even if more recent changes have been made to the playlist.}\n@returns(200) {snapshot_id: str} # A snapshot ID for the playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group me\n@endpoint GET /me/playlists\n@desc Get Current User's Playlists\n@optional {limit: int=20, offset: int=0}\n@returns(200) A paged set of playlists\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint POST /me/playlists\n@desc Create Playlist\n@required {name: str # The name for the new playlist, for example `\"Your Coolest Playlist\"`. This name does not need to be unique; a user may have several playlists with the same name.}\n@optional {public: bool # Defaults to `true`. The playlist's public/private status (if it should be added to the user's profile or not): `true` the playlist will be public, `false` the playlist will be private. To be able to create private playlists, the user must have granted the `playlist-modify-private` [scope](/documentation/web-api/concepts/scopes/#list-of-scopes). For more about public/private status, see [Working with Playlists](/documentation/web-api/concepts/playlists), collaborative: bool # Defaults to `false`. If `true` the playlist will be collaborative. _**Note**: to create a collaborative playlist you must also set `public` to `false`. To create collaborative playlists you must have granted `playlist-modify-private` and `playlist-modify-public` [scopes](/documentation/web-api/concepts/scopes/#list-of-scopes)._, description: str # value for playlist description as displayed in Spotify Clients and in the Web API.}\n@returns(201) {collaborative: bool, description: str?, external_urls: any, href: str, id: str, images: [map], name: str, owner: any, public: bool, snapshot_id: str, items: map, tracks: map, type: str, uri: str} # A playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/library\n@desc Save Items to Library\n@required {uris: str}\n@returns(200) Items saved to library\n@errors {400: Bad Request. Possible reasons: missing `uris` parameter, invalid URI format, unsupported URI type, or more than 40 URIs provided., 401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /me/library\n@desc Remove Items from Library\n@required {uris: str}\n@returns(200) Items removed from library\n@errors {400: Bad Request. Possible reasons: missing `uris` parameter, invalid URI format, unsupported URI type, or more than 40 URIs provided., 401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/library/contains\n@desc Check User's Saved Items\n@required {uris: str}\n@returns(200) Array of booleans\n@errors {400: Bad Request. Possible reasons: missing `uris` parameter, invalid URI format, unsupported URI type, or more than 40 URIs provided., 401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/albums\n@desc Get User's Saved Albums\n@optional {limit: int=20, offset: int=0, market: str}\n@returns(200) Pages of albums\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/albums\n@desc Save Albums for Current User\n@required {ids: str}\n@optional {ids: [str] # A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). For example: `[\"4iV5W9uYEdYUVa79Axb7Rh\", \"1301WleyT98MSxVHPZCA6M\"]`A maximum of 50 items can be specified in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._}\n@returns(200) The album is saved\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /me/albums\n@desc Remove Users' Saved Albums\n@required {ids: str}\n@optional {ids: [str] # A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). For example: `[\"4iV5W9uYEdYUVa79Axb7Rh\", \"1301WleyT98MSxVHPZCA6M\"]`A maximum of 50 items can be specified in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._}\n@returns(200) Album(s) have been removed from the library\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/albums/contains\n@desc Check User's Saved Albums\n@required {ids: str}\n@returns(200) Array of booleans\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/tracks\n@desc Get User's Saved Tracks\n@optional {market: str, limit: int=20, offset: int=0}\n@returns(200) Pages of tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/tracks\n@desc Save Tracks for Current User\n@optional {ids: [str] # A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). For example: `[\"4iV5W9uYEdYUVa79Axb7Rh\", \"1301WleyT98MSxVHPZCA6M\"]`A maximum of 50 items can be specified in one request. _**Note**: if the `timestamped_ids` is present in the body, any IDs listed in the query parameters (deprecated) or the `ids` field in the body will be ignored._, timestamped_ids: [map{id!: str, added_at!: str(date-time)}] # A JSON array of objects containing track IDs with their corresponding timestamps. Each object must include a track ID and an `added_at` timestamp. This allows you to specify when tracks were added to maintain a specific chronological order in the user's library.A maximum of 50 items can be specified in one request. _**Note**: if the `timestamped_ids` is present in the body, any IDs listed in the query parameters (deprecated) or the `ids` field in the body will be ignored._}\n@returns(200) Track saved\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /me/tracks\n@desc Remove User's Saved Tracks\n@required {ids: str}\n@optional {ids: [str] # A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). For example: `[\"4iV5W9uYEdYUVa79Axb7Rh\", \"1301WleyT98MSxVHPZCA6M\"]`A maximum of 50 items can be specified in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._}\n@returns(200) Track removed\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/tracks/contains\n@desc Check User's Saved Tracks\n@required {ids: str}\n@returns(200) Array of booleans\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/episodes\n@desc Get User's Saved Episodes\n@optional {market: str, limit: int=20, offset: int=0}\n@returns(200) Pages of episodes\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/episodes\n@desc Save Episodes for Current User\n@required {ids: str}\n@optional {ids: [str] # A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). A maximum of 50 items can be specified in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._}\n@returns(200) Episode saved\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /me/episodes\n@desc Remove User's Saved Episodes\n@required {ids: str}\n@optional {ids: [str] # A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). A maximum of 50 items can be specified in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._}\n@returns(200) Episode removed\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/episodes/contains\n@desc Check User's Saved Episodes\n@required {ids: str}\n@returns(200) Array of booleans\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/shows\n@desc Get User's Saved Shows\n@optional {limit: int=20, offset: int=0}\n@returns(200) Pages of shows\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/shows\n@desc Save Shows for Current User\n@required {ids: str}\n@returns(200) Show saved\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /me/shows\n@desc Remove User's Saved Shows\n@required {ids: str}\n@optional {market: str}\n@returns(200) Show removed\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/shows/contains\n@desc Check User's Saved Shows\n@required {ids: str}\n@returns(200) Array of booleans\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/top/{type}\n@desc Get User's Top Items\n@required {type: str(artists/tracks)}\n@optional {time_range: str=medium_term, limit: int=20, offset: int=0}\n@returns(200) Pages of artists or tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group users\n@endpoint GET /users/{user_id}\n@desc Get User's Profile\n@required {user_id: str}\n@returns(200) {display_name: str?, external_urls: any, followers: any, href: str, id: str, images: [map], type: str, uri: str} # A user\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /users/{user_id}/playlists\n@desc Get User's Playlists\n@required {user_id: str}\n@optional {limit: int=20, offset: int=0}\n@returns(200) A paged set of playlists\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint POST /users/{user_id}/playlists\n@desc Create Playlist for user\n@required {user_id: str, name: str # The name for the new playlist, for example `\"Your Coolest Playlist\"`. This name does not need to be unique; a user may have several playlists with the same name.}\n@optional {public: bool # Defaults to `true`. The playlist's public/private status (if it should be added to the user's profile or not): `true` the playlist will be public, `false` the playlist will be private. To be able to create private playlists, the user must have granted the `playlist-modify-private` [scope](/documentation/web-api/concepts/scopes/#list-of-scopes). For more about public/private status, see [Working with Playlists](/documentation/web-api/concepts/playlists), collaborative: bool # Defaults to `false`. If `true` the playlist will be collaborative. _**Note**: to create a collaborative playlist you must also set `public` to `false`. To create collaborative playlists you must have granted `playlist-modify-private` and `playlist-modify-public` [scopes](/documentation/web-api/concepts/scopes/#list-of-scopes)._, description: str # value for playlist description as displayed in Spotify Clients and in the Web API.}\n@returns(201) {collaborative: bool, description: str?, external_urls: any, href: str, id: str, images: [map], name: str, owner: any, public: bool, snapshot_id: str, items: map, tracks: map, type: str, uri: str} # A playlist\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group playlists\n@endpoint PUT /playlists/{playlist_id}/followers\n@desc Follow Playlist\n@required {playlist_id: str}\n@optional {public: bool # Defaults to `true`. If `true` the playlist will be included in user's public playlists (added to profile), if `false` it will remain private. For more about public/private status, see [Working with Playlists](/documentation/web-api/concepts/playlists)}\n@returns(200) Playlist followed\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /playlists/{playlist_id}/followers\n@desc Unfollow Playlist\n@required {playlist_id: str}\n@returns(200) Playlist unfollowed\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group browse\n@endpoint GET /browse/featured-playlists\n@desc Get Featured Playlists\n@optional {locale: str, limit: int=20, offset: int=0}\n@returns(200) {message: str, playlists: map} # A paged set of playlists\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /browse/categories\n@desc Get Several Browse Categories\n@optional {locale: str, limit: int=20, offset: int=0}\n@returns(200) {categories: map} # A paged set of categories\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /browse/categories/{category_id}\n@desc Get Single Browse Category\n@required {category_id: str}\n@optional {locale: str}\n@returns(200) {href: str, icons: [map], id: str, name: str} # A category\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /browse/categories/{category_id}/playlists\n@desc Get Category's Playlists\n@required {category_id: str}\n@optional {limit: int=20, offset: int=0}\n@returns(200) {message: str, playlists: map} # A paged set of playlists\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group playlists\n@endpoint GET /playlists/{playlist_id}/images\n@desc Get Playlist Cover Image\n@required {playlist_id: str}\n@returns(200) A set of images\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /playlists/{playlist_id}/images\n@desc Add Custom Playlist Cover Image\n@required {playlist_id: str}\n@returns(202) Image uploaded\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group browse\n@endpoint GET /browse/new-releases\n@desc Get New Releases\n@optional {limit: int=20, offset: int=0}\n@returns(200) {albums: map} # A paged set of albums\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group me\n@endpoint GET /me/following\n@desc Get Followed Artists\n@required {type: str}\n@optional {after: str, limit: int=20}\n@returns(200) {artists: map} # A paged set of artists\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/following\n@desc Follow Artists or Users\n@required {type: str(artist/user), ids: str, ids: [str] # A JSON array of the artist or user [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). For example: `{ids:[\"74ASZWbe4lXaubB36ztrGX\", \"08td7MxkoHQkXnWAYD8d6Q\"]}`. A maximum of 50 IDs can be sent in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._}\n@returns(204) Artist or user followed\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint DELETE /me/following\n@desc Unfollow Artists or Users\n@required {type: str(artist/user), ids: str}\n@optional {ids: [str] # A JSON array of the artist or user [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). For example: `{ids:[\"74ASZWbe4lXaubB36ztrGX\", \"08td7MxkoHQkXnWAYD8d6Q\"]}`. A maximum of 50 IDs can be sent in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._}\n@returns(204) Artist or user unfollowed\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/following/contains\n@desc Check If User Follows Artists or Users\n@required {type: str(artist/user), ids: str}\n@returns(200) Array of booleans\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group playlists\n@endpoint GET /playlists/{playlist_id}/followers/contains\n@desc Check if Current User Follows Playlist\n@required {playlist_id: str}\n@optional {ids: str}\n@returns(200) Array of boolean, containing a single boolean\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group audio-features\n@endpoint GET /audio-features\n@desc Get Several Tracks' Audio Features\n@required {ids: str}\n@returns(200) {audio_features: [map]} # A set of audio features\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /audio-features/{id}\n@desc Get Track's Audio Features\n@required {id: str}\n@returns(200) {acousticness: num(float), analysis_url: str, danceability: num(float), duration_ms: int, energy: num(float), id: str, instrumentalness: num(float), key: int, liveness: num(float), loudness: num(float), mode: int, speechiness: num(float), tempo: num(float), time_signature: int, track_href: str, type: str, uri: str, valence: num(float)} # Audio features for one track\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group audio-analysis\n@endpoint GET /audio-analysis/{id}\n@desc Get Track's Audio Analysis\n@required {id: str}\n@returns(200) {meta: map{analyzer_version: str, platform: str, detailed_status: str, status_code: int, timestamp: int, analysis_time: num, input_process: str}, track: map{num_samples: int, duration: num, sample_md5: str, offset_seconds: int, window_seconds: int, analysis_sample_rate: int, analysis_channels: int, end_of_fade_in: num, start_of_fade_out: num, loudness: num(float), tempo: num(float), tempo_confidence: num, time_signature: int, time_signature_confidence: num, key: int, key_confidence: num, mode: int, mode_confidence: num, codestring: str, code_version: num, echoprintstring: str, echoprint_version: num, synchstring: str, synch_version: num, rhythmstring: str, rhythm_version: num}, bars: [map], beats: [map], sections: [map], segments: [map], tatums: [map]} # Audio analysis for one track\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group recommendations\n@endpoint GET /recommendations\n@desc Get Recommendations\n@required {seed_artists: str, seed_genres: str, seed_tracks: str}\n@optional {limit: int=20, market: str, min_acousticness: num, max_acousticness: num, target_acousticness: num, min_danceability: num, max_danceability: num, target_danceability: num, min_duration_ms: int, max_duration_ms: int, target_duration_ms: int, min_energy: num, max_energy: num, target_energy: num, min_instrumentalness: num, max_instrumentalness: num, target_instrumentalness: num, min_key: int, max_key: int, target_key: int, min_liveness: num, max_liveness: num, target_liveness: num, min_loudness: num, max_loudness: num, target_loudness: num, min_mode: int, max_mode: int, target_mode: int, min_popularity: int, max_popularity: int, target_popularity: int, min_speechiness: num, max_speechiness: num, target_speechiness: num, min_tempo: num, max_tempo: num, target_tempo: num, min_time_signature: int, max_time_signature: int, target_time_signature: int, min_valence: num, max_valence: num, target_valence: num}\n@returns(200) {seeds: [map], tracks: [map]} # A set of recommendations\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /recommendations/available-genre-seeds\n@desc Get Available Genre Seeds\n@returns(200) {genres: [str]} # A set of genres\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group me\n@endpoint GET /me/player\n@desc Get Playback State\n@optional {market: str, additional_types: str}\n@returns(200) {device: any, repeat_state: str, shuffle_state: bool, context: any, timestamp: int, progress_ms: int, is_playing: bool, item: any, currently_playing_type: str, actions: any} # Information about playback\n@returns(204) Playback not available or active\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/player\n@desc Transfer Playback\n@required {device_ids: [str] # A JSON array containing the ID of the device on which playback should be started/transferred.For example:`{device_ids:[\"74ASZWbe4lXaubB36ztrGX\"]}`_**Note**: Although an array is accepted, only a single device_id is currently supported. Supplying more than one will return `400 Bad Request`_}\n@optional {play: bool # **true**: ensure playback happens on new device.**false** or not provided: keep the current playback state.}\n@returns(204) Playback transferred\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/player/devices\n@desc Get Available Devices\n@returns(200) {devices: [map]} # A set of devices\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/player/currently-playing\n@desc Get Currently Playing Track\n@optional {market: str, additional_types: str}\n@returns(200) {device: any, repeat_state: str, shuffle_state: bool, context: any, timestamp: int, progress_ms: int, is_playing: bool, item: any, currently_playing_type: str, actions: any} # Information about the currently playing track\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/player/play\n@desc Start/Resume Playback\n@optional {device_id: str, context_uri: str # Optional. Spotify URI of the context to play. Valid contexts are albums, artists & playlists. `{context_uri:\"spotify:album:1Je1IMUlBXcx1Fz0WE7oPT\"}`, uris: [str] # Optional. A JSON array of the Spotify track URIs to play. For example: `{\"uris\": [\"spotify:track:4iV5W9uYEdYUVa79Axb7Rh\", \"spotify:track:1301WleyT98MSxVHPZCA6M\"]}`, offset: map # Optional. Indicates from where in the context playback should start. Only available when context_uri corresponds to an album or playlist object \"position\" is zero based and can’t be negative. Example: `\"offset\": {\"position\": 5}` \"uri\" is a string representing the uri of the item to start at. Example: `\"offset\": {\"uri\": \"spotify:track:1301WleyT98MSxVHPZCA6M\"}`, position_ms: int # integer}\n@returns(204) Playback started\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/player/pause\n@desc Pause Playback\n@optional {device_id: str}\n@returns(204) Playback paused\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint POST /me/player/next\n@desc Skip To Next\n@optional {device_id: str}\n@returns(204) Command sent\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint POST /me/player/previous\n@desc Skip To Previous\n@optional {device_id: str}\n@returns(204) Command sent\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/player/seek\n@desc Seek To Position\n@required {position_ms: int}\n@optional {device_id: str}\n@returns(204) Command sent\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/player/repeat\n@desc Set Repeat Mode\n@required {state: str}\n@optional {device_id: str}\n@returns(204) Command sent\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/player/volume\n@desc Set Playback Volume\n@required {volume_percent: int}\n@optional {device_id: str}\n@returns(204) Command sent\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint PUT /me/player/shuffle\n@desc Toggle Playback Shuffle\n@required {state: bool}\n@optional {device_id: str}\n@returns(204) Command sent\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/player/recently-played\n@desc Get Recently Played Tracks\n@optional {limit: int=20, after: int, before: int}\n@returns(200) A paged set of tracks\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint GET /me/player/queue\n@desc Get the User's Queue\n@returns(200) {currently_playing: any, queue: [any]} # Information about the queue\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endpoint POST /me/player/queue\n@desc Add Item to Playback Queue\n@required {uri: str}\n@optional {device_id: str}\n@returns(204) Command received\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@group markets\n@endpoint GET /markets\n@desc Get Available Markets\n@returns(200) {markets: [str]} # A markets object with an array of country codes\n@errors {401: Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user., 403: Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won't help here., 429: The app has exceeded its rate limits.}\n\n@endgroup\n\n@end\n"}