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/json — CreateUpdatePlaylistRequest

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/json — CreateUpdatePlaylistRequest

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-data — TrackDataRequest

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/json — TrackMetadataRequest

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 ↗