Music — entry 027 of 30

SoundCloud

Verified Jul 2026

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.

musicaudiooauthcreator-platform
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingPaidSubscription required — no meaningful free tier.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score66out of 100
Authentication8/25OAuth flow required
Pricing9/20Paid API
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 66 on greatapis.com
<a href="https://greatapis.com/api/soundcloud/"><img src="https://greatapis.com/badge/soundcloud.svg" alt="Scored 66 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api.soundcloud.com
Auth
AuthHeaderClientId
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.
Parameters
NameInRequiredType
client_idqueryyesstring
redirect_uriqueryyesstring
response_typequeryyesstring
scopequeryyesstring
statequerynostring
Responses
StatusDescriptionSchema
302
401
POST/oauth2/tokenThis endpoint accepts POST requests and is used to provision access tokens once a user has authorized your application.
Request body

application/x-www-form-urlencoded

Responses
StatusDescriptionSchema
200Success
400Bad Request
401
me19

Own User Endpoints.

GET/meReturns the authenticated user’s information.
Responses
StatusDescriptionSchema
200
401
GET/me/activitiesReturns the authenticated user's activities.
Parameters
NameInRequiredType
accessquerynoarray
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
GET/me/activities/all/ownRecent the authenticated user's activities.
Parameters
NameInRequiredType
accessquerynoarray
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
GET/me/activities/tracksReturns the authenticated user's recent track related activities.
Parameters
NameInRequiredType
accessquerynoarray
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
GET/me/connectionsReturns a list of the authenticated user's connected social accounts.
Parameters
NameInRequiredType
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
200
401
GET/me/connections/{connection_id}Returns the authenticated user's connected social account.
Parameters
NameInRequiredType
connection_idpathyesinteger
Responses
StatusDescriptionSchema
200
401
404
GET/me/favorites/idsReturns user’s favorites ids. (use /me/likes/tracks instead to fetch the authenticated user's likes)
Parameters
NameInRequiredType
limitquerynointeger
Responses
StatusDescriptionSchema
200Success
404The user could not be found
GET/me/followersReturns a list of users who are following the authenticated user.
Parameters
NameInRequiredType
limitquerynointeger
Responses
StatusDescriptionSchema
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)
Parameters
NameInRequiredType
follower_idpathyesinteger
Responses
StatusDescriptionSchema
200
401
GET/me/followingsReturns a list of users who are followed by the authenticated user.
Parameters
NameInRequiredType
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
200
401
GET/me/followings/tracksReturns a list of recent tracks from users followed by the authenticated user.
Parameters
NameInRequiredType
accessquerynoarray
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
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)
Parameters
NameInRequiredType
user_idpathyesinteger
Responses
StatusDescriptionSchema
200
401
404
PUT/me/followings/{user_id}Follows a user.
Parameters
NameInRequiredType
user_idpathyesinteger
Responses
StatusDescriptionSchema
200
201
401
404
DELETE/me/followings/{user_id}Deletes a user who is followed by the authenticated user.
Parameters
NameInRequiredType
user_idpathyesinteger
Responses
StatusDescriptionSchema
200Success
401
404
422
GET/me/likes/tracksReturns a list of favorited or liked tracks of the authenticated user.
Parameters
NameInRequiredType
limitquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
401
GET/me/playlistsReturns user’s playlists (sets).
Parameters
NameInRequiredType
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
404
GET/me/playlists/{playlist_id}Returns playlist. (use /playlists/{playlist_id} instead, to fetch the playlist details)
Parameters
NameInRequiredType
playlist_idpathyesinteger
Responses
StatusDescriptionSchema
200
GET/me/tracksReturns a list of user's tracks.
Parameters
NameInRequiredType
limitquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
401
GET/me/tracks/{track_id}Returns a specified track. (use /tracks/{track_id} instead, to fetch the track details)
Parameters
NameInRequiredType
track_idpathyesinteger
Responses
StatusDescriptionSchema
200
search3

Search Endpoints.

