TIDAL Playlists API
Create, read, update, delete, and reorder TIDAL playlists. Manage playlist items, cover art, owners, and editorial vs. user-created classifications. Requires playlists.read and playlists.write scopes.
Create, read, update, delete, and reorder TIDAL playlists. Manage playlist items, cover art, owners, and editorial vs. user-created classifications. Requires playlists.read and playlists.write scopes.
openapi: 3.0.1
info:
title: TIDAL Playlists API
version: 1.10.14
description: Create, read, update, delete, and reorder TIDAL playlists. Supports user-owned and editorial playlists.
x-source: https://tidal-music.github.io/tidal-api-reference/tidal-api-oas.json
servers:
- url: https://openapi.tidal.com/v2
description: Production
paths:
/playlists:
get:
description: Retrieves multiple playlists by available filters, or without if applicable.
parameters:
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: Values prefixed with "-" are sorted descending; values without it are sorted ascending.
in: query
name: sort
required: false
schema:
type: array
items:
type: string
example: createdAt
enum:
- createdAt
- -createdAt
- lastModifiedAt
- -lastModifiedAt
- name
- -name
default: -createdAt
x-enum-varnames:
- CreatedAtAsc
- CreatedAtDesc
- LastModifiedAtAsc
- LastModifiedAtDesc
- NameAsc
- NameDesc
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: collaboratorProfiles,
collaborators, coverArt, items, ownerProfiles, owners'
example: collaboratorProfiles
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: collaboratorProfiles
- description: Playlist id (e.g. `550e8400-e29b-41d4-a716-446655440000`)
in: query
name: filter[id]
required: false
schema:
type: array
items:
type: string
- description: User id. Use `me` for the authenticated user
in: query
name: filter[owners.id]
required: false
schema:
type: array
items:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Multi_Resource_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- playlists.read
- r_usr
summary: Get multiple playlists.
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
post:
description: Creates a new playlist.
parameters:
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsCreateOperation_Payload'
responses:
'201':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Single_Resource_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Create single playlist.
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
/playlists/{id}:
delete:
description: Deletes existing playlist.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Delete single playlist.
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
get:
description: Retrieves single playlist by id.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: collaboratorProfiles,
collaborators, coverArt, items, ownerProfiles, owners'
example: collaboratorProfiles
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: collaboratorProfiles
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Single_Resource_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE: []
summary: Get single playlist.
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
patch:
description: Updates existing playlist.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsUpdateOperation_Payload'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Update single playlist.
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
/playlists/{id}/relationships/collaboratorProfiles:
delete:
description: Deletes item(s) from collaboratorProfiles relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsCollaboratorProfilesRelationshipRemoveOperation_Payload'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Delete from collaboratorProfiles relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: INTERNAL
get:
description: Retrieves collaboratorProfiles relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: collaboratorProfiles'
example: collaboratorProfiles
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: collaboratorProfiles
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE: []
summary: Get collaboratorProfiles relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: INTERNAL
post:
description: Adds item(s) to collaboratorProfiles relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsCollaboratorProfilesRelationshipAddOperation_Payload'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Add to collaboratorProfiles relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: INTERNAL
/playlists/{id}/relationships/collaborators:
get:
description: Retrieves collaborators relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: collaborators'
example: collaborators
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: collaborators
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE: []
summary: Get collaborators relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: INTERNAL
/playlists/{id}/relationships/coverArt:
get:
description: Retrieves coverArt relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: coverArt'
example: coverArt
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: coverArt
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE: []
summary: Get coverArt relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
patch:
description: Updates coverArt relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsCoverArtRelationshipUpdateOperation_Payload'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Update coverArt relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: INTERNAL
/playlists/{id}/relationships/items:
delete:
description: Deletes item(s) from items relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsItemsRelationshipRemoveOperation_Payload'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Delete from items relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
get:
description: Retrieves items relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: items'
example: items
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: items
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Items_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE: []
summary: Get items relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
patch:
description: Updates items relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsItemsRelationshipUpdateOperation_Payload'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Update items relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
post:
description: Adds item(s) to items relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
requestBody:
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PlaylistsItemsRelationshipAddOperation_Payload'
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Items_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- playlists.write
- w_usr
summary: Add to items relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
/playlists/{id}/relationships/ownerProfiles:
get:
description: Retrieves ownerProfiles relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: ownerProfiles'
example: ownerProfiles
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: ownerProfiles
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE: []
summary: Get ownerProfiles relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
/playlists/{id}/relationships/owners:
get:
description: Retrieves owners relationship.
parameters:
- description: Playlist id
example: 550e8400-e29b-41d4-a716-446655440000
in: path
name: id
required: true
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: owners'
example: owners
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: owners
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Playlists_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE: []
summary: Get owners relationship ("to-many").
tags:
- playlists
x-path-item-properties:
required-access-tier: THIRD_PARTY
components:
schemas:
PlaylistsItemsRelationshipUpdateOperation_Payload_Data_Meta:
# --- truncated at 32 KB (174 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tidal/refs/heads/main/openapi/tidal-playlists-api-openapi.yml