Add an Item to a Playlist

Each user on a Plex server can create their own playlists. A playlist can contain either videos, music, or photos, and can't be shared with other users. There are smart and non-smart playlists. This API command will add a single item to a non-smart playlist.


PUT http://{ip_address}:32400/playlists/{playlist_id}&uri=server://{machine_id}/com.plexapp.plugins.library/{library_id}?X-Plex-Token={plex_token}


ip_addressThe IP address of the Plex Media server.
plex_tokenThe Plex user token.
playlist_idThe key associated with a playlist. This key can be found by calling the view playlists for a user API command and getting the value in the ratingsKey attribute.
machine_idThe ID associated with the Plex server. Can be found by calling the Server Identity command and getting the machineIdentifier attribute value.
library_idThe key associated with the library item to be added to the playlist. See below for information on this value.

Return Status

HTTP CodeDescription
200Success - The request was successful.
400Bad request - A parameter is missing or the media item is not valid for the playlist.
401Unauthorized - The Plex token provided is not valid.
404Not found - The playlist ID is not valid.


XML string value that provides details about the playlist for the item that was just added. An example of the XML return value is shown below:

    <MediaContainer size="1" leafCountAdded="1" leafCountRequested="1">
    <Playlist ratingKey="289273" key="/playlists/289273/items" guid="com.plexapp.agents.none://3d6e93e8-3217-4f29-ad50-bd389abca279" type="playlist" title="War Movies" summary="" smart="0" playlistType="video" composite="/playlists/289273/composite/1698191973" duration="12356000" leafCount="2" addedAt="1684802334" updatedAt="1698191973"></Playlist>

The XML return provides information the playlist that contains the added item. The root is the MediaContainer element. This element contains a single attribute indicating that one playlist has been returned from the server.

MediaContainer Attributes
sizeThe number of playlists returned.
leafCountAddedThe number of items added to the playlist. If 0, then no items were added to the playlist.
leafCountRequestedThe number of items requested to be added.

Within the MediaContainer there is one Playlist child element. The Playlist element contains information on the new playlist on the Plex server.

Playlist Attributes
ratingKeyA key associated with the playlist.
keyThe relative URL of the items in the playlist. This URL returns information about the items in the playlist.
guidThe unique identifier comprised of the Plex agent and playlist identifier for the agent.
typeThe type of media.
titleThe title of the playlist.
summaryA description of the playlist. This can be changed by editing the playlist from within Plex after it has been created.
smart1 - playlist is a smart playlist.
0 - playlist is not a smart playlist.
playlistTypevideo - playlist contains videos/movies.
audio - playlist contains audio/music.
photo - playlist contains photos.
compositeThe URL of the image used to represent the playlist.
durationThe total duration, in milliseconds, of the number of items in the playlist. This value doesn't exist for photo playlists.
leafCountNumber of items in the playlist.
addedAtThe date and time, in Unix time, the playlist was added to the library.
updatedAtThe date and time in epoch time, the playlist was updated in the library.


Library key parameter

The Library Key parameter value can be found if you access the Plex server from the Web app.

When you hover over any item - movie, TV show, music, photo, etc. there will be a key parameter in the URL. That key value is the value you will use for the Library Key parameter.

The value is easy to find in the URL of the item. It has the structure /library/metadata/{id}. You will use the entire value of the key parameter from the media item URL.


curl -X PUT http://{ip_address}:32400/playlists/{playlist_id}&uri=server://{machine_id}/com.plexapp.plugins.library/{library_id}?X-Plex-Token={plex_token}
import requests
plex_url = http://{ip_address}:32400/playlists/{playlist_id}&uri=server://{machine_id}/com.plexapp.plugins.library/{library_id}?X-Plex-Token={plex_token}
response = requests.put(plex_url)
$response = Invoke-RestMethod 'http://{ip_address}:32400/playlists/{playlist_id}&uri=server://{machine_id}/com.plexapp.plugins.library/{library_id}?X-Plex-Token={plex_token}' -Method 'PUT'
Write-Output $response