GET/playlistsPerforms a playlist search based on a query
Parameters
NameInRequiredType
qqueryyesstring
accessquerynoarray
limitquerynointeger
offsetquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
400
401
GET/tracksPerforms a track search based on a query
Parameters
NameInRequiredType
qqueryyesstring
idsquerynostring
genresquerynostring
tagsquerynostring
bpmquerynoobject
durationquerynoobject
created_atquerynoobject
accessquerynoarray
limitquerynointeger
offsetquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
400
401
500Internal Server Error
GET/usersPerforms a user search based on a query
Parameters
NameInRequiredType
qqueryyesstring
idsquerynostring
limitquerynointeger
offsetquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
400
401
playlists6

Playlists Endpoints.

POST/playlistsCreates a playlist.
Request body

application/jsonCreateUpdatePlaylistRequest

Responses
StatusDescriptionSchema
201
401
404
GET/playlists/{playlist_id}Returns a playlist.
Parameters
NameInRequiredType
playlist_idpathyesinteger
secret_tokenquerynostring
accessquerynoarray
Responses
StatusDescriptionSchema
200
400
401
PUT/playlists/{playlist_id}Updates a playlist.
Parameters
NameInRequiredType
playlist_idpathyesinteger
Request body

application/jsonCreateUpdatePlaylistRequest

Responses
StatusDescriptionSchema
200
401
404
DELETE/playlists/{playlist_id}Deletes a playlist.
Parameters
NameInRequiredType
playlist_idpathyesinteger
Responses
StatusDescriptionSchema
200Success
404
GET/playlists/{playlist_id}/repostersReturns a collection of playlist's reposters.
Parameters
NameInRequiredType
playlist_idpathyesinteger
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
404
GET/playlists/{playlist_id}/tracksReturns tracks under a playlist.
Parameters
NameInRequiredType
playlist_idpathyesinteger
secret_tokenquerynostring
accessquerynoarray
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
400
401
tracks10

Tracks Endpoints.

POST/tracksUploads a new track.
Request body

multipart/form-dataTrackDataRequest

Responses
StatusDescriptionSchema
201
400
401
GET/tracks/{track_id}Returns a track.
Parameters
NameInRequiredType
track_idpathyesinteger
secret_tokenquerynostring
Responses
StatusDescriptionSchema
200
401
404
PUT/tracks/{track_id}Updates a track's information.
Parameters
NameInRequiredType
track_idpathyesinteger
Request body

application/jsonTrackMetadataRequest

Responses
StatusDescriptionSchema
200
400
401
DELETE/tracks/{track_id}Deletes a track.
Parameters
NameInRequiredType
track_idpathyesinteger
Responses
StatusDescriptionSchema
200Success
404
GET/tracks/{track_id}/commentsReturns the comments posted on the track(track_id).
Parameters
NameInRequiredType
track_idpathyesinteger
limitquerynointeger
offsetquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
401
404
POST/tracks/{track_id}/commentsReturns the newly created comment on success
Parameters
NameInRequiredType
track_idpathyesinteger
Request body

application/json; charset=utf-8 (required)

Responses
StatusDescriptionSchema
201
422
429
GET/tracks/{track_id}/favoritersReturns a list of users who have favorited or liked the track.
Parameters
NameInRequiredType
track_idpathyesinteger
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
200
401
404
GET/tracks/{track_id}/relatedReturns all related tracks of track on SoundCloud.
Parameters
NameInRequiredType
track_idpathyesinteger
accessquerynoarray
limitquerynointeger
offsetquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
401
404
GET/tracks/{track_id}/repostersReturns a collection of track's reposters.
Parameters
NameInRequiredType
track_idpathyesinteger
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
404
GET/tracks/{track_id}/streamsReturns a track's streamable URLs
Parameters
NameInRequiredType
track_idpathyesinteger
secret_tokenquerynostring
Responses
StatusDescriptionSchema
200
401
404
users10

SoundCloud Users Endpoints.

