Skip to content

play.rs example INVALID_CREDENTIALS since 2026-08-10 #1737

Open

Description

@Derkades

Description

I am using a program very similar to the play.rs example, so with an access token provided externally. Since august 10th this no longer works. Spotify probably changed something on their backend. I am wondering if anyone else experiences the same issue.

Version

Latest git master as of 2026-08-13

Log

[2026-08-13T19:52:23Z DEBUG librespot_core::session] new Session
[2026-08-13T19:52:23Z DEBUG librespot::component] new ApResolver
[2026-08-13T19:52:23Z DEBUG librespot_core::http_client] Requesting https://apresolve.spotify.com/?type=accesspoint&type=dealer&type=spclient
[2026-08-13T19:52:23Z INFO  librespot_core::session] Connecting to AP "ap-gew4.spotify.com:4070"
[2026-08-13T19:52:23Z DEBUG librespot_core::connection] Connection to "ap-gew4.spotify.com:4070" failed: Connection refused (os error 111)
[2026-08-13T19:52:23Z DEBUG librespot_core::connection] Retry access point...
[2026-08-13T19:52:23Z DEBUG librespot_core::connection] Connection to AP established.
[2026-08-13T19:52:23Z DEBUG librespot_core::connection] Authenticating with AP using AUTHENTICATION_SPOTIFY_TOKEN
[2026-08-13T19:52:23Z TRACE librespot_core::session] Reconnect using stored credentials as token authed sessions cannot use keymaster.
[2026-08-13T19:52:23Z DEBUG librespot_core::connection] Connection to AP established.
[2026-08-13T19:52:23Z DEBUG librespot_core::connection] Authenticating with AP using AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS
[2026-08-13T19:52:23Z INFO  librespot_core::session] Authenticated as 'redacted' !
[2026-08-13T19:52:23Z TRACE librespot_core::session] Received Ping
[2026-08-13T19:52:23Z TRACE librespot_core::session] keep-alive state: PendingPong, timeout in 60.0
[2026-08-13T19:52:23Z DEBUG librespot_core::session] Session strong=2 weak=3
[2026-08-13T19:52:23Z INFO  librespot_core::session] Country: "NL"
[2026-08-13T19:52:23Z DEBUG librespot_playback::player] new Player [0]
[2026-08-13T19:52:23Z TRACE librespot_core::session] Received product info: {
        "high-bitrate": "1",
        "app-developer": "0",
        "prefetch-keys": "1",
        "sidebar-navigation-enabled": "0",
        "widevine-license-url": "https://spclient.wg.spotify.com/widevine-license/v1/video/license",
        "enable-annotations-read": "0",
        "capping-bar-threshold": "3601",
        "catalogue": "premium",
        "mobile": "1",
        "playlist-annotations-markup": "0",
        "publish-playlist": "0",
        "video-device-blacklisted": "0",
        "public-toplist": "0",
        "collection": "1",
        "is_email_verified": "1",
        "key-memory-cache-mode": "1:15,300",
        "metadata-link-lookup-modes": "0",
        "payments-locked-state": "0",
        "prefetch-strategy": "2",
        "shuffle": "0",
        "restrict-playlist-collaboration": "0",
        "remote-control": "6",
        "incognito_mode_timeout": "21600",
        "libspotify": "1",
        "loudness-levels": "1:-5.0,0.0,3.0:-2.0",
        "ad-formats-preroll-video": "0",
        "image-url": "https://i.scdn.co/image/{file_id}",
        "enable-annotations": "2",
        "name": "Spotify Premium",
        "payments-initial-campaign": "default",
        "publish-activity": "0",
        "employee-free-opt-in": "0",
        "on-demand-trial-in-progress": "0",
        "shows-collection-jam": "0",
        "streaming": "1",
        "radio": "1",
        "type": "premium",
        "audiobook-onboarding-completed": "0",
        "filter-explicit-content": "0",
        "shows-collection": "1",
        "video-manifest-url": "https://spclient.wg.spotify.com/manifests/v6/{type}/sources/{source_id}/options/supports_drm",
        "ab_recently_played_feature_time_filter_threshold": "com.spotify.gaia=30,driving-mode=120,spotify%3Ainternal%3Astartpage=30",
        "storage-size-config": "10240,90,500,3",
        "key-caching-max-offline-seconds": "1800",
        "key-caching-max-count": "10000",
        "head-file-caching": "1",
        "head-files-url": "https://heads-fa-tls13.spotifycdn.com/head/{file_id}",
        "offline": "1",
        "ugc-abuse-report-url": "https://support.spotify.com/abuse/?uri={uri}",
        "financial-product": "pr:premium,tc:0,rt:v2_NL_default_new-family-sub-basic-1m-1m_0_EUR_default",
        "nft-disabled": "1",
        "audio-preview-url-template": "https://p.scdn.co/mp3-preview/{id}",
        "head-files": "1",
        "send-email": "1",
        "prefetch-window-max": "2",
        "explicit-content": "1",
        "enable-crossfade": "1",
        "arsenal_country": "1",
        "preferred-locale": "en",
        "unrestricted": "1",
        "ads": "0",
        "video-cdn-sampling": "100",
        "ab-watch-now": "0",
        "player-license": "premium",
        "ab-ad-player-targeting": "1",
        "on-demand": "1",
        "ugc-abuse-report": "1",
        "ad-session-persistence": "1",
    }
