---
title: "Create another playlist"
method: POST
path: "/api/playlist"
tags: ["playlist"]
---

# Create another playlist

`POST /api/playlist`

Create a new playlist that's owned by the current authenticated user

## Request body

- object
  - `name` string, required
  - `rules` SmartPlaylistRule[]
    - `id` integer, required
    - `rules` object[], required — An array of "subrules" (constraints) of the current rule
      - `id` integer, required
      - `model` 'title' | 'album.name' | 'artist.name' | 'interactions.play_count' | 'interactions.last_played_at' | 'length' | 'created_at' | 'updated_at', required
      - `operator` 'is' | 'isNot' | 'contains' | 'notContain' | 'isBetween' | 'isGreaterThan' | 'isLessThan' | 'beginsWith' | 'endsWith' | 'notInLast', required
      - `value` string[], required
  - `songs` string[] — An array of song IDs to populate the playlist. Only used if the playlist is not a smart one (i.e. `rules` are empty).

## Response `200`

OK

- Playlist — A Playlist model
  - `id` integer, required
  - `name` string, required
  - `rules` Playlist[], required — An array of Rule objects if the playlist is a Smart playlist
  - `is_smart` boolean, required — Whether the playlist is of Smart (dynamic) type

## Changes

- **2026-07-17** `b8837d22df45` — 1 breaking, 1 info
  - removed the enum value `interactions.updated_at` of the request property `rules/items/rules/items/model`
  - added the new `interactions.last_played_at` enum value to the request property `rules/items/rules/items/model`
- **2022-10-07** `016e72a7f4db` — 1 breaking, 1 info
  - removed the enum value `interations.play_count` of the request property `rules/items/rules/items/model`
  - added the new `interactions.play_count` enum value to the request property `rules/items/rules/items/model`
- **2021-10-08** `b40b4bae3a67` — 1 breaking, 1 info
  - the request property `name` became required
  - added the new optional request property `songs`
- **2021-01-31** `b41246f2c913` — 2 breaking, 1 warning, 3 info
  - removed the enum value `interactions.last_played_at` of the request property `rules/items/rules/items/model`
  - removed the enum value `interactions.play_count` of the request property `rules/items/rules/items/model`
  - removed the request property `songs`
  - the request property `name` became optional
  - …2 more

[Change history](https://skmtc.dev/koel/apis/koel-api/changes/api/playlist/post.md)

---

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