GET/users/{user_id}Returns a user.
Parameters
NameInRequiredType
user_idpathyesinteger
Responses
StatusDescriptionSchema
200
401
404
GET/users/{user_id}/commentsReturns a list of user's comments.
Parameters
NameInRequiredType
user_idpathyesinteger
limitquerynointeger
offsetquerynointeger
Responses
StatusDescriptionSchema
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)
Parameters
NameInRequiredType
user_idpathyesinteger
limitquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
401
GET/users/{user_id}/followersReturns a list of user’s followers.
Parameters
NameInRequiredType
user_idpathyesinteger
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
GET/users/{user_id}/followingsReturns a list of user’s followings.
Parameters
NameInRequiredType
user_idpathyesinteger
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
GET/users/{user_id}/followings/{following_id}Returns a user's following. (use /users/{user_id} instead, to fetch the user details)
Parameters
NameInRequiredType
user_idpathyesinteger
following_idpathyesinteger
Responses
StatusDescriptionSchema
200
401
404
GET/users/{user_id}/likes/tracksReturns a list of user's liked tracks.
Parameters
NameInRequiredType
user_idpathyesinteger
accessquerynoarray
limitquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
400
401
404
GET/users/{user_id}/playlistsReturns a list of user's playlists.
Parameters
NameInRequiredType
user_idpathyesinteger
accessquerynoarray
limitquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
401
GET/users/{user_id}/tracksReturns a list of user's tracks.
Parameters
NameInRequiredType
user_idpathyesinteger
accessquerynoarray
limitquerynointeger
linked_partitioningquerynoboolean
Responses
StatusDescriptionSchema
200
401
GET/users/{user_id}/web-profilesReturns list of user's links added to their profile (website, facebook, instagram).
Parameters
NameInRequiredType
user_idpathyesinteger
limitquerynointeger
Responses
StatusDescriptionSchema
200
401
404
likes4

Liking Tracks & Playlists.

POST/likes/playlists/{playlist_id}Likes a playlist.
Parameters
NameInRequiredType
playlist_idpathyesinteger
Responses
StatusDescriptionSchema
200
201
400
401
404
429
DELETE/likes/playlists/{playlist_id}Unlikes a playlist.
Parameters
NameInRequiredType
playlist_idpathyesinteger
Responses
StatusDescriptionSchema
200
400
404
POST/likes/tracks/{track_id}Likes a track.
Parameters
NameInRequiredType
track_idpathyesinteger
Responses
StatusDescriptionSchema
200
400
401
404
429
DELETE/likes/tracks/{track_id}Unlikes a track.
Parameters
NameInRequiredType
track_idpathyesinteger
Responses
StatusDescriptionSchema
200
400
404
reposts4

Reposting Tracks & Playlists.

POST/reposts/playlists/{playlist_id}Reposts a playlist as the authenticated user
Parameters
NameInRequiredType
playlist_idpathyesinteger
Responses
StatusDescriptionSchema
201Created
401
404
DELETE/reposts/playlists/{playlist_id}Removes a repost on a playlist as the authenticated user
Parameters
NameInRequiredType
playlist_idpathyesinteger
Responses
StatusDescriptionSchema
200Success
401
404
POST/reposts/tracks/{track_id}Reposts a track as the authenticated user
Parameters
NameInRequiredType
track_idpathyesinteger
Responses
StatusDescriptionSchema
201Created
401
404
DELETE/reposts/tracks/{track_id}Removes a repost on a track as the authenticated user
Parameters
NameInRequiredType
track_idpathyesinteger
Responses
StatusDescriptionSchema
200Success
401
404
miscellaneous1

Miscellaneous Endpoints.

GET/resolveResolves soundcloud.com URLs to Resource URLs to use with the API.
Parameters
NameInRequiredType
urlqueryyesstring
Responses
StatusDescriptionSchema
302

Try it

Developer reference

Base URLhttps://api.soundcloud.com
Rate limit

No 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.

Key endpoints
  • GET/tracks
  • GET/tracks/{track_id}
  • POST/tracks
  • GET/users/{user_id}
  • GET/playlists/{playlist_id}

Changelog

Spec version1.0.0
Tracked paths46

No change recorded yet.

Tracking since Sep 2026. See every tracked change ↗ ·Subscribe with RSS ↗