Client Credentials Flow | Spotify for Developers
https://developer.spotify.com/documentation/web-api/tutorials/client-credentials-flow • 267 KB fetched Open original page
Client Credentials Flow | Spotify for Developers Skip to content
* Documentation Documentation Products
* Web API
* Web Playback SDK
* Ads API
* iOS
* Android
* Embeds
* Commercial Hardware
* Open Access
* Spotify Soloist
Guidelines
* Design
* Accessibility
* Legal
* Community
0
* Documentation Documentation Products
* Web API
* Web Playback SDK
* Ads API
* iOS
* Android
* Embeds
* Commercial Hardware
* Open Access
* Spotify Soloist
Guidelines
* Design
* Accessibility
* Legal
* Community
Web API
* Overview
* Getting started
* Building with AI
* Concepts Concepts Concepts
* Access Token
* API calls
* Apps
* Authorization
* Redirect URIs
* Playlists
* Quota modes
* Rate limits
* Scopes
* Spotify URIs and IDs
* Track Relinking
* Tutorials Tutorials Tutorials
* Authorization code
* Authorization code PKCE
* Client credentials
* Implicit grant [Deprecated]
* Refreshing tokens
* Migration: Implicit grant to Authorization code
* Migration: Insecure redirect URI
* Migration: February 2026 Dev Mode Changes
* How-Tos How-Tos How-Tos
* Display your Spotify profile data in a web app
* Changelog Changelog Changelog
* July 2026
* May 2026
* March 2026
* February 2026
Reference
* Albums Albums Albums
* Get Album
* Get Several Albums
* Get Album Tracks
* Get User's Saved Albums
* Save Albums for Current User
* Remove Users' Saved Albums
* Check User's Saved Albums
* Get New Releases
* Artists Artists Artists
* Get Artist
* Get Several Artists
* Get Artist's Albums
* Get Artist's Top Tracks
* Get Artist's Related Artists
* Audiobooks Audiobooks Audiobooks
* Get an Audiobook
* Get Several Audiobooks
* Get Audiobook Chapters
* Get User's Saved Audiobooks
* Save Audiobooks for Current User
* Remove User's Saved Audiobooks
* Check User's Saved Audiobooks
* Categories Categories Categories
* Get Several Browse Categories
* Get Single Browse Category
* Chapters Chapters Chapters
* Get a Chapter
* Get Several Chapters
* Episodes Episodes Episodes
* Get Episode
* Get Several Episodes
* Get User's Saved Episodes
* Save Episodes for Current User
* Remove User's Saved Episodes
* Check User's Saved Episodes
* Genres Genres Genres
* Get Available Genre Seeds
* Library Library Library
* Save Items to Library
* Remove Items from Library
* Check User's Saved Items
* Markets Markets Markets
* Get Available Markets
* Player Player Player
* Get Playback State
* Transfer Playback
* Get Available Devices
* Get Currently Playing Track
* Start/Resume Playback
* Pause Playback
* Skip To Next
* Skip To Previous
* Seek To Position
* Set Repeat Mode
* Set Playback Volume
* Toggle Playback Shuffle
* Get Recently Played Tracks
* Get the User's Queue
* Add Item to Playback Queue
* Playlists Playlists Playlists
* Get Playlist
* Change Playlist Details
* Get Playlist Items [DEPRECATED]
* Update Playlist Items [DEPRECATED]
* Add Items to Playlist [DEPRECATED]
* Remove Playlist Items [DEPRECATED]
* Get Playlist Items
* Update Playlist Items
* Add Items to Playlist
* Remove Playlist Items
* Get Current User's Playlists
* Create Playlist
* Get User's Playlists
* Create Playlist for user
* Get Featured Playlists
* Get Category's Playlists
* Get Playlist Cover Image
* Add Custom Playlist Cover Image
* Search Search Search
* Search for Item
* Shows Shows Shows
* Get Show
* Get Several Shows
* Get Show Episodes
* Get User's Saved Shows
* Save Shows for Current User
* Remove User's Saved Shows
* Check User's Saved Shows
* Tracks Tracks Tracks
* Get Track
* Get Several Tracks
* Get User's Saved Tracks
* Save Tracks for Current User
* Remove User's Saved Tracks
* Check User's Saved Tracks
* Get Several Tracks' Audio Features
* Get Track's Audio Features
* Get Track's Audio Analysis
* Get Recommendations
* Users Users Users
* Get Current User's Profile
* Get User's Top Items
* Get User's Profile
* Follow Playlist
* Unfollow Playlist
* Get Followed Artists
* Follow Artists or Users
* Unfollow Artists or Users
* Check If User Follows Artists or Users
* Check if Current User Follows Playlist
Web API
* Overview
* Getting started
* Building with AI
* Concepts Concepts Concepts
* Access Token
* API calls
* Apps
* Authorization
* Redirect URIs
* Playlists
* Quota modes
* Rate limits
* Scopes
* Spotify URIs and IDs
* Track Relinking
* Tutorials Tutorials Tutorials
* Authorization code
* Authorization code PKCE
* Client credentials
* Implicit grant [Deprecated]
* Refreshing tokens
* Migration: Implicit grant to Authorization code
* Migration: Insecure redirect URI
* Migration: February 2026 Dev Mode Changes
* How-Tos How-Tos How-Tos
* Display your Spotify profile data in a web app
* Changelog Changelog Changelog
* July 2026
* May 2026
* March 2026
* February 2026
Reference
* Albums Albums Albums
* Get Album
* Get Several Albums
* Get Album Tracks
* Get User's Saved Albums
* Save Albums for Current User
* Remove Users' Saved Albums
* Check User's Saved Albums
* Get New Releases
* Artists Artists Artists
* Get Artist
* Get Several Artists
* Get Artist's Albums
* Get Artist's Top Tracks
* Get Artist's Related Artists
* Audiobooks Audiobooks Audiobooks
* Get an Audiobook
* Get Several Audiobooks
* Get Audiobook Chapters
* Get User's Saved Audiobooks
* Save Audiobooks for Current User
* Remove User's Saved Audiobooks
* Check User's Saved Audiobooks
* Categories Categories Categories
* Get Several Browse Categories
* Get Single Browse Category
* Chapters Chapters Chapters
* Get a Chapter
* Get Several Chapters
* Episodes Episodes Episodes
* Get Episode
* Get Several Episodes
* Get User's Saved Episodes
* Save Episodes for Current User
* Remove User's Saved Episodes
* Check User's Saved Episodes
* Genres Genres Genres
* Get Available Genre Seeds
* Library Library Library
* Save Items to Library
* Remove Items from Library
* Check User's Saved Items
* Markets Markets Markets
* Get Available Markets
* Player Player Player
* Get Playback State
* Transfer Playback
* Get Available Devices
* Get Currently Playing Track
* Start/Resume Playback
* Pause Playback
* Skip To Next
* Skip To Previous
* Seek To Position
* Set Repeat Mode
* Set Playback Volume
* Toggle Playback Shuffle
* Get Recently Played Tracks
* Get the User's Queue
* Add Item to Playback Queue
* Playlists Playlists Playlists
* Get Playlist
* Change Playlist Details
* Get Playlist Items [DEPRECATED]
* Update Playlist Items [DEPRECATED]
* Add Items to Playlist [DEPRECATED]
* Remove Playlist Items [DEPRECATED]
* Get Playlist Items
* Update Playlist Items
* Add Items to Playlist
* Remove Playlist Items
* Get Current User's Playlists
* Create Playlist
* Get User's Playlists
* Create Playlist for user
* Get Featured Playlists
* Get Category's Playlists
* Get Playlist Cover Image
* Add Custom Playlist Cover Image
* Search Search Search
* Search for Item
* Shows Shows Shows
* Get Show
* Get Several Shows
* Get Show Episodes
* Get User's Saved Shows
* Save Shows for Current User
* Remove User's Saved Shows
* Check User's Saved Shows
* Tracks Tracks Tracks
* Get Track
* Get Several Tracks
* Get User's Saved Tracks
* Save Tracks for Current User
* Remove User's Saved Tracks
* Check User's Saved Tracks
* Get Several Tracks' Audio Features
* Get Track's Audio Features
* Get Track's Audio Analysis
* Get Recommendations
* Users Users Users
* Get Current User's Profile
* Get User's Top Items
* Get User's Profile
* Follow Playlist
* Unfollow Playlist
* Get Followed Artists
* Follow Artists or Users
* Unfollow Artists or Users
* Check If User Follows Artists or Users
* Check if Current User Follows Playlist
Client Credentials Flow
The Client Credentials flow is used in server-to-server authentication. Since
this flow does not include authorization, only endpoints that do not access
user information can be accessed.
The following diagram shows how the Client Credentials Flow works:
Pre-requisites
This guide assumes that:
* You have read the authorization guide .
* You have created an app following the app guide .
Source Code
You can find an example app implementing Client Credentials flow on GitHub in
the web-api-examples repository.
Request authorization
The first step is to send a POST request to the /api/token endpoint of the
Spotify OAuth 2.0 Service with the following parameters encoded in
application/x-www-form-urlencoded :
Body Parameters Relevance Value
grant_type Required Set it to client_credentials .
The headers of the request must contain the following parameters:
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 <base64 encoded client_id:client_secret>
Content-Type Required Set to application/x-www-form-urlencoded .
The following JavaScript creates and sends an authorization request:
_ 19 var client_id = 'CLIENT_ID';
_ 19 var client_secret = 'CLIENT_SECRET';
_ 19
_ 19 var authOptions = {
_ 19 url: 'https://accounts.spotify.com/api/token',
_ 19 headers: {
_ 19 'Authorization': 'Basic ' + (new Buffer.from(client_id + ':' + client_secret).toString('base64'))
_ 19 },
_ 19 form: {
_ 19 grant_type: 'client_credentials'
_ 19 },
_ 19 json: true
_ 19 };
_ 19
_ 19 request.post(authOptions, function(error, response, body) {
_ 19 if (!error && response.statusCode === 200) {
_ 19 var token = body.access_token;
_ 19 }
_ 19 });
Response
If everything goes well, you'll receive a response with 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".
expires_in int The time period (in seconds) for which the access token is valid.
For example:
_ 10 {
_ 10 "access_token": "NgCXRKc...MzYjw",
_ 10 "token_type": "bearer",
_ 10 "expires_in": 3600
_ 10 }
What's next?
Learn how to use an access token to fetch data from the Spotify Web API by reading the access token guide .
Footer
Documentation
* Web API
* Web Playback SDK
* Ads API
* iOS
* Android
* Embeds
* Commercial Hardware
Guidelines
* Design
* Accessibility
Community
* News
* Forum
Legal
* Developer Terms
* Developer Policy
* Compliance Tips
* Third Party Licenses
Legal Cookies © 2026 Spotify AB
Links found on this page
- Skip to content [direct]
- Web API [direct]
- Web Playback SDK [direct]
- Ads API [direct]
- iOS [direct]
- Android [direct]
- Embeds [direct]
- Commercial Hardware [direct]
- Open Access [direct]
- Spotify Soloist [direct]
- Design [direct]
- Accessibility [direct]
- Legal [direct]
- Community [direct]
- Getting started [direct]
- Building with AI [direct]
- Access Token [direct]
- API calls [direct]
- Apps [direct]
- Authorization [direct]
- Redirect URIs [direct]
- Playlists [direct]
- Quota modes [direct]
- Rate limits [direct]
- Scopes [direct]
- Spotify URIs and IDs [direct]
- Track Relinking [direct]
- Authorization code [direct]
- Authorization code PKCE [direct]
- Implicit grant [Deprecated] [direct]
- Refreshing tokens [direct]
- Migration: Implicit grant to Authorization code [direct]
- Migration: Insecure redirect URI [direct]
- Migration: February 2026 Dev Mode Changes [direct]
- Display your Spotify profile data in a web app [direct]
- July 2026 [direct]
- May 2026 [direct]
- March 2026 [direct]
- February 2026 [direct]
- Get Album [direct]
- Get Several Albums [direct]
- Get Album Tracks [direct]
- Get User's Saved Albums [direct]
- Save Albums for Current User [direct]
- Remove Users' Saved Albums [direct]
- Check User's Saved Albums [direct]
- Get New Releases [direct]
- Get Artist [direct]
- Get Several Artists [direct]
- Get Artist's Albums [direct]
- Get Artist's Top Tracks [direct]
- Get Artist's Related Artists [direct]
- Get an Audiobook [direct]
- Get Several Audiobooks [direct]
- Get Audiobook Chapters [direct]
- Get User's Saved Audiobooks [direct]
- Save Audiobooks for Current User [direct]
- Remove User's Saved Audiobooks [direct]
- Check User's Saved Audiobooks [direct]
- Get Several Browse Categories [direct]
- Get Single Browse Category [direct]
- Get a Chapter [direct]
- Get Several Chapters [direct]
- Get Episode [direct]
- Get Several Episodes [direct]
- Get User's Saved Episodes [direct]
- Save Episodes for Current User [direct]
- Remove User's Saved Episodes [direct]
- Check User's Saved Episodes [direct]
- Get Available Genre Seeds [direct]
- Save Items to Library [direct]
- Remove Items from Library [direct]
- Check User's Saved Items [direct]
- Get Available Markets [direct]
- Get Playback State [direct]
- Transfer Playback [direct]
- Get Available Devices [direct]
- Get Currently Playing Track [direct]
- Start/Resume Playback [direct]
- Pause Playback [direct]
|
|