Download
One unified downloader for YouTube, SoundCloud, Instagram, TikTok and Facebook (audio or video), plus the Hep.gg high-quality music library by ISRC.
Download
Two ways to pull audio (and now video) down:
- The unified downloader (
/media) takes any YouTube, SoundCloud, Instagram, TikTok, or Facebook link, auto-detects the network, and returns audio or video. - The high-quality music library (
/download) resolves a single track by ISRC and returns lossless or high-bitrate audio.
Download from a URL (unified)
https://music.jakeypri.me/mediaAuth requiredPaste any supported link. The network is detected from the URL; short links (vm.tiktok.com, fb.watch, youtu.be, …) are resolved automatically.
urlformataudio or video. Optional. When omitted, each network uses its default (see the table). SoundCloud is always audio; YouTube Shorts are always video.Networks and defaults
| Network | URL forms | Default format | Audio/video toggle |
|---|---|---|---|
| YouTube | watch, youtu.be, embed, shorts | audio (Shorts: video) | yes (Shorts: video only) |
| SoundCloud | soundcloud.com, m., on. | audio | no (audio only) |
/reel, /p, /tv | video | yes | |
| TikTok | /@user/video/<id>, vm.tiktok.com, tiktok.com/t/<code> | video | yes |
/watch, /reel, /videos, fb.watch | video | yes |
Format and quality
- Audio is a 320 kbps MP3.
- Video is an MP4 (best video + audio, merged). Free keys are capped at 1080p; Prime keys are uncapped.
Response
200 with a binary stream.
Content-Type:audio/mpegfor audio,video/mp4for video.Content-Disposition:attachmentwith a filename derived from the title.
Cached for 24 hours per (network, id, format), so the audio and video of the same item are cached independently.
Errors
400{ "error": "URL is required" }whenurlis missing.400for an unsupported or non-video link (playlists, channels, profiles, livestreams, photo posts, image-only posts) with a descriptive message.422{ "error": "Could not download this <network> (it may be private, removed, age-restricted, or require login)." }. Instagram and Facebook run without login cookies, so some videos behind a login wall fail this way.500{ "error": "Failed to download media" }on a server-side failure.
Examples
Download from the high-quality library
https://music.jakeypri.me/downloadAuth requiredResolve a track by its ISRC and stream back the audio. You can also pass a track link in url and Hep.gg will resolve it to its ISRC first, then download from the library.
isrcurl.urlisrc. URL-encode it. Playlist URLs are rejected, see playlists.quality128128, 320, or flac.Response
200 with a binary audio stream.
Content-Type:audio/mpegfor128/320,audio/flacforflac.Content-Disposition:attachmentnamed<artist> - <name>.<ext>.
HQ results (anything other than the default 128) are cached for 24 hours. A HEAD /download is also supported (same params) and returns just the headers.
Quality notes
- The default is
128whenqualityis omitted, not320. flacis not available for every track. When it is not, the response is404 { "error": "Requested quality not available for this track." }. Fall back to320.
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." }.400playlist URL supplied (use/playlistdownload).404{ "error": "Track not found for this ISRC" }/"Requested quality not available for this track."500on a server-side failure.
Examples
Expand a playlist
https://music.jakeypri.me/playlistdownloadAuth requiredThis endpoint does not return audio. It expands a supported playlist link into a list of tracks (ISRC, name, artist) that are resolvable in the library. To download the playlist, call this once, then loop over the returned tracks and call /download for each ISRC.
url400.Response
200 with a JSON object. Only resolvable tracks are included, so found may be lower than totalTracks.
{
"totalTracks": 50,
"found": 48,
"tracks": [
{ "isrc": "USQX91300108", "name": "Get Lucky", "artist": "Daft Punk" }
]
}totalTracksfoundtracks).tracksisrc, name, and artist. Feed each isrc to /download.Errors
400{ "error": "URL is required" }.400when the playlist link is not supported.500{ "error": "Failed to process playlist" }.