[2026-08-13T19:52:23Z INFO  librespot_playback::audio_backend::pipe] Using StdoutSink (pipe) with format: S16
[2026-08-13T19:52:23Z DEBUG librespot_playback::player] command=Load(SpotifyUri("spotify:track:redacted"), true, 0)
[2026-08-13T19:52:23Z DEBUG librespot_playback::player] command=AddEventSender
[2026-08-13T19:52:23Z DEBUG librespot::component] new SpClient
[2026-08-13T19:52:23Z INFO  librespot_core::spclient] Resolved "gew4-spclient.spotify.com:443" as spclient access point
[2026-08-13T19:52:23Z DEBUG librespot::component] new Login5Manager
[2026-08-13T19:52:23Z DEBUG librespot_core::spclient] Client token unavailable or expired, requesting new token.
[2026-08-13T19:52:23Z DEBUG librespot_core::http_client] Requesting https://clienttoken.spotify.com/v1/clienttoken
[2026-08-13T19:52:23Z DEBUG librespot::component] new MercuryManager
[2026-08-13T19:52:23Z DEBUG librespot::component] new DealerManager
[2026-08-13T19:52:23Z DEBUG librespot_core::mercury] unknown subscription uri=hm://pusher/v1/connections/redacted
[2026-08-13T19:52:23Z TRACE librespot_core::mercury] response pushed over Mercury: MercuryResponse { uri: "hm://pusher/v1/connections/redacted", status_code: 200, payload: [] }
[2026-08-13T19:52:23Z DEBUG librespot_core::session] could not dispatch command: Service unavailable { error handling Mercury response: MercuryResponse { uri: "hm://pusher/v1/connections/redacted", status_code: 200, payload: [] } }
[2026-08-13T19:52:23Z DEBUG librespot_core::spclient] Received a granted token
[2026-08-13T19:52:23Z TRACE librespot_core::spclient] Got client token: GrantedTokenResponse { token: "redacted", expires_after_seconds: 1216800, refresh_after_seconds: 1209600, domains: [TokenDomain { domain: "spotify.com", special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }, TokenDomain { domain: "spotify.net", special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }], special_fields: SpecialFields { unknown_fields: UnknownFields { fields: None }, cached_size: CachedSize { size: 0 } } }
[2026-08-13T19:52:23Z DEBUG librespot_core::http_client] Requesting https://login5.spotify.com/v3/login
[2026-08-13T19:52:23Z ERROR librespot_playback::player] Unable to load audio item: Error { kind: FailedPrecondition, error: FaultyRequest(INVALID_CREDENTIALS) }
[2026-08-13T19:52:23Z ERROR librespot_playback::player] Skipping to next track, unable to load track <SpotifyUri("spotify:track:redacted")>: ()

Activity

  1. kstep commented on Aug 13, 2026

    @kstep

    Yes, I see the same issue with playback started around the same dates.

  2. kstep commented on Aug 14, 2026

    @kstep

    Is it connected to devgianlu/go-librespot#364 ?

  3. michaelherger commented on Aug 14, 2026

    @michaelherger
    Contributor

    Yes to both: I'm seeing the same with my own clone and adaption of play.rs, and yes, the description (including the workaround) are what I concluded, too.

  4. kstep commented on Aug 14, 2026

    @kstep
  5. kingosticks commented on Aug 17, 2026

    @kingosticks
    Member

    Have you seen https://developer.spotify.com/documentation/soloist/tutorials/getting-started https://developer.spotify.com/blog/2026-08-13-introducing-spotify-soloist ? Seems like they closed the old access keys as a preparation for soloist release.

    To be clear, third-party access keys still work for the Spotify Web API as before, they only closed off access to their private endpoints we were using for playback purposes.

  6. Derkades commented on Aug 27, 2026

    @Derkades
    Author

    Since I opened this issue two new methods have been documented:

    The last one works well for my use case. Thank you for all the effort.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions