openapi: 3.0.3 info: title: 7digital Artists Playlists API description: The classic 7digital REST API (v1.2) provides access to the 7digital music catalogue (artists, releases, tracks, tags), user lockers, basket/checkout, payment, editorial, territories and IP-lookup. All operations are signed with OAuth 1.0 and scoped by a consumer key issued under a commercial agreement. version: '1.2' contact: name: 7digital / MassiveMusic Client Success url: https://docs.massivemusic.com/docs/support license: name: Commercial — 7digital / MassiveMusic url: https://docs.massivemusic.com/docs/sla x-last-validated: '2026-05-28' x-generated-from: documentation x-source-url: https://github.com/7digital/7digital-api/blob/master/assets/7digital-api-schema.json servers: - url: https://api.7digital.com/1.2 description: 7digital Public API v1.2 (production) security: - oauth1: [] tags: - name: Playlists description: Partner-level playlist management — create, list, update and add tracks. paths: /playlists: get: operationId: listPlaylists summary: 7digital List Playlists description: Get a list of the partner's playlists. tags: - Playlists parameters: - name: userId in: query description: Filter playlists by user. schema: type: string example: '500123' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' responses: '200': description: A paged list of playlists. content: application/json: schema: $ref: '#/components/schemas/PlaylistListResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: operationId: createPlaylist summary: 7digital Create Playlist description: Create a new playlist tied to your partner consumer key. Can optionally be associated with a user. Initial tracks may be supplied or the playlist can be created empty. tags: - Playlists parameters: - name: userId in: query description: User to associate the playlist with. schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePlaylistRequest' responses: '201': description: The newly created playlist. content: application/json: schema: $ref: '#/components/schemas/Playlist' x-microcks-operation: delay: 0 dispatcher: FALLBACK /playlists/{playlistId}: put: operationId: updatePlaylistDetails summary: 7digital Update Playlist Details description: Update a playlist's details. Does not affect playlist tracks. Use to, e.g., change visibility from private to public. Descriptions are truncated to 500 characters. tags: - Playlists parameters: - $ref: '#/components/parameters/PlaylistIdPath' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePlaylistRequest' responses: '200': description: The updated playlist. content: application/json: schema: $ref: '#/components/schemas/Playlist' x-microcks-operation: delay: 0 dispatcher: FALLBACK /playlists/{playlistId}/tracks: post: operationId: addTracksToPlaylist summary: 7digital Add Tracks To Playlist description: Add tracks to the playlist. All metadata must be provided in the call. The `source` and `audioUrl` properties are optional and may indicate an alternative source for the physical file. tags: - Playlists parameters: - $ref: '#/components/parameters/PlaylistIdPath' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddTracksRequest' responses: '200': description: The updated playlist. content: application/json: schema: $ref: '#/components/schemas/Playlist' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: PlaylistTrack: allOf: - $ref: '#/components/schemas/PlaylistTrackInput' - type: object properties: position: type: integer example: 1 addedAt: type: string format: date-time example: '2026-05-28T14:30:00Z' UpdatePlaylistRequest: type: object properties: name: type: string example: Morning Run description: type: string maxLength: 500 example: High-energy tracks for early-morning runs. visibility: type: string enum: - private - public example: public AddTracksRequest: type: object properties: tracks: type: array items: $ref: '#/components/schemas/PlaylistTrackInput' required: - tracks PlaylistTrackInput: type: object properties: trackId: type: string example: '123456' title: type: string example: Come Together artist: type: string example: The Beatles source: type: string description: Source for the physical file (defaults to `7digital`). example: 7digital audioUrl: type: string format: uri description: Optional alternative source URL for the physical file. example: file://a.specific.file.location.mp3 image: type: string format: uri example: https://artwork-cdn.7static.com/static/img/sleeveart/00/117/000/0011700062_350.jpg required: - trackId - title - artist CreatePlaylistRequest: type: object properties: name: type: string example: Morning Run description: type: string maxLength: 500 example: High-energy tracks for early-morning runs. visibility: type: string enum: - private - public example: public tracks: type: array items: $ref: '#/components/schemas/PlaylistTrackInput' required: - name Playlist: type: object properties: id: type: string example: playlist-789012 name: type: string example: Morning Run description: type: string maxLength: 500 example: High-energy tracks for early-morning runs. visibility: type: string enum: - private - public example: public userId: type: string nullable: true example: '500123' trackCount: type: integer example: 24 tracks: type: array items: $ref: '#/components/schemas/PlaylistTrack' createdAt: type: string format: date-time example: '2026-05-28T14:30:00Z' modifiedAt: type: string format: date-time example: '2026-05-28T15:00:00Z' PlaylistListResponse: type: object properties: status: type: string example: ok page: type: integer example: 1 pageSize: type: integer example: 20 totalItems: type: integer example: 12 playlists: type: array items: $ref: '#/components/schemas/Playlist' parameters: PlaylistIdPath: name: playlistId in: path required: true description: 7digital playlist id. schema: type: string example: playlist-789012 Page: name: page in: query description: 1-based page number. schema: type: integer minimum: 1 default: 1 example: 1 PageSize: name: pageSize in: query description: Number of items per page. schema: type: integer minimum: 1 maximum: 100 default: 20 example: 20 securitySchemes: oauth1: type: apiKey in: query name: oauth_consumer_key description: 7digital uses OAuth 1.0 signing. Every request MUST include `oauth_consumer_key` as either a query parameter or in the Authorization header. Sensitive operations require a 2-legged or 3-legged signature with a user access token. oauth1_two_legged: type: apiKey in: query name: oauth_consumer_key description: 2-legged OAuth 1.0 (partner-scoped — consumer key + secret only). oauth1_three_legged: type: apiKey in: query name: oauth_consumer_key description: 3-legged OAuth 1.0 (consumer key + secret plus a user access token + secret).