---
title: "Create a new playlist"
method: PUT
path: "/playlists"
tags: ["Playlists"]
---

# Create a new playlist

`PUT /playlists`

This create a new playlist and return it

## Query parameters

- `name` string
- `type` 'public' | 'private'

## Request body

- PlaylistCreateRequest
  - `name` string, required
  - `type` 'public' | 'private'

## Response `200`

Playlist created

- PlaylistObject
  - `id` string, required
  - `name` string, nullable, required
  - `owner` string, nullable, required
  - `user` UserSummaryObject, required
    - `id` string, required
    - `username` string, nullable, required
  - `items` union, required — The expanded song list when songs are included, otherwise the total song count. Playlists are song lists here: a playlist may physically hold other media types, but this method reports only songs so that real playlists and song smartlists share one shape.
    - object[]
      - `id` string, required
      - `playlisttrack` integer, required
    - integer
  - `type` string, nullable, required
  - `art` string, nullable, required
  - `has_access` boolean, required
  - `has_collaborate` boolean, required
  - `has_art` boolean, required
  - `flag` boolean, required
  - `rating` integer, nullable, required
  - `averagerating` number, nullable, required
  - `md5` string, nullable, required
  - `last_update` integer, nullable, required
  - `time` integer, required
  - `playlist_folder_id` string
  - `playlist_folder_sort_order` integer

## Other responses

- `400` — HTTP 400 Bad Request (errors 4705, 4710).
- `401` — HTTP 401 Unauthorized (error 4701).
- `403` — HTTP 403 Forbidden (errors 4700, 4703, 4742).
- `500` — HTTP 500 Internal Server Error (error 4702).

## Changes

- **2026-08-07** `f37b545b95d7` — 2 info
  - added the optional property `playlist_folder_id` to the response with the `200` status
  - added the optional property `playlist_folder_sort_order` to the response with the `200` status
- **2026-07-22** `e8e6b266ea29` — 6 info
  - api operation id `playlistCreate` was added
  - added optional request body
  - the `query` request parameter `name` became optional
  - added the non-success response with the status `401`
  - …2 more
- **2026-07-21** `d49e75ffe66b` — 2 info
  - added the required property `items/oneOf[subschema #1]/items/id` to the response with the `200` status
  - added the required property `items/oneOf[subschema #1]/items/playlisttrack` to the response with the `200` status
- **2026-07-21** `2ff18e50dcc1` — 16 info
  - added the required property `art` to the response with the `200` status
  - added the required property `averagerating` to the response with the `200` status
  - added the required property `flag` to the response with the `200` status
  - added the required property `has_access` to the response with the `200` status
  - …12 more
- **2026-07-17** `9abb9bf6d3bf` — 1 info
  - removed the non-success response with the status `400`

[Full history](https://skmtc.dev/ampache/apis/ampache-rest-api/changes/playlists/put.md)

---

[API](https://skmtc.dev/ampache/apis/ampache-rest-api.md) · [All operations](https://skmtc.dev/ampache/apis/ampache-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ampache/ampache-rest-api/revisions/42d304fb6867/schema)
