openapi: 3.0.4
info:
title: SoundCloud Public API Specification
description: >
Swagger json can be found
[here](https://developers.soundcloud.com/docs/api/explorer/api.json)
Cookie manager
contact:
name: API issue tracker
url: 'https://github.com/soundcloud/api'
version: 1.0.0
termsOfService: 'https://developers.soundcloud.com/docs/api/terms-of-use'
servers:
- url: 'https://api.soundcloud.com'
security:
- AuthHeader: []
- oAuth2_1: []
tags:
- name: oauth
description: Authentication and Authorization Endpoints.
- name: me
description: >-
Own User Endpoints. Requires an access token obtained via the
authorization_code flow (resource owner required).
- name: search
description: >-
Search Endpoints. Supports access tokens from both authorization_code and
client_credentials flows.
- name: playlists
description: Playlists Endpoints.
- name: system-playlists
description: 'System Playlists Endpoints (e.g. track stations, artist stations).'
- name: tracks
description: Tracks Endpoints.
- name: users
description: SoundCloud Users Endpoints.
- name: likes
description: Liking Tracks & Playlists.
- name: reposts
description: Reposting Tracks & Playlists.
- name: miscellaneous
description: Miscellaneous Endpoints.
paths:
/me:
get:
summary: Returns the authenticated user’s information.
tags:
- me
responses:
'200':
$ref: '#/components/responses/Me'
'401':
$ref: '#/components/responses/Unauthorized'
/me/activities:
get:
summary: Returns the authenticated user's feed
deprecated: true
tags:
- me
parameters:
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Activities'
'401':
$ref: '#/components/responses/Unauthorized'
/me/activities/all/own:
get:
summary: Returns the authenticated user's feed
deprecated: true
tags:
- me
parameters:
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Activities'
'401':
$ref: '#/components/responses/Unauthorized'
/me/activities/tracks:
get:
summary: Returns the authenticated user's recent track related feed.
deprecated: true
tags:
- me
parameters:
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Activities'
'401':
$ref: '#/components/responses/Unauthorized'
/me/feed:
get:
summary: Returns the authenticated user's feed.
tags:
- me
parameters:
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Activities'
'401':
$ref: '#/components/responses/Unauthorized'
/me/feed/tracks:
get:
summary: Returns the authenticated user's recent track related feed.
tags:
- me
parameters:
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Activities'
'401':
$ref: '#/components/responses/Unauthorized'
/me/recently-played/tracks:
get:
summary: Returns the authenticated user's last 25 recently played tracks.
description: >-
Returns up to 25 full track objects in reverse chronological order.
Duplicate tracks are omitted, keeping only the most recent play. Tracks
that are not visible to the caller are omitted. This endpoint does not
support pagination or a `limit` query parameter.
tags:
- me
parameters:
- $ref: '#/components/parameters/access_explicit'
responses:
'200':
$ref: '#/components/responses/Tracks'
'401':
$ref: '#/components/responses/Unauthorized'
/me/likes/tracks:
get:
summary: Returns a list of favorited or liked tracks of the authenticated user.
tags:
- me
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/access_explicit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'401':
$ref: '#/components/responses/Unauthorized'
/me/likes/playlists:
get:
summary: >-
Returns a list of favorited or liked playlists of the authenticated
user.
tags:
- me
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Playlists'
'401':
$ref: '#/components/responses/Unauthorized'
/me/followings:
get:
summary: Returns a list of users who are followed by the authenticated user.
tags:
- me
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
/me/followings/tracks:
get:
summary: >-
Returns a list of recent tracks from users followed by the authenticated
user.
tags:
- me
parameters:
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
$ref: '#/components/responses/TracksList'
'401':
$ref: '#/components/responses/Unauthorized'
'/me/followings/{user_urn}':
get:
summary: >-
Returns a user who is followed by the authenticated user. (use
/users/{user_urn} instead, to fetch the user details)
deprecated: true
tags:
- me
parameters:
- $ref: '#/components/parameters/user_urn'
responses:
'200':
$ref: '#/components/responses/User'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
summary: Follows a user.
description: >-
Fails with 422 when the user cannot be followed, for example when the
authenticated user has reached the maximum number of followings. The
response `message` states the reason.
tags:
- me
parameters:
- $ref: '#/components/parameters/user_urn_to_follow'
responses:
'200':
$ref: '#/components/responses/Successful'
'201':
$ref: '#/components/responses/User'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
delete:
summary: Deletes a user who is followed by the authenticated user.
tags:
- me
parameters:
- $ref: '#/components/parameters/user_urn_to_follow'
responses:
'200':
description: Success
content:
application/json; charset=utf-8:
examples:
'200':
$ref: '#/components/examples/OK'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/me/followers:
get:
summary: Returns a list of users who are following the authenticated user.
tags:
- me
parameters:
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
'/me/followers/{follower_urn}':
get:
summary: >-
Returns a user who is following the authenticated user. (use
/users/{user_urn} instead, to fetch the user details)
deprecated: true
tags:
- me
parameters:
- $ref: '#/components/parameters/follower_urn'
responses:
'200':
$ref: '#/components/responses/User'
'401':
$ref: '#/components/responses/Unauthorized'
/me/playlists:
get:
summary: Returns user’s playlists (sets).
description: 'Returns playlist info, playlist tracks and tracks owner info.'
tags:
- me
parameters:
- $ref: '#/components/parameters/show_tracks'
- $ref: '#/components/parameters/linked_partitioning'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Playlists'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/me/tracks:
get:
summary: Returns a list of user's tracks.
tags:
- me
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'401':
$ref: '#/components/responses/Unauthorized'
/me/reposts/tracks:
get:
summary: Returns a list of track reposts of the authenticated user.
tags:
- me
- reposts
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/access_explicit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'401':
$ref: '#/components/responses/Unauthorized'
/me/reposts/playlists:
get:
summary: Returns a list of playlist reposts of the authenticated user.
tags:
- me
- reposts
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Playlists'
'401':
$ref: '#/components/responses/Unauthorized'
/tracks:
get:
summary: Performs a track search based on a query
tags:
- search
parameters:
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/urns'
- $ref: '#/components/parameters/genres'
- $ref: '#/components/parameters/tags'
- $ref: '#/components/parameters/bpm'
- $ref: '#/components/parameters/duration'
- $ref: '#/components/parameters/created_at'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
description: Internal Server Error
post:
summary: Uploads a new track.
tags:
- tracks
requestBody:
content:
multipart/form-data:
schema:
allOf:
- $ref: '#/components/schemas/TrackDataRequest'
- required:
- 'track[title]'
- 'track[asset_data]'
examples:
default:
$ref: '#/components/examples/TrackDataRequest'
multipart/x-www-form-urlencoded:
schema:
allOf:
- $ref: '#/components/schemas/TrackDataRequest'
- required:
- 'track[title]'
- 'track[asset_data]'
responses:
'201':
$ref: '#/components/responses/Track'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/playlists:
get:
summary: Performs a playlist search based on a query
tags:
- search
parameters:
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/show_tracks'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Playlists'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
post:
summary: Creates a playlist.
tags:
- playlists
requestBody:
description: Create Playlist request
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdatePlaylistRequest'
examples:
default:
$ref: '#/components/examples/CreateUpdatePlaylistRequest'
multipart/form-data:
schema:
allOf:
- $ref: '#/components/schemas/CreateUpdatePlaylistFormRequest'
- required:
- 'playlist[title]'
examples:
default:
$ref: '#/components/examples/CreateUpdatePlaylistFormRequest'
responses:
'201':
$ref: '#/components/responses/Playlist'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/users:
get:
summary: Performs a user search based on a query
tags:
- search
parameters:
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/urns'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Users'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'/playlists/{playlist_urn}':
get:
summary: Returns a playlist.
tags:
- playlists
parameters:
- $ref: '#/components/parameters/playlist_urn'
- $ref: '#/components/parameters/secret_token'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/show_tracks'
responses:
'200':
$ref: '#/components/responses/Playlist'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
put:
summary: Updates a playlist.
tags:
- playlists
parameters:
- $ref: '#/components/parameters/fake_playlist_urn'
requestBody:
description: Playlist payload
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdatePlaylistRequest'
examples:
default:
$ref: '#/components/examples/CreateUpdatePlaylistRequest'
responses:
'200':
$ref: '#/components/responses/Playlist'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
summary: Deletes a playlist.
tags:
- playlists
parameters:
- $ref: '#/components/parameters/fake_playlist_urn'
responses:
'200':
description: Success
'404':
$ref: '#/components/responses/NotFound'
'/playlists/{playlist_urn}/tracks':
get:
summary: Returns tracks under a playlist.
tags:
- playlists
parameters:
- $ref: '#/components/parameters/playlist_urn'
- $ref: '#/components/parameters/secret_token'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'/playlists/{playlist_urn}/reposters':
get:
summary: Returns a collection of playlist's reposters.
tags:
- playlists
parameters:
- $ref: '#/components/parameters/playlist_urn'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/tracks/{track_urn}':
get:
summary: Returns a track.
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
- $ref: '#/components/parameters/secret_token'
responses:
'200':
$ref: '#/components/responses/Track'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
summary: Updates a track's information.
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
requestBody:
description: Track payload
content:
application/json:
schema:
$ref: '#/components/schemas/TrackMetadataRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/TrackUpdateFormRequest'
multipart/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TrackUpdateFormRequest'
responses:
'200':
$ref: '#/components/responses/Track'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
delete:
summary: Deletes a track.
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
responses:
'200':
description: Success
'404':
$ref: '#/components/responses/NotFound'
'/tracks/{track_urn}/storefront':
put:
summary: Creates or updates the storefront (Artist Storefront) of a track.
description: >
Creates or updates the storefront module shown on the track page. The
request replaces
the whole storefront: optional fields (link_title, description, price)
are cleared when
omitted, so always send every value the storefront should keep. The
request fails with
403 when the authenticated user does not own the track, and also when
the user does not
hold a creator subscription that includes external purchase options. The
storefront
links to an external page — no payment is processed by SoundCloud.
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
requestBody:
description: Storefront payload
content:
application/json:
schema:
$ref: '#/components/schemas/StorefrontUpdateRequest'
responses:
'200':
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Storefront'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'/tracks/{track_urn}/preview':
get:
summary: Starts playback of a preview of the track
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
- $ref: '#/components/parameters/secret_token'
responses:
'302':
$ref: '#/components/responses/Found'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/tracks/{track_urn}/streams':
get:
summary: Returns a track's streamable URLs (needs to keep using authentication)
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
- $ref: '#/components/parameters/secret_token'
responses:
'200':
$ref: '#/components/responses/Streams'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/tracks/{track_urn}/comments':
get:
summary: Returns the comments posted on the track(track_urn).
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Comments'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
post:
summary: Returns the newly created comment on success
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
requestBody:
description: |
Body of a comment
required: true
content:
application/json; charset=utf-8:
schema:
type: object
properties:
comment:
type: object
properties:
body:
type: string
description: Comment's content
example: test comment
timestamp:
description: >-
Timestamp of a comment. String or float representation
is supported
oneOf:
- type: string
- type: number
required:
- body
responses:
'201':
$ref: '#/components/responses/Comment'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
'/tracks/{track_urn}/favoriters':
get:
summary: Returns a list of users who have favorited or liked the track.
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/tracks/{track_urn}/reposters':
get:
summary: Returns a collection of track's reposters.
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/tracks/{track_urn}/related':
get:
summary: Returns all related tracks of track on SoundCloud.
tags:
- tracks
parameters:
- $ref: '#/components/parameters/track_urn'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/system-playlists/{id}':
get:
summary: Returns a system playlist.
tags:
- system-playlists
parameters:
- $ref: '#/components/parameters/system_playlist_id'
- $ref: '#/components/parameters/access'
responses:
'200':
$ref: '#/components/responses/SystemPlaylist'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/resolve:
get:
summary: >-
Resolves soundcloud.com and on.soundcloud.com URLs to Resource URLs to
use with the API.
tags:
- miscellaneous
parameters:
- $ref: '#/components/parameters/url'
responses:
'302':
$ref: '#/components/responses/Found'
'404':
$ref: '#/components/responses/NotFound'
'/users/{user_urn}':
get:
summary: Returns a user.
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
responses:
'200':
$ref: '#/components/responses/User'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/users/{user_urn}/related':
get:
summary: Returns related artist recommendations for a user on SoundCloud.
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/users/{user_urn}/favorites':
get:
summary: >-
Returns a list of user's favorited or liked tracks. (use
/users/:userId/likes/tracks instead, to fetch a user's likes)
deprecated: true
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'401':
$ref: '#/components/responses/Unauthorized'
'/users/{user_urn}/followers':
get:
summary: Returns a list of user’s followers.
description: Returns a list of users that follows (user_urn).
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
'/users/{user_urn}/followings':
get:
summary: Returns a list of user’s followings.
description: Returns list of users that (user_urn) follows.
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/Users'
'401':
$ref: '#/components/responses/Unauthorized'
'/users/{user_urn}/followings/{following_urn}':
get:
summary: >-
Returns a user's following. (use /users/{user_urn} instead, to fetch the
user details)
description: Returns (following_id) that is followed by (user_urn).
deprecated: true
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/following_urn'
responses:
'200':
$ref: '#/components/responses/User'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/users/{user_urn}/playlists':
get:
summary: Returns a list of user's playlists.
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/show_tracks'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Playlists'
'401':
$ref: '#/components/responses/Unauthorized'
'/users/{user_urn}/tracks':
get:
summary: Returns a list of user's tracks.
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/sort'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'401':
$ref: '#/components/responses/Unauthorized'
'/users/{user_urn}/web-profiles':
get:
summary: >-
Returns list of user's links added to their profile (website, facebook,
instagram).
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/limit'
responses:
'200':
$ref: '#/components/responses/WebProfiles'
'401':
$ref: '#/components/responses/Unauthorized'
'/users/{user_urn}/likes/tracks':
get:
summary: Returns a list of user's liked tracks.
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/users/{user_urn}/likes/playlists':
get:
summary: Returns a list of user's liked playlists.
tags:
- users
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Playlists'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/users/{user_urn}/reposts/tracks':
get:
summary: Returns a list of user's track reposts.
tags:
- users
- reposts
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/access'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Tracks'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/users/{user_urn}/reposts/playlists':
get:
summary: Returns a list of user's playlist reposts.
tags:
- users
- reposts
parameters:
- $ref: '#/components/parameters/user_urn'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/linked_partitioning'
responses:
'200':
$ref: '#/components/responses/Playlists'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/likes/tracks/{track_urn}':
post:
summary: Likes a track.
tags:
- likes
parameters:
- $ref: '#/components/parameters/test_track_urn'
responses:
'200':
$ref: '#/components/responses/Success'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
delete:
summary: Unlikes a track.
tags:
- likes
parameters:
- $ref: '#/components/parameters/test_track_urn'
responses:
'200':
$ref: '#/components/responses/Success'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'/likes/playlists/{playlist_urn}':
post:
summary: Likes a playlist.
tags:
- likes
parameters:
- $ref: '#/components/parameters/playlist_urn'
responses:
'200':
$ref: '#/components/responses/Success'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
delete:
summary: Unlikes a playlist.
tags:
- likes
parameters:
- $ref: '#/components/parameters/playlist_urn'
responses:
'200':
$ref: '#/components/responses/Success'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'/reposts/tracks/{track_urn}':
post:
summary: Reposts a track as the authenticated user
tags:
- reposts
parameters:
- $ref: '#/components/parameters/test_track_urn'
responses:
'201':
description: Created
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
summary: Removes a repost on a track as the authenticated user
deprecated: true
tags:
- reposts
parameters:
- $ref: '#/components/parameters/test_track_urn'
responses:
'200':
description: Success
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'/reposts/playlists/{playlist_urn}':
post:
summary: Reposts a playlist as the authenticated user
tags:
- reposts
parameters:
- $ref: '#/components/parameters/repost_playlist_urn'
responses:
'201':
description: Created
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
summary: Removes a repost on a playlist as the authenticated user
tags:
- reposts
parameters:
- $ref: '#/components/parameters/repost_playlist_urn'
responses:
'200':
description: Success
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/disconnect:
post:
summary: Revokes OAuth access for the calling application.
description: >
Invalidates access tokens for the client application that issued the
current access token.
Returns 400 if disconnect is not supported for the current token.
tags:
- oauth
responses:
'204':
description: Tokens invalidated successfully.
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
description: Internal Server Error
/sign-out:
post:
summary: invalidates session associated with current token
responses:
'200':
description: Success
components:
parameters:
bpm:
in: query
name: bpm
description: 'Return tracks with a specified bpm[from], bpm[to]'
required: false
style: deepObject
schema:
type: object
properties:
from:
type: integer
description: Return tracks with at least this bpm value
example: 123
to:
type: integer
description: Return tracks with at most this bpm value
example: 456
client_id:
in: query
name: client_id
required: true
schema:
type: string
description: The client id belonging to your application
example: some client
created_at:
in: query
name: created_at
description: '(yyyy-mm-dd hh:mm:ss) return tracks created within the specified dates'
required: false
style: deepObject
schema:
type: object
properties:
from:
type: string
description: '(yyyy-mm-dd hh:mm:ss) return tracks created at this date or later'
example: '2020-12-24 00:00:00'
to:
type: string
description: >-
(yyyy-mm-dd hh:mm:ss) return tracks created at this date or
earlier
example: '2020-12-26 00:00:00'
duration:
in: query
name: duration
description: Return tracks within a specified duration range
required: false
style: deepObject
schema:
type: object
properties:
from:
type: integer
description: Return tracks with at least this duration value
example: 123456
to:
type: integer
description: Return tracks with at most this duration value
example: 456789
genres:
in: query
name: genres
required: false
schema:
type: string
description: A comma separated list of genres
example: 'Pop,House'
ids:
in: query
name: ids
required: false
deprecated: true
schema:
type: string
description: A comma separated list of track ids to filter on
example: '1,2,3'
urns:
in: query
name: urns
required: false
schema:
type: string
description: A comma separated list of track urns to filter on
example: 'soundcloud:tracks:1,soundcloud:tracks:2,soundcloud:tracks:3'
limit:
in: query
name: limit
required: false
schema:
type: integer
minimum: 1
maximum: 200
default: 50
description: Number of results to return in the collection.
example: 2
offset:
deprecated: true
in: query
name: offset
required: false
schema:
type: integer
default: 0
description: 'Offset of first result. Deprecated, use `linked_partitioning` instead.'
example: 0
q:
in: query
name: q
required: false
schema:
type: string
description: search
example: hello
redirect_uri:
in: query
name: redirect_uri
required: true
schema:
type: string
description: The redirect uri you have configured for your application
example: 'https://soundcloud.com'
response_type:
in: query
name: response_type
required: true
schema:
type: string
enum:
- code
description: Support only the Authorization Code Flow
example: code
scope:
in: query
name: scope
required: true
schema:
type: string
description: Scope. Leave blank by default
example: default
state:
in: query
name: state
required: false
schema:
type: string
description: >-
Any value included here will be appended to the redirect URI. Use this
for CSRF protection.
example: encrypted_session_info
tags:
in: query
name: tags
required: false
schema:
type: string
description: A comma separated list of tags
example: test
url:
in: query
name: url
required: true
schema:
type: string
description: >
SoundCloud URL to resolve. Supports track, playlist, user, and system
playlist permalinks (e.g.
`https://soundcloud.com/discover/sets/track-stations:2287580618`).
example: 'https://soundcloud.com/user-434241656'
linked_partitioning:
in: query
name: linked_partitioning
required: false
schema:
type: boolean
description: >-
Returns paginated collection of items (recommended, returning a list
without pagination is deprecated and should not be used)
example: true
sort:
in: query
name: sort
required: false
schema:
type: string
enum:
- asc
- desc
default: desc
description: >-
Sort order of tracks by upload date. `desc` returns newest tracks first;
`asc` returns oldest first. Also accepts `direction` or `order` as
aliases.
example: desc
secret_token:
in: query
name: secret_token
required: false
schema:
type: string
description: A secret token to fetch private playlists/tracks
access:
in: query
name: access
schema:
type: array
items:
type: string
enum:
- playable
- preview
- blocked
default: 'playable,preview'
description: >
Filters content by level of access the user (logged in or anonymous) has
to the track. The result list will include only tracks with the
specified access. Include all options if you'd like to see all possible
tracks. See `Track#access` schema for more details.
style: form
explode: false
access_explicit:
in: query
name: access
schema:
type: array
items:
type: string
enum:
- playable
- preview
- blocked
default: 'playable,preview,blocked'
description: >
Filters content by level of access the user (logged in or anonymous) has
to the track. The result list will include only tracks with the
specified access. Include all options if you'd like to see all possible
tracks. See `Track#access` schema for more details.
style: form
explode: false
show_tracks:
in: query
name: show_tracks
required: false
schema:
type: boolean
description: >-
A boolean flag to request a playlist with or without tracks. Default is
`true`.
example: true
comment_urn:
in: path
name: comment_urn
required: true
schema:
type: string
description: SoundCloud comment urn
example: 'soundcloud:comments:123456'
follower_urn:
in: path
name: follower_urn
required: true
schema:
type: string
description: SoundCloud User id to denote a Follower
example: 'soundcloud:users:743372812'
following_urn:
in: path
name: following_urn
required: true
schema:
type: string
description: SoundCloud User id to denote a Following of a user
example: 'soundcloud:users:25219981'
system_playlist_id:
in: path
name: id
required: true
schema:
type: string
description: >
System playlist URN or identifier. Accepts a full URN (e.g.
`soundcloud:system-playlists:track-stations:2287580618`) or the
identifier portion (e.g. `track-stations:2287580618`).
example: 'soundcloud:system-playlists:track-stations:2287580618'
playlist_urn:
in: path
name: playlist_urn
required: true
schema:
type: string
description: SoundCloud playlist id
example: 'soundcloud:playlists:1212781357'
fake_playlist_urn:
in: path
name: playlist_urn
required: true
schema:
type: string
description: SoundCloud playlist id
example: 'soundcloud:playlists:10'
repost_playlist_urn:
in: path
name: playlist_urn
required: true
schema:
type: string
description: SoundCloud playlist id
example: 'soundcloud:playlists:1205584273'
tag:
in: path
name: tag
required: true
schema:
type: string
description: tag
example: some tag
track_urn:
in: path
name: track_urn
required: true
schema:
type: string
description: SoundCloud Track urn
example: 'soundcloud:tracks:308946187'
test_track_urn:
in: path
name: track_urn
required: true
schema:
type: string
description: SoundCloud Track id
example: 'soundcloud:tracks:1015448728'
user_urn:
in: path
name: user_urn
required: true
schema:
type: string
description: SoundCloud User id
example: 'soundcloud:users:948745750'
user_urn_to_follow:
in: path
name: user_urn
required: true
schema:
type: string
description: SoundCloud User id
example: 'soundcloud:users:743372812'
securitySchemes:
AuthHeader:
in: header
type: apiKey
name: Authorization
description: >-
The string "OAuth" followed by the user’s token: OAuth ACCESS_TOKEN.
Obtained in oAuth2.1 flow
oAuth2_1:
type: oauth2
description: >-
This API uses OAuth2.1 with Authorization Code flow, Client Credential
flow. When registering your app, for it to work with Swagger UI specify
redirect url as
https://developers.soundcloud.com/docs/api/explorer/oauth2-redirect.html.
[More
info](https://developers.soundcloud.com/docs/api/guide#authentication)
flows:
authorizationCode:
authorizationUrl: 'https://secure.soundcloud.com/authorize'
tokenUrl: 'https://secure.soundcloud.com/oauth/token'
refreshUrl: 'https://secure.soundcloud.com/oauth/token'
scopes: {}
clientCredentials:
tokenUrl: 'https://secure.soundcloud.com/oauth/token'
scopes: {}
schemas:
OAuthToken:
type: object
properties:
grant_type:
type: string
description: 'One of `authorization_code`, `client_credentials`, `refresh_token`'
example: authorization_code
enum:
- authorization_code
- refresh_token
- client_credentials
client_id:
type: string
description: Client ID
example: CLIENT_ID
client_secret:
type: string
description: Client secret
example: CLIENT_SECRET
code:
type: string
description: Authorization code. Required on `grant_type = authorization_code`.
example: 1-123456-12345678-FAbcfbe9ir2wdj0
redirect_uri:
type: string
description: >-
Redirect URI. Required on `grant_type =
(authorization_code|refresh_token)`.
example: 'https://mywebsite/auth/soundcloud'
refresh_token:
type: string
description: Refresh token. Required on `grant_type = refresh_token`.
example: 1234c331329477150e7b6056ff212345
required:
- grant_type
- client_id
- client_secret
TrackMetadataRequest:
type: object
properties:
track:
type: object
properties:
title:
type: string
permalink:
type: string
sharing:
type: string
enum:
- public
- private
default: public
embeddable_by:
type: string
enum:
- all
- me
- none
description: 'who can embed this track "all", "me", or "none"'
purchase_url:
type: string
description:
type: string
genre:
type: string
tag_list:
type: string
description: >-
The tag_list property contains a list of tags separated by
spaces. Multiword tags are quoted in double quotes. We also
support machine tags that follow the pattern
NAMESPACE:KEY=VALUE. For example: geo:lat=43.555
camel:size=medium “machine:tag=with space” Machine tags are not
revealed to the user on the track pages.
label_name:
type: string
release:
type: string
release_date:
title: write only!
type: string
description: 'string, formatted as yyyy-mm-dd, representing release date'
streamable:
type: boolean
default: true
downloadable:
type: boolean
default: true
license:
type: string
enum:
- no-rights-reserved
- all-rights-reserved
- cc-by
- cc-by-nc
- cc-by-nd
- cc-by-sa
- cc-by-nc-nd
- cc-by-nc-sa
description: >-
Possible values: no-rights-reserved, all-rights-reserved, cc-by,
cc-by-nc, cc-by-nd, cc-by-sa, cc-by-nc-nd, cc-by-nc-sa
commentable:
type: boolean
default: true
reveal_stats:
type: boolean
description: 'When false (quiet mode), play and favorite counts are hidden.'
reveal_comments:
type: boolean
description: 'When false (quiet mode), comments are hidden.'
isrc:
type: string
metadata_artist:
type: string
description: >-
Optional artist name, when different from user. Use this field
in JSON PUT requests (or track[metadata_artist] in multipart PUT
requests); use track[artist] in multipart POST uploads.
Storefront:
type: object
description: >-
A track's storefront (Artist Storefront / buy module) shown on the track
page.
properties:
track_urn:
type: string
description: The urn of the track the storefront belongs to.
example: 'soundcloud:tracks:1495999657'
title:
type: string
description: Card title shown on the storefront module.
example: Download now
type:
type: string
enum:
- digital
- vinyl
- cd
- cassette
- apparel
- sample_pack
- subscription
- live_event
- live_stream
- other
description: The type of item offered.
link:
type: string
description: External URL the storefront button opens.
example: 'https://example.com/my-track'
link_title:
type: string
nullable: true
description: Label of the storefront button.
example: Download
description:
type: string
nullable: true
description: Description shown on the storefront module.
image_url:
type: string
nullable: true
description: >-
Image shown on the storefront module. Read-only; managed on
soundcloud.com.
price:
type: string
nullable: true
description: >-
Display-only price text shown next to the item type. No payment is
processed by SoundCloud.
example: '0'
StorefrontUpdateRequest:
type: object
description: >
Creates or updates the storefront (Artist Storefront / buy module) of a
track. The request
replaces the whole storefront - omitted optional fields are cleared, so
always send every
value the storefront should keep.
required:
- title
- type
- link
properties:
title:
type: string
maxLength: 100
description: Card title shown on the storefront module.
example: Download now
type:
type: string
enum:
- digital
- vinyl
- cd
- cassette
- apparel
- sample_pack
- subscription
- live_event
- live_stream
- other
description: The type of item offered.
link:
type: string
maxLength: 255
description: External http(s) URL the storefront button opens.
example: 'https://example.com/my-track'
link_title:
type: string
maxLength: 50
description: Label of the storefront button. Omit to clear.
example: Download
description:
type: string
maxLength: 500
description: Description shown on the storefront module. Omit to clear.
example: Get the track original files for free.
price:
type: string
maxLength: 20
description: >-
Display-only price text shown next to the item type. No payment is
processed by SoundCloud. Omit to clear.
example: '0'
CreateUpdatePlaylistRequest:
type: object
properties:
playlist:
type: object
properties:
title:
description: Title of the playlist
type: string
description:
description: Description of the playlist
type: string
sharing:
description: public or private
type: string
enum:
- public
- private
tracks:
description: List of tracks to add to playlist
type: array
items:
type: object
required:
- urn
properties:
urn:
description: SoundCloud track urn
type: string
artwork_data:
title: Only for POST
type: string
format: binary
ean:
description: The European Article Number
type: string
genre:
description: Playlist's genre
type: string
label_name:
description: Label name
type: string
license:
description: License number
type: string
permalink:
description: Playlist's permalink
type: string
permalink_url:
description: Full permalink URL
type: string
purchase_title:
description: Purchase title
type: string
purchase_url:
description: Purchase URL
type: string
release:
description: Playlist's release
type: string
release_date:
description: Release date
type: string
set_type:
description: Playlist or album type
type: string
enum:
- album
- playlist
tag_list:
description: A comma-separated list of tags
type: string
CreateUpdatePlaylistFormRequest:
type: object
properties:
'playlist[title]':
type: string
'playlist[sharing]':
type: string
enum:
- public
- private
default: public
'playlist[description]':
type: string
'playlist[tracks][][urn]':
type: string
description: >-
To pass multiple tracks, pass multiple comma-separated values, e.g.
-F
"playlist[tracks][][urn]=soundcloud:tracks:111,soundcloud:tracks:222"
'playlist[artwork_data]':
title: >-
The playlist artwork in binary format. Supported formats are gif,
jpeg and png
type: string
format: binary
'playlist[ean]':
type: string
'playlist[genre]':
type: string
'playlist[label_name]':
type: string
'playlist[license]':
type: string
'playlist[permalink]':
type: string
'playlist[permalink_url]':
type: string
'playlist[purchase_title]':
type: string
'playlist[purchase_url]':
type: string
'playlist[release]':
type: string
'playlist[release_date]':
type: string
'playlist[set_type]':
type: string
enum:
- album
- playlist
'playlist[tag_list]':
type: string
TrackDataRequest:
type: object
properties:
'track[title]':
type: string
'track[artist]':
type: string
description: >-
Optional artist name for the track. Returned as metadata_artist in
track responses. Do not use track[metadata_artist] on upload.
'track[asset_data]':
title: Only for uploading
type: string
format: binary
'track[permalink]':
type: string
'track[sharing]':
type: string
enum:
- public
- private
default: public
'track[embeddable_by]':
type: string
enum:
- all
- me
- none
description: 'who can embed this track "all", "me", or "none"'
'track[purchase_url]':
type: string
'track[description]':
type: string
'track[genre]':
type: string
'track[tag_list]':
type: string
description: >-
The tag_list property contains a list of tags separated by spaces.
Multiword tags are quoted in double quotes. We also support machine
tags that follow the pattern NAMESPACE:KEY=VALUE. For example:
geo:lat=43.555 camel:size=medium “machine:tag=with space” Machine
tags are not revealed to the user on the track pages.
'track[label_name]':
type: string
'track[release]':
type: string
'track[release_date]':
title: write only!
type: string
description: 'string, formatted as yyyy-mm-dd, representing release date'
'track[streamable]':
type: boolean
default: true
'track[downloadable]':
type: boolean
default: true
'track[license]':
type: string
enum:
- no-rights-reserved
- all-rights-reserved
- cc-by
- cc-by-nc
- cc-by-nd
- cc-by-sa
- cc-by-nc-nd
- cc-by-nc-sa
description: >-
Possible values: no-rights-reserved, all-rights-reserved, cc-by,
cc-by-nc, cc-by-nd, cc-by-sa, cc-by-nc-nd, cc-by-nc-sa
'track[commentable]':
type: boolean
default: true
'track[reveal_stats]':
type: boolean
description: 'When false (quiet mode), play and favorite counts are hidden.'
'track[reveal_comments]':
type: boolean
description: 'When false (quiet mode), comments are hidden.'
'track[isrc]':
type: string
'track[artwork_data]':
title: 'Only for uploading, for PRO users'
type: string
format: binary
TrackUpdateFormRequest:
type: object
properties:
'track[title]':
type: string
'track[permalink]':
type: string
'track[sharing]':
type: string
enum:
- public
- private
default: public
'track[embeddable_by]':
type: string
enum:
- all
- me
- none
description: 'who can embed this track "all", "me", or "none"'
'track[purchase_url]':
type: string
'track[description]':
type: string
'track[genre]':
type: string
'track[tag_list]':
type: string
description: >
The tag_list property contains a list of tags separated by spaces.
Multiword tags are quoted in double quotes. We also support machine
tags that follow the pattern NAMESPACE:KEY=VALUE. For example:
geo:lat=43.555
camel:size=medium
"machine:tag=with space"
Machine tags are not revealed to the user on the track pages.
'track[label_name]':
type: string
'track[release]':
type: string
'track[release_date]':
writeOnly: true
type: string
description: 'string, formatted as yyyy-mm-dd, representing release date'
'track[streamable]':
type: boolean
default: true
'track[downloadable]':
type: boolean
default: true
'track[license]':
type: string
enum:
- no-rights-reserved
- all-rights-reserved
- cc-by
- cc-by-nc
- cc-by-nd
- cc-by-sa
- cc-by-nc-nd
- cc-by-nc-sa
'track[commentable]':
type: boolean
default: true
'track[reveal_stats]':
type: boolean
description: 'When false (quiet mode), play and favorite counts are hidden.'
'track[reveal_comments]':
type: boolean
description: 'When false (quiet mode), comments are hidden.'
'track[isrc]':
type: string
'track[artwork_data]':
type: string
format: binary
description: >-
Track artwork in binary format. Only for PRO users. Supported
formats are gif, jpeg and png.
Found:
type: object
properties:
status:
type: string
description: Status code.
location:
type: string
description: Location URL of the resource.
Error:
type: object
properties:
code:
type: integer
message:
type: string
link:
type: string
error:
type: string
deprecated: true
nullable: true
errors:
type: array
deprecated: true
items:
type: object
properties:
error_message:
type: string
status:
type: string
deprecated: true
TooManyRequests:
allOf:
- $ref: '#/components/schemas/Error'
- type: object
properties:
spam_warning_urn:
type: string
User:
type: object
nullable: true
description: SoundCloud User object
properties:
avatar_url:
description: URL to a JPEG image
type: string
city:
description: city
type: string
country:
description: country
type: string
description:
description: description
type: string
discogs_name:
description: discogs name
type: string
first_name:
description: first name
type: string
followers_count:
description: number of followers
type: integer
followings_count:
description: number of followed users
type: integer
full_name:
description: first and last name
type: string
urn:
description: unique identifier
type: string
kind:
description: kind of resource
type: string
created_at:
description: profile creation datetime
format: date-time
type: string
last_modified:
description: last modified datetime
format: date-time
type: string
last_name:
description: last name
type: string
permalink:
description: permalink of the resource
type: string
permalink_url:
description: URL to the SoundCloud.com page
type: string
plan:
description: subscription plan of the user
type: string
playlist_count:
description: number of public playlists
type: integer
public_favorites_count:
description: number of favorited public tracks
type: integer
reposts_count:
description: number of reposts from user
type: integer
track_count:
description: number of public tracks
type: integer
uri:
description: API resource URL
type: string
username:
description: username
type: string
website:
description: a URL to the website
type: string
website_title:
description: a custom title for the website
type: string
station_urn:
description: >
URN of the user's artist station system playlist, when available.
Uses the `system-playlists` collection (e.g.
`soundcloud:system-playlists:artist-stations:{id}`). Omitted or null
when the user has no public tracks or no station.
type: string
nullable: true
subscriptions:
description: a list subscriptions associated with the user
deprecated: true
items:
type: array
anyOf:
- description: subscription
properties:
product:
description: product
properties:
id:
description: subscription id instance.
type: string
name:
description: subscription name instance.
type: string
type: object
recurring:
description: if the subscription is recurring or not
type: boolean
type: object
Me:
type: object
description: SoundCloud Me object
properties:
avatar_url:
description: URL to a JPEG image.
type: string
city:
description: city.
type: string
comments_count:
description: 'comments count. From now on, the field always has a `0` value.'
type: integer
deprecated: true
country:
description: country.
type: string
created_at:
description: created at date
type: string
description:
description: description.
type: string
discogs_name:
description: discogs name.
type: string
first_name:
description: first name.
type: string
followers_count:
description: number of followers.
type: integer
followings_count:
description: number of followed users.
type: integer
full_name:
description: first and last name.
type: string
urn:
description: unique identifier
type: string
kind:
description: kind of resource.
type: string
last_modified:
description: last modified timestamp.
type: string
last_name:
description: last name.
type: string
likes_count:
description: likes count.
type: integer
locale:
description: locale.
type: string
nullable: true
online:
description: online.
type: boolean
permalink:
description: permalink of the resource.
type: string
permalink_url:
description: URL to the SoundCloud.com page.
type: string
plan:
description: subscription plan of the user.
type: string
playlist_count:
description: number of public playlists.
type: integer
primary_email_confirmed:
description: boolean if email is confirmed.
type: boolean
private_playlists_count:
description: number of private playlists.
type: integer
private_tracks_count:
description: number of private tracks.
type: integer
public_favorites_count:
description: number of favorited public tracks
type: integer
quota:
description: user's upload quota
properties:
unlimited_upload_quota:
description: unlimited upload quota.
type: boolean
upload_seconds_used:
description: upload seconds used.
type: integer
upload_seconds_left:
description: upload seconds left.
type: integer
nullable: true
type: object
reposts_count:
description: number of reposts from user
type: integer
subscriptions:
description: a list subscriptions associated with the user
items:
type: array
anyOf:
- description: subscription
properties:
product:
description: product
properties:
id:
description: subscription id instance.
type: string
name:
description: subscription name instance.
type: string
type: object
recurring:
description: if the subscription is recurring or not
type: boolean
type: object
track_count:
description: number of public tracks.
type: integer
upload_seconds_left:
description: upload seconds left.
type: integer
nullable: true
uri:
description: API resource URL.
type: string
username:
description: username
type: string
website:
description: a URL to the website.
type: string
website_title:
description: a custom title for the website.
type: string
Users:
type: object
properties:
collection:
type: array
items:
$ref: '#/components/schemas/User'
next_href:
type: string
Track:
type: object
description: Soundcloud Track object.
properties:
kind:
description: Type of object (track).
type: string
title:
description: Track title.
type: string
artwork_url:
description: URL to a JPEG image.
type: string
bpm:
description: Tempo.
type: number
format: double
comment_count:
description: Number of comments.
type: integer
format: int64
commentable:
description: Is commentable.
type: boolean
created_at:
description: Created timestamp.
type: string
description:
description: Track description.
type: string
download_count:
description: Number of downloads.
type: integer
format: int64
downloadable:
description: Is downloadable.
type: boolean
duration:
description: Track duration in milliseconds.
type: integer
embeddable_by:
deprecated: true
description: Embeddable by.
type: string
favoritings_count:
description: Number of favoritings.
type: integer
format: int64
genre:
description: Genre
type: string
urn:
description: Track URN identifier.
type: string
isrc:
description: ISRC code.
type: string
key_signature:
description: Key signature.
type: string
label_name:
description: Label user name.
type: string
license:
description: License
type: string
metadata_artist:
description: 'Optional artist name, when different from user.'
type: string
permalink_url:
description: Permalink URL.
type: string
playback_count:
description: Number of plays.
type: integer
format: int64
purchase_title:
description: Purchase title.
type: string
purchase_url:
description: Purchase URL.
type: string
release:
description: Release.
type: string
release_day:
description: Day of release.
type: integer
release_month:
description: Month of release.
type: integer
release_year:
description: Year of release.
type: integer
sharing:
description: Type of sharing (public/private).
type: string
stream_url:
description: URL to stream (preview only)
type: string
deprecated: true
streamable:
description: Is streamable.
type: boolean
tag_list:
description: Tags.
type: string
uri:
description: Track URI.
type: string
user:
allOf:
- $ref: '#/components/schemas/User'
- description: User who uploaded a track
user_favorite:
description: >-
Is user's favourite. It is only set when fetching search results or
single track, otherwise it is false.
type: boolean
user_playback_count:
description: Number of plays by a user.
type: integer
waveform_url:
description: Waveform URL.
type: string
available_country_codes:
description: List of country codes where track is available.
type: string
access:
type: string
nullable: true
description: |
Level of access the user (logged in or anonymous) has to the track.
* `playable` - user is allowed to listen to a full track.
* `preview` - user is allowed to preview a track, meaning a snippet is available
* `blocked` - user can only see the metadata of a track, no streaming is possible
enum:
- playable
- preview
- blocked
download_url:
description: >-
URL to download a track. Omitted or null when track is not
downloadable.
type: string
nullable: true
reposts_count:
description: Number of reposts.
type: integer
reveal_stats:
description: >-
Whether play and favorite counts are visible. When false (quiet
mode), stats are hidden.
type: boolean
reveal_comments:
description: >-
Whether comments are visible. When false (quiet mode), comments are
hidden.
type: boolean
station_urn:
description: >
URN of the track's station system playlist, when available. Uses the
`system-playlists` collection (e.g.
`soundcloud:system-playlists:track-stations:{id}`). Omitted or null
for non-public tracks and tracks without a station.
type: string
nullable: true
secret_uri:
description: Secret URL.
type: string
Tracks:
type: object
properties:
collection:
type: array
items:
$ref: '#/components/schemas/Track'
next_href:
type: string
TracksList:
deprecated: true
type: array
items:
$ref: '#/components/schemas/Track'
Playlist:
type: object
description: Soundcloud Playlist Object
properties:
title:
description: Playlist title.
type: string
urn:
description: Playlist identifier.
type: string
kind:
description: Type of Soundcloud object (playlist).
type: string
artwork_url:
description: URL to a JPEG image.
type: string
created_at:
description: Created timestamp.
type: string
description:
description: Playlist description.
type: string
downloadable:
description: is downloadable.
type: boolean
duration:
description: Playlist duration.
type: integer
ean:
description: European Article Number.
type: string
embeddable_by:
description: Embeddable by.
type: string
genre:
description: Playlist genre.
type: string
label_id:
description: Label user identifier.
type: integer
label_name:
description: Label name.
type: string
last_modified:
description: Last modified timestamp.
type: string
license:
description: License.
type: string
permalink:
description: Playlist permalink.
type: string
permalink_url:
description: Playlist permalink URL.
type: string
playlist_type:
description: Type of playlist.
type: string
purchase_title:
description: Purchase title.
type: string
purchase_url:
description: Purchase URL.
type: string
release:
description: Release.
type: string
release_day:
description: Day of release.
type: integer
release_month:
description: Month of release.
type: integer
release_year:
description: Year of release.
type: integer
sharing:
description: Type of sharing (private/public).
type: string
streamable:
description: Is streamable.
type: boolean
tag_list:
description: Tags.
type: string
track_count:
description: Count of tracks.
type: integer
tracks:
description: List of tracks.
type: array
items:
$ref: '#/components/schemas/Track'
type:
description: Playlist type.
type: string
uri:
description: Playlist URI.
type: string
user:
$ref: '#/components/schemas/User'
user_urn:
description: User identifier.
type: string
likes_count:
description: Count of playlist likes.
type: integer
label:
allOf:
- type: object
nullable: true
- $ref: '#/components/schemas/User'
tracks_uri:
description: tracks URI.
type: string
nullable: true
tags:
description: Tags.
type: string
nullable: true
SystemPlaylist:
type: object
description: 'SoundCloud system playlist object (e.g. track station, artist station).'
properties:
kind:
description: Type of object (system-playlist).
type: string
urn:
description: System playlist URN.
type: string
title:
description: Playlist title.
type: string
description:
description: Playlist description.
type: string
playlist_type:
description: Playlist type.
type: string
permalink:
description: System playlist permalink slug.
type: string
permalink_url:
description: Permalink URL on soundcloud.com.
type: string
last_updated:
description: Last updated timestamp.
type: string
nullable: true
tracking_feature_name:
description: Tracking feature name.
type: string
nullable: true
track_count:
description: Number of visible tracks in the playlist.
type: integer
query_urn:
description: 'Query URN used to generate the playlist, when available.'
type: string
nullable: true
tracks:
description: Visible tracks in the playlist.
type: array
items:
$ref: '#/components/schemas/Track'
Playlists:
type: object
properties:
collection:
type: array
items:
$ref: '#/components/schemas/Playlist'
next_href:
type: string
PlaylistsArray:
deprecated: true
type: array
items:
$ref: '#/components/schemas/Playlist'
Activities:
type: object
description: User's activities.
properties:
collection:
type: array
items:
type: object
required:
- type
- created_at
- origin
properties:
type:
description: >
Type of activity (e.g. `track`, `track:repost`, `playlist`,
`playlist:repost`).
For `track:repost` and `playlist:repost`, the API also returns
a top-level string field
`reposter` with the URN of the user who reposted.
type: string
created_at:
description: Created timestamp.
type: string
origin:
description: Origin (track or playlist).
anyOf:
- $ref: '#/components/schemas/Track'
- $ref: '#/components/schemas/Playlist'
next_href:
type: string
future_href:
type: string
WebProfiles:
type: array
description: User's links added to their profile
items:
type: object
properties:
created_at:
description: Timestamp of when the link was added to the profile.
type: string
urn:
description: Id
type: string
kind:
description: Kind
type: string
service:
description: Service or platform
type: string
title:
description: Link's title
type: string
url:
description: URL of the external link
type: string
username:
description: Username extracted from the external link
type: string
Comment:
type: object
description: User's Comment
properties:
body:
description: Comment body.
type: string
created_at:
description: Created timestamp.
type: string
urn:
description: Identifier.
type: string
kind:
description: Kind (comment).
type: string
user_urn:
description: User's identifier.
type: string
timestamp:
description: Timestamp.
type: string
track_urn:
description: Track's identifier.
type: string
uri:
description: Comment's URL.
type: string
user:
type: object
description: SoundCloud User object
properties:
urn:
description: unique identifier
type: string
kind:
description: kind of resource.
type: string
permalink:
description: permalink of the resource.
type: string
username:
description: username
type: string
last_modified:
description: last modified timestamp.
type: string
uri:
description: API resource URL.
type: string
permalink_url:
description: URL to the SoundCloud.com page.
type: string
avatar_url:
description: URL to a JPEG image.
type: string
followers_count:
description: number of followers.
type: integer
followings_count:
description: number of followed users.
type: integer
reposts_count:
description: number of reposts from user
type: integer
Comments:
type: object
properties:
collection:
type: array
items:
$ref: '#/components/schemas/Comment'
next_href:
type: string
nullable: true
Streams:
type: object
properties:
hls_aac_160_url:
type: string
hls_mp3_128_url:
type: string
preview_mp3_128_url:
type: string
responses:
Success:
description: Success
content:
application/json; charset=utf-8:
examples:
default:
$ref: '#/components/examples/Success'
Successful:
description: Success
content:
application/json; charset=utf-8:
examples:
default:
$ref: '#/components/examples/Successful'
Accepted:
description: Accepted
content:
application/json; charset=utf-8:
examples:
default:
$ref: '#/components/examples/Accepted'
Found:
description: Found
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Found'
FoundHtml:
description: Found
content:
application/json; charset=utf-8:
schema:
type: string
Created:
description: Created
content:
application/json; charset=utf-8:
examples:
default:
$ref: '#/components/examples/Created'
BadRequest:
description: Bad Request
content:
application/json; charset=utf-8:
examples:
default:
$ref: '#/components/examples/BadRequest'
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized
content:
application/json; charset=utf-8:
examples:
default:
$ref: '#/components/examples/Unauthorized'
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: Forbidden
content:
application/json:
examples:
default:
$ref: '#/components/examples/Forbidden'
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Not Found
content:
application/json:
examples:
default:
$ref: '#/components/examples/NotFound'
schema:
$ref: '#/components/schemas/Error'
UnprocessableEntity:
description: Unprocessable Entity
content:
application/json:
examples:
default:
$ref: '#/components/examples/UnprocessableEntity'
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: Too Many Requests
content:
application/json:
examples:
default:
$ref: '#/components/examples/TooManyRequests'
schema:
$ref: '#/components/schemas/TooManyRequests'
User:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/User'
examples:
default:
$ref: '#/components/examples/User'
Me:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Me'
Users:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Users'
examples:
default:
$ref: '#/components/examples/Users'
Track:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Track'
examples:
default:
$ref: '#/components/examples/Track'
Tracks:
description: Success
content:
application/json; charset=utf-8:
schema:
oneOf:
- $ref: '#/components/schemas/Tracks'
- $ref: '#/components/schemas/TracksList'
examples:
default:
$ref: '#/components/examples/Tracks'
tracksList:
$ref: '#/components/examples/TracksList'
TracksList:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/TracksList'
examples:
default:
$ref: '#/components/examples/TracksList'
Playlist:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Playlist'
examples:
default:
$ref: '#/components/examples/Playlist'
SystemPlaylist:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/SystemPlaylist'
examples:
default:
$ref: '#/components/examples/SystemPlaylist'
Playlists:
description: Success
content:
application/json; charset=utf-8:
schema:
oneOf:
- $ref: '#/components/schemas/Playlists'
- $ref: '#/components/schemas/PlaylistsArray'
examples:
default:
$ref: '#/components/examples/Playlists'
playlistsArray:
$ref: '#/components/examples/PlaylistsArray'
Activities:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Activities'
examples:
default:
$ref: '#/components/examples/Activities'
WebProfiles:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/WebProfiles'
examples:
default:
$ref: '#/components/examples/WebProfiles'
Comment:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Comment'
examples:
default:
$ref: '#/components/examples/Comment'
Comments:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Comments'
examples:
default:
$ref: '#/components/examples/Comments'
Streams:
description: Success
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/Streams'
examples:
default:
$ref: '#/components/examples/Streams'
examples:
Activities:
value:
collection:
- type: track
created_at: '2020/10/12 12:03:00 +0000'
origin:
$ref: '#/components/examples/Track/value'
- type: playlist
created_at: '2020/10/12 12:02:44 +0000'
origin:
$ref: '#/components/examples/Playlist/value'
next_href: 'https://api.soundcloud.com/me/activities?limit=10&cursor=00000'
future_href: 'https://api.soundcloud.com/me/activities?limit=10&cursor=000001'
ExpiringToken:
value:
access_token: some string
expires_in: 3599
scope: ''
refresh_token: some string
token_type: bearer
CreateUpdatePlaylistRequest:
value:
playlist:
title: Test Auto-created Playlist
description: Playlist for test purposes
sharing: private
tracks:
- urn: 'soundcloud:tracks:219787221'
- urn: 'soundcloud:tracks:783019264'
- urn: 'soundcloud:tracks:870073492'
CreateUpdatePlaylistFormRequest:
value:
'playlist[title]': Test drum sample
'playlist[sharing]': private
'playlist[description]': Public-api test sample upload
TrackDataRequest:
value:
'track[title]': Test drum sample
'track[artist]': 'Metro Boomin, The Weeknd, 21 Savage'
'track[asset_data]':
'track[permalink]': test-drum-sample
'track[sharing]': private
'track[embeddable_by]': me
'track[purchase_url]': null
'track[description]': Public-api test sample upload
'track[genre]': Pop
'track[tag_list]': null
'track[label_name]': null
'track[release]': null
'track[release_date]': 2021-02-18T00:00:00.000Z
'track[streamable]': true
'track[downloadable]': false
'track[license]': no-rights-reserved
'track[commentable]': true
'track[isrc]': null
'track[artwork_data]': null
Comment:
value:
body: comment body
created_at: '2007/09/11 15:40:24 +0000'
urn: 'soundcloud:comments:1234'
kind: comment
timestamp: 4960
track_urn: 'soundcloud:tracks:123456'
uri: 'https://api.soundcloud.com/comments/1234'
user:
urn: 'souncloud:users:12345'
kind: user
permalink: permalink
username: user name
last_modified: '2017/04/10 14:48:03 +0000'
uri: 'https://api.soundcloud.com/users/12345'
permalink_url: 'https://soundcloud.com/permalink'
avatar_url: 'https://i1.sndcdn.com/avatars-large.jpg'
followers_count: 138
followings_count: 172
public_favorites_count: 5
reposts_count: 0
user_urn: 'soundcloud:users:12345'
Comments:
value:
collection:
$ref: '#/components/examples/Comment/value'
next_href: 'https://api.soundcloud.com/collection?page_size=10&cursor=1234567'
Playlist:
value:
artwork_url: ''
created_at: '2020/07/16 16:09:54 +0000'
description: null
downloadable: true
duration: 11000
ean: null
embeddable_by: all
genre: ''
urn: 'soundcloud:playlists:12345'
kind: playlist
label: null
label_id: null
label_name: null
last_modified: '2020/09/08 09:13:00 +0000'
license: all-rights-reserved
likes_count: 0
permalink: permalink
permalink_url: 'https://soundcloud.com/userPermalink/sets/permalink'
playlist_type: ''
purchase_title: null
purchase_url: null
release: null
release_day: null
release_month: null
release_year: null
sharing: public
streamable: true
tag_list: ''
tags: ''
title: permalink
track_count: 2
tracks:
allOf:
- $ref: '#/components/examples/Track/value'
tracks_uri: 'https://api.soundcloud.com/playlists/soundcloud:playlists:12345/tracks'
type: ''
uri: 'https://api.soundcloud.com/playlists/soundcloud:playlists:12345'
user:
$ref: '#/components/examples/User/value'
user_id: 1234
SystemPlaylist:
value:
kind: system-playlist
urn: 'soundcloud:system-playlists:track-stations:2287580618'
title: Track station
description: Related tracks
playlist_type: PLAYLIST
permalink: 'track-stations:2287580618'
permalink_url: 'https://soundcloud.com/discover/sets/track-stations:2287580618'
last_updated: 2017-06-29T20:54:22.000Z
tracking_feature_name: track-stations
track_count: 1
query_urn: 'soundcloud:queries:abc'
tracks:
- $ref: '#/components/examples/Track/value'
Playlists:
value:
collection:
$ref: '#/components/examples/Playlist/value'
next_href: 'https://api.soundcloud.com/collection?page_size=10&cursor=1234567'
PlaylistsArray:
description: 'Deprecated, use Playlists instead.'
value:
$ref: '#/components/examples/Playlist/value'
Streams:
value:
hls_aac_160_url: 'https://api.soundcloud.com/tracks/urn/streams/uuid/'
hls_mp3_128_url: 'https://api.soundcloud.com/tracks/urn/streams/uuid/'
preview_mp3_128_url: 'https://api.soundcloud.com/tracks/urn/streams/uuid/'
Track:
value:
kind: track
artwork_url: 'https://i1.sndcdn.com/artworks-large.jpg'
available_country_codes: null
bpm: null
comment_count: 4
commentable: true
created_at: '2019/01/15 15:40:49 +0000'
description: null
download_count: 0
download_url: 'https://api.soundcloud.com/tracks/1234/download'
downloadable: false
duration: 40000
embeddable_by: all
favoritings_count: 271
genre: Rock
urn: 'soundcloud:tracks:1234'
isrc: null
key_signature: null
label_name: some label
license: all-rights-reserved
metadata_artist: 'Metro Boomin, The Weeknd, 21 Savage'
permalink_url: 'https://soundcloud.com/userPermalink/trackPermalink'
playback_count: 8027
purchase_title: null
purchase_url: null
release: null
release_day: 22
release_month: 8
release_year: 2019
reposts_count: 18
secret_uri: null
sharing: public
stream_url: 'https://api.soundcloud.com/tracks/1234/stream'
streamable: true
tag_list: ''
title: Some title
uri: 'https://api.soundcloud.com/tracks/1234'
user:
$ref: '#/components/examples/User/value'
user_favorite: true
user_playback_count: 1
waveform_url: 'https://wave.sndcdn.com/someString.png'
access: playable
reveal_stats: true
reveal_comments: true
station_urn: 'soundcloud:system-playlists:track-stations:1234'
Tracks:
value:
collection:
$ref: '#/components/examples/Track/value'
next_href: 'https://api.soundcloud.com/collection?page_size=10&cursor=1234567'
TracksList:
description: 'Deprecated, use Tracks instead.'
value:
$ref: '#/components/examples/Track/value'
User:
value:
avatar_url: 'https://i1.sndcdn.com/avatars.jpg'
city: City
country: Country
created_at: '2018/01/01 12:08:25 +0000'
description: null
discogs_name: null
first_name: First_name
followers_count: 0
followings_count: 0
full_name: Full Name
urn: 'soundcloud:users:12345'
kind: user
last_modified: '2020/01/03 12:08:25 +0000'
last_name: Last_name
myspace_name: null
permalink: permalink
permalink_url: 'https://soundcloud.com/permalink'
plan: Free
playlist_count: 3
public_favorites_count: 20
reposts_count: 0
station_urn: 'soundcloud:system-playlists:artist-stations:12345'
subscriptions:
- product:
id: some-id
name: some.name
track_count: 0
upload_seconds_left: 10800
uri: 'https://api.soundcloud.com/users/1234'
username: some.user
website: null
website_title: null
Users:
value:
collection:
$ref: '#/components/examples/User/value'
next_href: 'https://api.soundcloud.com/collection?page_size=10&cursor=1234567'
WebProfiles:
value:
- created_at: '1995/10/20 12:10:39 +0000'
id: 1234
urn: 'soundcloud:users:1234'
kind: web-profile
service: facebook
title: my facebook
url: 'http://facebook.com'
username: username
Success:
value:
status: 200 - OK
Successful:
value:
status: 200 - Successful
Accepted:
value:
status: 202 - Accepted
Created:
value:
status: 201 - Created
ErrorUnsupportedGrant:
value:
code: 400
message: unsupported_grant
link: 'https://developers.soundcloud.com/docs/api/guide#authentication'
BadRequest:
value:
code: 400
message: 'Detailed message of errors, when available'
link: 'https://developers.soundcloud.com/docs/api/explorer/open-api'
ErrorInvalidGrant:
value:
code: 400
message: invalid_grant
link: 'https://developers.soundcloud.com/docs/api/guide#authentication'
Unauthorized:
value:
code: 401
message: 'Detailed message of errors, when available'
link: 'https://developers.soundcloud.com/docs/api/explorer/open-api'
ErrorInvalidScope:
value:
code: 401
message: invalid_scope
link: 'https://developers.soundcloud.com/docs/api/guide#authentication'
ErrorInvalidClient:
value:
code: 401
message: invalid_client
link: 'https://developers.soundcloud.com/docs/api/guide#authentication'
ErrorUnauthorizedClient:
value:
code: 401
message: unauthorized_client
link: 'https://developers.soundcloud.com/docs/api/guide#authentication'
Forbidden:
value:
code: 403
message: 'Detailed message of errors, when available'
link: 'https://developers.soundcloud.com/docs/api/explorer/open-api'
NotFound:
value:
code: 404
message: 'Detailed message of errors, when available'
link: 'https://developers.soundcloud.com/docs/api/explorer/open-api'
UnprocessableEntity:
value:
code: 422
message: 'Detailed message of errors, when available'
link: 'https://developers.soundcloud.com/docs/api/explorer/open-api'
TooManyRequests:
value:
code: 429
message: 'Detailed message of errors, when available'
spam_warning_urn: 'soundcloud:spam-warnings:1'
link: 'https://developers.soundcloud.com/docs/api/rate-limits#errors'
OK:
value:
status: Status(200) - OK
TrackMetadataRequest:
value:
'track[title]': Updated Test Track