Playlists
User playlists. Each call is scoped to the authenticated user — owners and collaborators see different things based on their permission level.
Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /api/v4/me/playlists/ | List playlists you own or that are shared with you |
POST | /api/v4/me/playlists/ | Create a playlist |
GET | /api/v4/me/playlists/{slug}/ | Retrieve one playlist |
PATCH | /api/v4/me/playlists/{slug}/ | Update name, description, image |
DELETE | /api/v4/me/playlists/{slug}/ | Delete a playlist (owner only) |
POST | /api/v4/me/playlists/{slug}/tracks/ | Add or remove tracks, stems, sound effects |
POST | /api/v4/me/playlists/{slug}/tracks/reorder/ | Reorder items |
To list the tracks inside a playlist, use the catalog endpoint:
GET /api/v4/{locale}/tracks/?user_playlist={slug}This is the same endpoint that powers track browsing; the user_playlist filter scopes it to one of your playlists.
Authentication
All playlist endpoints require an authenticated request. Send your token:
Authorization: Bearer <PARTNER_API_KEY>The user identity is derived from the token. Partners that act on behalf of an end user should make sure that user is signed in to the relevant Slipstream account first.
Permissions
A playlist has one owner and any number of collaborators.
| Action | Owner | Collaborator (can_edit) | Anyone else |
|---|---|---|---|
| List, retrieve | ✓ | ✓ | — |
| Update name/description/image | ✓ | ✓ | — |
| Add or remove items | ✓ | ✓ | — |
| Reorder items | ✓ | ✓ | — |
| Delete | ✓ | — | — |
Endpoints return 403 Forbidden when the caller lacks permission.
The Playlist object
{
"id": "8a4b2c1d-9e7f-4a6b-b3c2-1f8d4e5a7c6b",
"name": "Late Night",
"slug": "late-night",
"description": "Reflective jazz under 120 BPM",
"owner": {
"id": "1e2d3c4b-5a69-4f78-9012-345678abcdef",
"username": "user-12345",
"name": "Sam Editor"
},
"permission": "owner",
"playlist_type": "user",
"tracks": 12,
"duration": 2814,
"url": "/playlists/late-night",
"blurhash": "L6PZfSi_.AyE_3t7t7R**0o#DgR4",
"all_image_sizes": {
"small": "https://...",
"medium": "https://...",
"large": "https://..."
},
"collaborators": [
{ "id": "...", "username": "...", "permission": "can_edit" }
]
}| Field | Description |
|---|---|
id | Playlist UUID. |
name | Title. |
slug | URL-friendly identifier. Use this in every endpoint path. |
description | Free text. |
owner | The user who created the playlist. |
permission | "owner" if the caller created it, otherwise "can_edit". |
playlist_type | Always "user" for endpoints under /api/v4/me/playlists/. |
tracks | Item count. Available on retrieve/update responses. |
duration | Total runtime in seconds. Available on retrieve/update responses. |
url | Internal path on slipstreammusic.com. |
blurhash, all_image_sizes | Cover image, when set. |
collaborators | Users with can_edit permission. Empty for solo playlists. |
The list endpoint returns a slimmer shape — without tracks, duration, playlist_type, and collaborators. Call retrieve when you need those.
Pagination
list uses limit/offset:
| Parameter | Default | Max |
|---|---|---|
limit | 20 | 100 |
offset | 0 | — |
Errors
| HTTP | When |
|---|---|
| 400 | Validation error in body or query string |
| 401 | Not authenticated |
| 403 | Authenticated but lacking permission for that playlist |
| 404 | Playlist not found, or not visible to the caller |
| 429 | Rate limit hit |