Last active
February 9, 2025 00:10
-
-
Save JBou/0538a57df21a2b3479c152ab7d4601e7 to your computer and use it in GitHub Desktop.
SoundCloud API Endpoints
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Authorization | |
{ ApiCommand.AuthorizationCodeFlow, new Uri("https://soundcloud.com/connect?scope=non-expiring&client_id={0}&response_type={1}&redirect_uri={2}") }, | |
{ ApiCommand.UserAgentFlow, new Uri("https://soundcloud.com/connect?client_id={0}&response_type=token&redirect_uri={1}") }, | |
{ ApiCommand.UserCredentialsFlow, new Uri("https://api.soundcloud.com/oauth2/token?client_id={0}&client_secret={1}&grant_type=password&username={2}&password={3}") }, | |
{ ApiCommand.RefreshToken, new Uri("https://api.soundcloud.com/oauth2/token?client_id={0}&client_secret={1}&grant_type=refresh_token&refresh_token={2}") }, | |
//Me | |
{ ApiCommand.Me, new Uri("https://api.soundcloud.com/me.json") }, | |
{ ApiCommand.MeTracks, new Uri("https://api.soundcloud.com/me/tracks.json") }, | |
{ ApiCommand.MeComments, new Uri("https://api.soundcloud.com/me/comments.json") }, | |
{ ApiCommand.MeFollowings, new Uri("https://api.soundcloud.com/me/followings.json") }, | |
{ ApiCommand.MeFollowingsContact, new Uri("https://api.soundcloud.com/me/followings/{0}.json") }, | |
{ ApiCommand.MeFollowers, new Uri("https://api.soundcloud.com/me/followers.json") }, | |
{ ApiCommand.MeFollowersContact, new Uri("https://api.soundcloud.com/me/followers/{0}.json") }, | |
{ ApiCommand.MeFavorites, new Uri("https://api.soundcloud.com/me/favorites.json") }, | |
{ ApiCommand.MeFavoritesTrack, new Uri("https://api.soundcloud.com/me/favorites/{0}.json") }, | |
{ ApiCommand.MeGroups, new Uri("https://api.soundcloud.com/me/groups.json") }, | |
{ ApiCommand.MePlaylists, new Uri("https://api.soundcloud.com/me/playlists.json") }, | |
{ ApiCommand.MeConnections, new Uri("https://api.soundcloud.com/me/connections.json") }, | |
//Users | |
{ ApiCommand.Users, new Uri("https://api.soundcloud.com/users.json") }, | |
{ ApiCommand.User, new Uri("https://api.soundcloud.com/users/{0}.json") }, | |
{ ApiCommand.UserTracks, new Uri("https://api.soundcloud.com/users/{0}/tracks.json") }, | |
{ ApiCommand.UserComments, new Uri("https://api.soundcloud.com/users/{0}/comments.json") }, | |
{ ApiCommand.UserFollowings, new Uri("https://api.soundcloud.com/users/{0}/followings.json") }, | |
{ ApiCommand.UserFollowingsContact, new Uri("https://api.soundcloud.com/users/{0}/followings/{contact_id}.json") }, | |
{ ApiCommand.UserFollowers, new Uri("https://api.soundcloud.com/users/{0}/followers.json") }, | |
{ ApiCommand.UserFollowersContact, new Uri("https://api.soundcloud.com/users/{0}/followers/{1}.json?consumer_key={2}") }, | |
{ ApiCommand.UserFavorites, new Uri("https://api.soundcloud.com/users/{0}/favorites.json?linked_partitioning=1") }, | |
{ ApiCommand.UserFavoritesTrack, new Uri("https://api.soundcloud.com/users/{0}/favorites/{1}.json") }, | |
{ ApiCommand.UserGroups, new Uri("https://api.soundcloud.com/users/{0}/groups.json") }, | |
{ ApiCommand.UserPlaylists, new Uri("https://api.soundcloud.com/users/{0}/playlists.json?linked_partitioning=1") }, | |
//Tracks | |
{ ApiCommand.Tracks, new Uri("https://api.soundcloud.com/tracks.json") }, | |
{ ApiCommand.Track, new Uri("https://api.soundcloud.com/tracks/{0}.json") }, | |
{ ApiCommand.TrackComments, new Uri("https://api.soundcloud.com/tracks/{0}/comments.json") }, | |
{ ApiCommand.TrackPermissions, new Uri("https://api.soundcloud.com/tracks/{0}/permissions.json") }, | |
{ ApiCommand.TrackSecretToken, new Uri("https://api.soundcloud.com/tracks/{0}/secret-token.json") }, | |
{ ApiCommand.TrackShare, new Uri("https://api.soundcloud.com/tracks/{0}/shared-to/connections") }, | |
//Comments | |
{ ApiCommand.Comment, new Uri("https://api.soundcloud.com/comments/{0}.json") }, | |
//Groups | |
{ ApiCommand.Groups, new Uri("https://api.soundcloud.com/groups.json") }, | |
{ ApiCommand.Group, new Uri("https://api.soundcloud.com/groups/{0}.json") }, | |
{ ApiCommand.GroupUsers, new Uri("https://api.soundcloud.com/groups/{0}/users.json") }, | |
{ ApiCommand.GroupModerators, new Uri("https://api.soundcloud.com/groups/{0}/moderators.json") }, | |
{ ApiCommand.GroupMembers, new Uri("https://api.soundcloud.com/groups/{0}/members.json") }, | |
{ ApiCommand.GroupContributors, new Uri("https://api.soundcloud.com/groups/{0}/contributors.json") }, | |
{ ApiCommand.GroupTracks, new Uri("https://api.soundcloud.com/groups/{0}/tracks.json") }, | |
//Playlists | |
{ ApiCommand.Playlists, new Uri("https://api.soundcloud.com/playlists.json") }, | |
{ ApiCommand.Playlist, new Uri("https://api.soundcloud.com/playlists/{0}.json") }, | |
//Resolver | |
{ ApiCommand.Resolve, new Uri("https://api.soundcloud.com/resolve.json?url={0}") }, | |
Soundcloud API V2 | |
==================================================== | |
Get likes and playlists (private & public and all own and liked) without tracklist (oauth needed) | |
https://api-v2.soundcloud.com/users/23667548/playlists/liked_and_owned?limit=12&client_id=fDoItMDbsbZz8dY16ZzARCZmzgHBPotA&app_version=1484833232&oauth_token= | |
Get only playlist ids: (I think they don't include private playlists) (oauth needed) | |
https://api-v2.soundcloud.com/me/playlist_likes/ids?limit=5000&linked_partitioning=1&client_id=fDoItMDbsbZz8dY16ZzARCZmzgHBPotA&app_version=1484833232&oauth_token= | |
Get playlist by id (followed by the previous request) | |
https://api-v2.soundcloud.com/playlists/272857198?representation=full&client_id=fDoItMDbsbZz8dY16ZzARCZmzgHBPotA&app_version=1484833232 | |
Get stream from homepage (oauth needed): | |
https://api-v2.soundcloud.com/stream?promoted_playlist=true&client_id=fDoItMDbsbZz8dY16ZzARCZmzgHBPotA&limit=10&offset=0&linked_partitioning=1&app_version=1484833232&oauth_token= | |
Get stream (oauth needed): | |
https://api.soundcloud.com/e1/me/stream?limit=10&offset=0&linked_partitioning=1&client_id=fDoItMDbsbZz8dY16ZzARCZmzgHBPotA&oauth_token= | |
Get play-history tracks (right side homepage): | |
https://api-v2.soundcloud.com/me/play-history/tracks | |
Get all track likes (right side homepage): | |
https://api-v2.soundcloud.com/users/23667548/track_likes | |
Get who to follow (right side homepage): | |
https://api-v2.soundcloud.com/me/suggested/users/who_to_follow?view=recommended-first | |
User total plays: | |
https://api-v2.soundcloud.com/users/soundcloud:users:23667548/stats/totals/plays | |
Comments: | |
https://api.soundcloud.com/app/v2/tracks/302492774/comments?filter_replies=1&limit=200&offset=0&linked_partitioning=1 | |
Liked Playlists: | |
https://api.soundcloud.com/e1/users/23667548/playlist_likes | |
Playlists: | |
https://api.soundcloud.com/users/gabrielpatzleiner/playlists | |
Playlist: | |
https://api.soundcloud.com/playlists/26704712.json | |
Get multiple tracks by id | |
http://api.soundcloud.com/tracks?ids=123,234,765,456,etc | |
Soundcloud App.js V2 endpoints taken from https://gist.github.com/JBou/9ed3ee830e04387811bc48fbcadc04fd | |
=============================================================== | |
announcement: [i, a, "announcements/:id"], | |
announcements: [i, a, "announcements"], | |
app: [i, a, "app/:id"], | |
appV2TrackComments: [i, a, "app/v2/tracks/:id/comments"], | |
audioAd: [i, l, "audio-ad"], | |
charts: [i, l, "charts"], | |
checkIdentifier: [i, u, "identifier", { | |
q: null | |
}], | |
collectionPlaylists: [i, l, "users/:id/playlists/liked_and_owned"], | |
comment: [i, l, "comments/:id"], | |
developerApps: [i, l, "apps"], | |
playlistLikesIds: [i, l, "me/playlist_likes/ids"], | |
playlistLikesCreate: [o, l, "users/:userId/playlist_likes/:id"], | |
playlistLikesDelete: [s, l, "users/:userId/playlist_likes/:id"], | |
playlistRepostsIds: [i, a, "e1/me/playlist_reposts/ids"], | |
playlistRepostsCreate: [o, a, "e1/me/playlist_reposts/:id"], | |
playlistRepostsDelete: [s, a, "e1/me/playlist_reposts/:id"], | |
soundLikesIds: [i, a, "e1/me/track_likes/ids"], | |
soundLikesCreate: [o, l, "users/:userId/track_likes/:id"], | |
soundLikesDelete: [s, l, "users/:userId/track_likes/:id"], | |
edgePlaylistCategory: [i, a, "e1/playlists/:id/:category"], | |
edgeTrackCategory: [i, a, "e1/tracks/:id/:category"], | |
soundReposters: [i, l, "tracks/:id/reposters"], | |
soundRepostsIds: [i, a, "e1/me/track_reposts/ids"], | |
soundRepostsCreate: [o, a, "e1/me/track_reposts/:id"], | |
soundRepostsDelete: [s, a, "e1/me/track_reposts/:id"], | |
featuredProfiles: [i, l, "users/:id/featured-profiles"], | |
feedPlaylistUpdate: [o, l, "feed-playlists/:id"], | |
feedTrackUpdate: [o, l, "feed-tracks/:urn"], | |
me: [i, l, "me"], | |
meConnections: [i, a, "me/connections"], | |
meRightsholders: [i, l, "me/rightsholders"], | |
meUpdate: [o, l, "me"], | |
myActivitiesTracks: [i, a, "me/activities/tracks"], | |
myConnection: [i, a, "me/connections/:id"], | |
myFollowersIds: [i, l, "me/followers/ids"], | |
myFollowingsIds: [i, l, "users/:userId/followings/ids"], | |
myFollowingsCreate: [r, l, "me/followings/:id"], | |
myFollowingsDelete: [s, l, "me/followings/:id"], | |
mySuggestedUsers: [i, l, "me/suggested/users/:category"], | |
newForYou: [i, l, "me/new-for-you"], | |
onboardingTrackRecommendations: [i, l, "onboarding/tracks/recommendations"], | |
oscpStatus: [i, l, "oscp/status"], | |
oscpUserCreate: [r, l, "oscp/user_info"], | |
oscpPayoutCreate: [r, l, "oscp/payout"], | |
oscpAvailableContract: [i, l, "oscp/contracts/available/:variant"], | |
oscpActiveContract: [i, l, "oscp/contracts/active/:id"], | |
oscpContractSign: [r, l, "oscp/contracts/sign/:variant"], | |
paymentCheckout: [i, l, "payments/checkout"], | |
paymentCheckoutItem: [i, l, "payments/checkout/:id"], | |
paymentOrders: [i, l, "payments/orders/:type"], | |
paymentQuotations: [i, l, "payments/quotations/:category"], | |
paymentQuotationsCode: [i, l, "payments/quotations/code/:id"], | |
paymentsConsumerSubscriptionsActive: [i, l, "payments/consumer-subscriptions/active"], | |
paymentsSubscriptionsActive: [i, l, "payments/subscriptions/active"], | |
personalizedTracks: [i, l, "me/personalized-tracks"], | |
playHistoryTracks: [i, l, "me/play-history/tracks"], | |
playHistoryContexts: [i, l, "me/play-history/contexts"], | |
playHistoryAdd: [r, l, "me/play-history"], | |
playHistoryClear: [s, l, "me/play-history"], | |
playlist: [i, l, "playlists/:id"], | |
playlistUpdate: [o, l, "playlists/:id"], | |
playlistArtworkUpdate: [o, a, "playlists/:id"], | |
playlistDelete: [s, a, "playlists/:id"], | |
playlistCategory: [i, l, "playlists/:id/:category"], | |
playlistCreate: [r, l, "playlists"], | |
playlistDiscovery: [i, l, "playlists/discovery"], | |
playlistsForTrack: [i, l, "tracks/:trackId/playlists"], | |
playlistsWithoutAlbumsForTrack: [i, l, "tracks/:trackId/playlists_without_albums"], | |
albumsForTrack: [i, l, "tracks/:trackId/albums"], | |
promotedSearch: [i, l, "promoted/search"], | |
promotedUploadTakeover: [i, l, "promoted/upload-takeover"], | |
promotedUploadText: [i, l, "promoted/upload-text"], | |
promotedUsers: [i, l, "promoted/users"], | |
recommendedStations: [i, l, "stations/:type"], | |
relatedSounds: [i, l, "tracks/:track_id/related"], | |
reportCopyrightInfringement: [r, l, "copyright_reports"], | |
resetPassword: [r, l, "users/password_reset", { | |
email: null | |
}], | |
resolve: [i, l, "resolve", { | |
url: "" | |
}], | |
search: [i, l, "search"], | |
searchQueries: [i, l, "search/queries"], | |
searchCategory: [i, l, "search/:category"], | |
searchSounds: [i, a, "search/sounds"], | |
searchSuggestTags: [i, a, "search/suggest/tags"], | |
shortcutsFollowings: [i, l, "me/shortcuts/followings"], | |
shortcutsTrackLikes: [i, l, "me/shortcuts/track-likes"], | |
signinWithFacebook: [r, u, "sign-in/facebook"], | |
signinWithGoogle: [r, u, "sign-in/google"], | |
signinWithPassword: [r, u, "sign-in/password"], | |
signupWithEmail: [r, u, "sign-up/email"], | |
signupWithEmailToken: [r, u, "sign-up/email/token"], | |
signupWithFacebook: [r, u, "sign-up/facebook"], | |
signupWithGoogle: [r, u, "sign-up/google"], | |
station: [i, l, "stations/:urn"], | |
stationBatch: [i, l, "stations", { | |
urns: null | |
}], | |
stationTracks: [i, l, "stations/:urn/tracks"], | |
likedStations: [i, l, "stations/liked"], | |
likedStationIds: [i, l, "stations/liked/ids"], | |
likeStation: [o, l, "stations/liked/:id"], | |
unlikeStation: [s, l, "stations/liked/:id"], | |
staticPage: [i, d, ":pageName.html"], | |
stream: [i, l, "stream"], | |
streamNotifications: [i, l, "stream/notifications"], | |
streamUserProfile: [i, l, "stream/users/:id"], | |
streamUserReposts: [i, l, "stream/users/:id/reposts"], | |
tagsSuggested: [i, l, "tags/suggested/:urn"], | |
tagsSuggestedCategory: [i, l, "tags/suggested/:category/:urn"], | |
territoriesWhichRequireExplicitRightsholder: [i, l, "tracks/explicit-rightsholder-required-in"], | |
timeseriesTrack: [i, l, "users/:user_id/tracks/:track_id/stats/timeseries/:metric"], | |
timeseriesUser: [i, l, "users/:user_id/stats/timeseries/:metric"], | |
track: [i, l, "tracks/:urn"], | |
trackAsOwner: [i, l, "tracks/:urn", { | |
representation: "owner" | |
}], | |
trackBatch: [i, l, "tracks"], | |
trackCategory: [i, l, "tracks/:id/:category"], | |
trackCreate: [i, l, "tracks"], | |
trackComments: [i, l, "tracks/:id/comments"], | |
trackDelete: [s, l, "tracks/:id"], | |
trackImageUpdate: [o, a, "tracks/:id"], | |
trackPatchUpdate: [o, a, "tracks/:id"], | |
trackPermalinkAvailability: [i, l, "track_permalink_availability", { | |
permalink: null | |
}], | |
trackStreams: [i, a, "i1/tracks/:id/streams"], | |
trackUpdate: [i, l, "tracks/:urn"], | |
trinityPublish: [i, a, "tpub/publish"], | |
trinitySubscribe: [i, a, "tsub/subscribe"], | |
user: [i, a, "users/:id"], | |
userAlbums: [i, l, "users/:id/albums"], | |
userAsOwner: [i, l, "users/:urn", { | |
representation: "owner" | |
}], | |
userComments: [i, a, "users/:id/comments"], | |
userDelete: [r, l, "users/:urn/deletion"], | |
userEmailCreate: [r, l, "users/:user_id/emails"], | |
userEmailDelete: [s, l, "users/:user_id/emails/:id"], | |
userEmailResendConfirmation: [r, l, "users/:user_id/emails/:id/confirmation"], | |
userEmailUpdate: [o, l, "users/:user_id/emails/:id"], | |
userEmails: [i, l, "users/:id/emails"], | |
userFollowers: [i, l, "users/:id/followers"], | |
userFollowersFollowedBy: [i, l, "users/:id/followers/followed_by/:followed_by"], | |
userFollowings: [i, l, "users/:id/followings"], | |
userFollowingsNotFollowedBy: [i, l, "users/:id/followings/not_followed_by/:not_followed_by"], | |
userImageUpdate: [o, a, "users/:id"], | |
userLikes: [i, l, "users/:id/likes"], | |
userTrackLikes: [i, l, "users/:id/track_likes"], | |
userNotificationsPreferences: [i, l, "users/:id/notifications/preferences"], | |
userPlaylists: [i, l, "users/:id/playlists"], | |
userPlaylistsWithoutAlbums: [i, l, "users/:id/playlists_without_albums"], | |
userResetPassword: [r, l, "users/:id/password_reset"], | |
userSettings: [i, l, "users/:id/settings"], | |
userSpotlight: [i, l, "users/:id/spotlight"], | |
userTracks: [i, l, "users/:id/tracks"], | |
userWebProfiles: [i, l, "users/:urn/web-profiles"], | |
userWebProfilesUpdate: [r, l, "users/:urn/web-profiles"], | |
visuals: [i, c, "visuals"], | |
userBlockingsIds: [i, a, "me/mutings/users/ids"], | |
userBlockingsDelete: [s, a, "me/mutings/users/:id"], | |
userBlockingsCreate: [r, a, "me/blockings", { | |
user_id: null, | |
reported: null, | |
remove_activities: null | |
}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I just debugged the request using chrome's dev tools. Seems like you have to send a PUT request to the following url (replace the playlist-id and api key): https://api-v2.soundcloud.com/playlists/playlistid?client_id=123456789&app_version=1619164206&app_locale=en
with the following payload:
As you can see, the
permalink
is test (new) but thepermalink_url
is still test2 (old). In the response the permalink is changed to test (new). The soundcloud website sends all of the information, maybe it's enough to just send the properties you want to change. Otherwise you have to request the playlist-data, change the permalink and send the whole data as PUT request to the server, it should work like this. But as I haven't used this API since 4 years, I haven't tested and don't know what has changed. Good luck 😃