Music — entry 027 of 32
SoundCloud
SoundCloud's API covers upload, streaming, search, and the social graph (follows, likes, comments, reposts) across its independent-artist catalog, authenticated with OAuth 2.1 and mandatory PKCE. As of this check, registering a new application requires the developer's own SoundCloud account to already hold a paid Artist Pro subscription — a real access-cost change from the historically free, open registration this entry inherited. Endpoints return JSON, with legacy JSONP support for cross-domain callback use.
GreatAPIs Score
Auth quickstart
- Register an app / run the OAuth flow to obtain a bearer token.
- Send it as an Authorization header
Authorization: Bearer <token>
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
oauth2
Authentication and Authorization Endpoints.
GET/connectThe OAuth2 authorization endpoint. Your app redirects a user to this endpoint, allowing them to delegate access to their account.
| Status | Description | Schema |
|---|---|---|
302 | — | — |
401 | — | — |
POST/oauth2/tokenThis endpoint accepts POST requests and is used to provision access tokens once a user has authorized your application.
application/x-www-form-urlencoded
| Status | Description | Schema |
|---|---|---|
200 | Success | — |
400 | Bad Request | — |
401 | — | — |
me19
Own User Endpoints.
GET/meReturns the authenticated user’s information.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/activitiesReturns the authenticated user's activities.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/activities/all/ownRecent the authenticated user's activities.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/activities/tracksReturns the authenticated user's recent track related activities.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/connectionsReturns a list of the authenticated user's connected social accounts.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/connections/{connection_id}Returns the authenticated user's connected social account.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/me/favorites/idsReturns user’s favorites ids. (use /me/likes/tracks instead to fetch the authenticated user's likes)
| Status | Description | Schema |
|---|---|---|
200 | Success | — |
404 | The user could not be found | — |
GET/me/followersReturns a list of users who are following the authenticated user.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/followers/{follower_id}Returns a user who is following the authenticated user. (use /users/{user_id} instead, to fetch the user details)
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/followingsReturns a list of users who are followed by the authenticated user.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/followings/tracksReturns a list of recent tracks from users followed by the authenticated user.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/followings/{user_id}Returns a user who is followed by the authenticated user. (use /users/{user_id} instead, to fetch the user details)
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
PUT/me/followings/{user_id}Follows a user.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
201 | — | — |
401 | — | — |
404 | — | — |
DELETE/me/followings/{user_id}Deletes a user who is followed by the authenticated user.
| Status | Description | Schema |
|---|---|---|
200 | Success | — |
401 | — | — |
404 | — | — |
422 | — | — |
GET/me/likes/tracksReturns a list of favorited or liked tracks of the authenticated user.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/playlistsReturns user’s playlists (sets).
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/me/playlists/{playlist_id}Returns playlist. (use /playlists/{playlist_id} instead, to fetch the playlist details)
| Status | Description | Schema |
|---|---|---|
200 | — | — |
GET/me/tracksReturns a list of user's tracks.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/me/tracks/{track_id}Returns a specified track. (use /tracks/{track_id} instead, to fetch the track details)
| Status | Description | Schema |
|---|---|---|
200 | — | — |
search3
Search Endpoints.
GET/playlistsPerforms a playlist search based on a query
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
GET/tracksPerforms a track search based on a query
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
500 | Internal Server Error | — |
GET/usersPerforms a user search based on a query
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
playlists6
Playlists Endpoints.
POST/playlistsCreates a playlist.
application/json — CreateUpdatePlaylistRequest
| Status | Description | Schema |
|---|---|---|
201 | — | — |
401 | — | — |
404 | — | — |
GET/playlists/{playlist_id}Returns a playlist.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
PUT/playlists/{playlist_id}Updates a playlist.
application/json — CreateUpdatePlaylistRequest
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
DELETE/playlists/{playlist_id}Deletes a playlist.
| Status | Description | Schema |
|---|---|---|
200 | Success | — |
404 | — | — |
GET/playlists/{playlist_id}/repostersReturns a collection of playlist's reposters.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/playlists/{playlist_id}/tracksReturns tracks under a playlist.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
tracks10
Tracks Endpoints.
POST/tracksUploads a new track.
multipart/form-data — TrackDataRequest
| Status | Description | Schema |
|---|---|---|
201 | — | — |
400 | — | — |
401 | — | — |
GET/tracks/{track_id}Returns a track.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
PUT/tracks/{track_id}Updates a track's information.
application/json — TrackMetadataRequest
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
DELETE/tracks/{track_id}Deletes a track.
| Status | Description | Schema |
|---|---|---|
200 | Success | — |
404 | — | — |
GET/tracks/{track_id}/commentsReturns the comments posted on the track(track_id).
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
POST/tracks/{track_id}/commentsReturns the newly created comment on success
application/json; charset=utf-8 (required)
| Status | Description | Schema |
|---|---|---|
201 | — | — |
422 | — | — |
429 | — | — |
GET/tracks/{track_id}/favoritersReturns a list of users who have favorited or liked the track.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/tracks/{track_id}/relatedReturns all related tracks of track on SoundCloud.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/tracks/{track_id}/repostersReturns a collection of track's reposters.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/tracks/{track_id}/streamsReturns a track's streamable URLs
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
users10
SoundCloud Users Endpoints.
GET/users/{user_id}Returns a user.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/users/{user_id}/commentsReturns a list of user's comments.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/users/{user_id}/favoritesReturns a list of user's favorited or liked tracks. (use /users/:userId/likes/tracks instead, to fetch a user's likes)
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/users/{user_id}/followersReturns a list of user’s followers.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/users/{user_id}/followingsReturns a list of user’s followings.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/users/{user_id}/followings/{following_id}Returns a user's following. (use /users/{user_id} instead, to fetch the user details)
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
GET/users/{user_id}/likes/tracksReturns a list of user's liked tracks.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
404 | — | — |
GET/users/{user_id}/playlistsReturns a list of user's playlists.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/users/{user_id}/tracksReturns a list of user's tracks.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
GET/users/{user_id}/web-profilesReturns list of user's links added to their profile (website, facebook, instagram).
| Status | Description | Schema |
|---|---|---|
200 | — | — |
401 | — | — |
404 | — | — |
likes4
Liking Tracks & Playlists.
POST/likes/playlists/{playlist_id}Likes a playlist.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
201 | — | — |
400 | — | — |
401 | — | — |
404 | — | — |
429 | — | — |
DELETE/likes/playlists/{playlist_id}Unlikes a playlist.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
404 | — | — |
POST/likes/tracks/{track_id}Likes a track.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
401 | — | — |
404 | — | — |
429 | — | — |
DELETE/likes/tracks/{track_id}Unlikes a track.
| Status | Description | Schema |
|---|---|---|
200 | — | — |
400 | — | — |
404 | — | — |
reposts4
Reposting Tracks & Playlists.
POST/reposts/playlists/{playlist_id}Reposts a playlist as the authenticated user
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
401 | — | — |
404 | — | — |
DELETE/reposts/playlists/{playlist_id}Removes a repost on a playlist as the authenticated user
| Status | Description | Schema |
|---|---|---|
200 | Success | — |
401 | — | — |
404 | — | — |
POST/reposts/tracks/{track_id}Reposts a track as the authenticated user
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
401 | — | — |
404 | — | — |
DELETE/reposts/tracks/{track_id}Removes a repost on a track as the authenticated user
| Status | Description | Schema |
|---|---|---|
200 | Success | — |
401 | — | — |
404 | — | — |
miscellaneous1
Miscellaneous Endpoints.
GET/resolveResolves soundcloud.com URLs to Resource URLs to use with the API.
| Status | Description | Schema |
|---|---|---|
302 | — | — |
Try it
Developer reference
https://api.soundcloud.comNo blanket per-app request cap: SoundCloud enforces limits only on two specific flows, both keyed to client_id. Play-stream requests to /tracks/:id/stream are capped at 15,000 per 24-hour window; client_credentials token issuance is capped at 50 per 12 hours per app and 30 per hour per IP, so apps should reuse and refresh access tokens rather than repeating the credentials exchange. No limit is currently enforced on total calls in aggregate. Exceeding a tracked limit returns HTTP 429 with the limit, remaining count, and reset time in the response body.
- GET/tracks
- GET/tracks/{track_id}
- POST/tracks
- GET/users/{user_id}
- GET/playlists/{playlist_id}