Skip to content

Spotify 403 Forbidden: /playlists/{id}/tracks endpoint removed in March 2026 API migration #54

Description

@Kyrunner

Description

After the Spotify Web API migration on March 9, 2026, all Development Mode apps lost access to the deprecated /playlists/{id}/tracks endpoint. cliamp is still using this old endpoint, which now returns 403 Forbidden for all playlist track requests.

Error

ERR: provider Spotify: tracks: spotify: list tracks: http status 403 Forbidden: {"error": {"status": 403, "message": "Forbidden" } }

Root Cause

Spotify's February 2026 Dev Mode migration renamed the playlist track endpoints:

Removed endpoint Replacement
GET /playlists/{id}/tracks GET /playlists/{id}/items
POST /playlists/{id}/tracks POST /playlists/{id}/items
DELETE /playlists/{id}/tracks DELETE /playlists/{id}/items
PUT /playlists/{id}/tracks PUT /playlists/{id}/items

The response body also renames tracksitems and tracks.trackitems.item.

Verified

I confirmed this by testing both endpoints with a valid token against the same playlist:

  • GET /v1/playlists/{id}/tracks403 Forbidden
  • GET /v1/playlists/{id}/items200 OK (returns tracks correctly)

Environment

  • cliamp v1.17.9 (latest)
  • Linux amd64
  • Spotify Premium account
  • App in Development Mode with Web API enabled, user added to allowlist

Fix

Update the Spotify provider to use /playlists/{id}/items instead of /playlists/{id}/tracks, and handle the field rename (tracksitems, trackitem) in the response parsing.

See: https://developer.spotify.com/documentation/web-api/tutorials/february-2026-migration-guide#playlist-endpoint-renames

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions