Download

Download single tracks by ISRC or URL, YouTube and SoundCloud audio, and expand Spotify playlists.

Download

Download audio from four sources: a single track (by ISRC or Spotify/Deezer URL), a YouTube video, a SoundCloud track, and a Spotify playlist (expanded to a track list you then download per ISRC).

Download a track

GEThttps://music.jakeypri.me/downloadAuth required
Download a single track as an audio file, by ISRC or by Spotify/Deezer URL.

Resolve a track either by ISRC or by a Spotify/Deezer track URL, and stream back the audio file. Spotify URLs are resolved to their ISRC and matched on Deezer; link.deezer.com short links are resolved automatically.

Query params
isrc
stringoptional
The track's ISRC. Must be exactly 12 characters. Provide this or url.
url
stringoptional
A Spotify or Deezer track URL. Provide this or isrc. URL-encode it. Playlist URLs are rejected, see playlists.
quality
stringoptionaldefault: 128
Audio quality. One of 128, 320, or flac.

Response

200 with a binary audio stream.

  • Content-Type: audio/mpeg for 128/320, audio/flac for flac.
  • Content-Disposition: attachment with a filename derived as <artist> - <name>.<ext>.

HQ results (anything other than the default 128) are cached for 24 hours, so a repeat request for the same ISRC and quality is served from cache. A HEAD /download is also supported (same params) and returns just the headers.

Quality notes

  • The default is 128 when quality is omitted, not 320.
  • flac is not available for every track. When it is not, the response is 404 { "error": "Requested quality not available for this track." }. Fall back to 320 in that case.

Errors

  • 400 { "error": "Either url or isrc parameter is required" } when neither is supplied.
  • 400 { "error": "Invalid quality. Must be 128, 320, or flac" }.
  • 400 { "error": "Invalid ISRC. Must be 12 characters." }.
  • 400 playlist URL supplied (use /playlistdownload).
  • 404 { "error": "Track not found for this ISRC" } / "Track not found" / "Requested quality not available for this track."
  • 500 on a server-side failure. Some Spotify resolution errors include extra hint or details fields.

Examples

curl
# By ISRC, HQ
curl -L "https://music.jakeypri.me/download?isrc=USRC17607839&quality=320&key=YOUR_KEY" \
  -o track.mp3
 
# By Spotify URL (URL-encoded)
curl -L "https://music.jakeypri.me/download?url=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F69kOkLUCkxIZYexIgSG8rq&key=YOUR_KEY" \
  -o track.mp3

Download YouTube audio

GEThttps://music.jakeypri.me/ytAuth required
Download a YouTube video's audio as a 320kbps MP3.
Query params
url
stringrequired
A YouTube URL (youtube.com/watch, youtu.be, shorts, or embed). URL-encode it. The video ID is parsed out of the URL.

200 with an audio/mpeg stream, Content-Disposition: attachment named <video title>.mp3. Cached for 24 hours by video ID. Errors: 400 { "error": "URL is required" }, 400 { "error": "Invalid YouTube URL" }, 500 { "error": "Failed to download YouTube audio" }.

curl
curl -L "https://music.jakeypri.me/yt?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ&key=YOUR_KEY" \
  -o audio.mp3

Download SoundCloud audio

GEThttps://music.jakeypri.me/soundcloudAuth required
Download a SoundCloud track's audio as a 320kbps MP3.
Query params
url
stringrequired
A SoundCloud track URL (soundcloud.com, m., www., or on.soundcloud.com). URL-encode it.

200 with an audio/mpeg stream, Content-Disposition: attachment named <artist - title>.mp3 (falls back to the track id). Cached for 24 hours by track id. Errors: 400 { "error": "URL is required" }, 400 { "error": "Invalid SoundCloud URL" }, 500 { "error": "Failed to download SoundCloud audio" }.

curl
curl -L "https://music.jakeypri.me/soundcloud?url=https%3A%2F%2Fsoundcloud.com%2Fartist%2Ftrack&key=YOUR_KEY" \
  -o audio.mp3

Expand a Spotify playlist

GEThttps://music.jakeypri.me/playlistdownloadAuth required
Expand a Spotify playlist into a track list. Does not return audio.

This endpoint does not return audio. It expands a Spotify playlist into a list of tracks (ISRC, name, artist) that are resolvable on Deezer. To actually download the playlist, call this once, then loop over the returned tracks and call /download for each ISRC.

Query params
url
stringrequired
A Spotify playlist URL. URL-encode it. Only Spotify playlists are supported.

Response

200 with a JSON object. Only tracks resolvable on Deezer are included, so found may be lower than totalTracks.

{
  "totalTracks": 50,
  "found": 48,
  "tracks": [
    { "isrc": "USQX91300108", "name": "Get Lucky", "artist": "Daft Punk" }
  ]
}
Response fields
totalTracks
integeroptional
Number of tracks in the source playlist.
found
integeroptional
Number of those tracks resolvable on Deezer (the length of tracks).
tracks
arrayoptional
Resolvable tracks, each with isrc, name, and artist. Feed each isrc to /download.

Errors

  • 400 { "error": "URL is required" }.
  • 400 { "error": "Only Spotify playlists are supported at this time" }.
  • 400 invalid playlist, with a hint field.
  • 500 { "error": "Failed to process playlist" }.

Two-step download flow

curl
# 1. Expand the playlist to a track list
curl "https://music.jakeypri.me/playlistdownload?url=https%3A%2F%2Fopen.spotify.com%2Fplaylist%2F37i9dQZF1DXcBWIGoYBM5M&key=YOUR_KEY"
 
# 2. For each isrc in the response, download it
curl -L "https://music.jakeypri.me/download?isrc=USQX91300108&quality=320&key=YOUR_KEY" -o "track.mp3"