---
title: "Update Playlist Items"
method: PUT
path: "/playlists/{playlist_id}/items"
tags: ["Playlists", "Tracks"]
---

# Update Playlist Items

`PUT /playlists/{playlist_id}/items`

Either reorder or replace items in a playlist depending on the request's parameters.
To reorder items, include `range_start`, `insert_before`, `range_length` and `snapshot_id` in the request's body.
To replace items, include `uris` as either a query parameter or in the request's body.
Replacing items in a playlist will overwrite its existing items. This operation can be used for replacing or clearing items in a playlist.
<br/>
**Note**: Replace and reorder are mutually exclusive operations which share the same endpoint, but have different parameters.
These operations can't be applied together in a single request.

## Path parameters

- `playlist_id` string, required — The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) of the playlist.

## Query parameters

- `uris` string — A comma-separated list of [Spotify URIs](/documentation/web-api/concepts/spotify-uris-ids) to set, can be track or episode URIs. For example: `uris=spotify:track:4iV5W9uYEdYUVa79Axb7Rh,spotify:track:1301WleyT98MSxVHPZCA6M,spotify:episode:512ojhOuo1ktJprKbVcKyQ`<br/>A maximum of 100 items can be set in one request.

## Request body

- object
  - `uris` string[]
  - `range_start` integer — The position of the first item to be reordered.
  - `insert_before` integer — The position where the items should be inserted.<br/>To reorder the items to the end of the playlist, simply set _insert_before_ to the position after the last item.<br/>Examples:<br/>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.<br/>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` integer — The amount of items to be reordered. Defaults to 1 if not set.<br/>The range of items to be reordered begins from the _range_start_ position, and includes the _range_length_ subsequent items.<br/>Example:<br/>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` string — The playlist's snapshot ID against which you want to make the changes.

## Response `200`

A snapshot ID for the playlist

- object
  - `snapshot_id` string

## Other responses

- `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.

---

[API](https://skmtc.dev/spotify/apis/spotify-web-api.md) · [All operations](https://skmtc.dev/spotify/apis/spotify-web-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/spotify/spotify-web-api/revisions/2d888d731358/schema)
