Create playlist draft
create_draftBuild a draft playlist from artists, genres, moods, or similar songs. Review and edit before publishing to Spotify or exporting as a Deezer list.
Instructions
Build a draft playlist from artists and/or seeds. Works with a Spotify login (publishable) or with provider "deezer" and no account at all (export the list instead of publishing). Artists: a typed list (festival lineup, "these five bands"). Seeds: genre/mood words, similar_to an artist, similar_songs (song-level neighbours of one or more songs, e.g. "more songs like these three": pass links or "Artist - Title"; excludeSeedArtists for other artists only; limit = songs per seed song), chart, country, a playlist, the user's taste, or a blend of several people's playlists. For a free-text request ("rainy Sunday jazz for cooking", "90s hip hop for a run") propose 15-30 fitting artists yourself and pass them as artists, and add a genre seed with the same words so the list is not only your guess. Each artist gets its most popular songs (Deezer/Last.fm ranking, matched to Spotify by ISRC); constraints: tracksPerArtist, maxDurationMin, excludeExplicit, yearRange, bpmRange, skipCovers, excludeTracksFrom. Returns within ~15 s; larger builds continue in the background (status "building") — poll with get_draft waitSeconds: 25. Nothing is written to Spotify until create_playlist. Defaults: headliner 5, sub 3, undercard 2 tracks (flat artists 3), max 250 tracks, interleaved order, private playlist, live/remix versions skipped.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Keep only artists tagged with these days | |
| name | No | Playlist name; default "<lineup> · Lineupify" | |
| order | No | interleave (default, spreads artists), lineup (artist by artist), shuffle, by_day, known_first | |
| seeds | No | ||
| lineup | No | Festival name and year, or a short theme, used for the playlist name, e.g. "Glastonbury 2026" or "Rainy Sunday jazz" | |
| public | No | ||
| artists | No | Required unless seeds are given | |
| sources | No | ||
| bpmRange | No | Keep only tracks whose tempo (Deezer) is in this range, e.g. running { min: 160, max: 180 } | |
| provider | No | spotify: needs a connected account, can publish. deezer: no account or login at all, every feature except publishing (export the list instead). Default: spotify when connected, otherwise deezer | |
| maxTracks | No | ||
| strictBpm | No | With bpmRange: also drop tracks with no known tempo | |
| yearRange | No | Keep only tracks released in this range, e.g. { from: 1990, to: 1999 } | |
| skipCovers | No | Drop a song when a more popular artist has the original (e.g. a Motörhead cover of Enter Sandman). Off by default; costs one Deezer lookup per track | |
| strictYear | No | With yearRange: also drop tracks whose year is unknown or comes from a remaster/compilation | |
| description | No | ||
| allowVersions | No | Allow live/remix/edit versions | |
| discoveryOnly | No | Skip artists already in the user's top or followed artists | |
| tracksPerTier | No | ||
| excludeArtists | No | ||
| maxDurationMin | No | Total length cap, e.g. 45 for a commute | |
| excludeExplicit | No | ||
| tracksPerArtist | No | Same count for every artist; overrides tracksPerTier. Use 1 for "one song per artist" | |
| excludeSeedSongs | No | similar_songs: leave the seed songs themselves out (default false: they stay in as anchors) | |
| stopIfUnresolved | No | Off by default. When true, create_playlist refuses until every artist is found or excluded, so the user can fix names first | |
| excludeTracksFrom | No | Never pick tracks that are in these playlists / "library" (e.g. "songs I do not already have") | |
| excludeSeedArtists | No | similar_songs: leave out every song by the seed songs' artists, for "other artists only" (default false) |