/from-linkDownload audio from Suno, Udio, and other AI music sites
Send a public song, playlist, or creator-page link. Your app or agent gets an audio ID, waits for the download, then saves the file or sends it to restoration, mastering, stem splitting, or MIDI conversion.
Review the supported imports for accepted track, playlist, and creator-page sources.
How this endpoint works
Use this endpoint to build a music downloader, back up a public AI music library, or process songs from links without downloading and uploading them again on your server. It downloads existing public audio; it is not an official Suno or Udio music-generation API.
- 1
Send a public music link
Send the URL of a supported song, playlist, or creator page with your API key.
- 2
Wait for the download
Save audio_id and poll the download status until it completes or fails.
- 3
Save or process the song
Download the completed song or send its audio ID for processing with restoration, mastering, stem separation, or MIDI conversion.
Common use cases
Choose this operation when it matches the source and result your workflow needs.
Build an AI music downloader
Let users paste a public Suno, Udio, Mureka, or other supported song link and download the audio in your app.
Back up a playlist or creator page
Import multiple public tracks from a supported playlist or creator page and keep a local copy.
Process an AI-generated song
Download a song first, then restore its audio, master it, split it into stems, or convert it to MIDI.
Processing used by 60,000+ music makers
Results people rely on
“It worked! Well done :) Many thanks :))))”
Vicki (People Like Us)
2600+ songs saved
“Love it! Makes everything crisp!”
The Grim Tower
“Sensacional”
Francisco
“Highend services!”
Tommi, Studionet
Code examples
Server-side example
import { writeFile } from "node:fs/promises";
const API_URL = "https://api.neuralanalog.com";
const API_KEY = process.env.NEURALANALOG_API_KEY;
async function waitForCompletion(objectType, objectId) {
while (true) {
const response = await fetch(`${API_URL}/status/${objectType}/${objectId}`, {
headers: { "X-API-Key": API_KEY },
});
if (!response.ok) {
throw new Error(`Status check failed with ${response.status}`);
}
const status = await response.json();
if (status.is_failed) {
throw new Error(status.error_message || `${objectType} processing failed`);
}
if (status.is_complete) {
return status;
}
await new Promise((resolve) => setTimeout(resolve, 5000));
}
}
const requestResponse = await fetch(`${API_URL}/from-link`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"url": "https://suno.com/song/example"
}),
});
if (!requestResponse.ok) {
throw new Error(`Import failed with ${requestResponse.status}`);
}
const result = await requestResponse.json();
const jobId = result["audio_id"];
const status = await waitForCompletion("audio", jobId);
const downloadResponse = await fetch(
`${API_URL}/download/audio/${jobId}`,
{ headers: { "X-API-Key": API_KEY }, redirect: "follow" },
);
if (!downloadResponse.ok) {
throw new Error(`Download failed with ${downloadResponse.status}`);
}
await writeFile("original.wav", Buffer.from(await downloadResponse.arrayBuffer()));Parameters
Send the API key from a trusted server. Never expose it in client-side JavaScript.
JSON request body
urlPublic audio, video, playlist, or creator URL to import. Supported sources include Suno, Udio, FlowMusic / Producer.ai, TopMediaAI, Musicful, iLoveSong, MusicCreator, AIMusicGen, MakeBestMusic, EasyMusic, MusicAI, FreeMusic, MusicGeneratorAI, AI Song Maker, OpenMusic, AI Song Generator, Mureka, Treblo, Tad AI, Spotify, and online source links.
Example: "https://www.youtube.com/watch?v=0Y46Mr5g75o"
audio_idExisting audio ID to retry or replace. Omit this field to create a new audio asset.
Example: "6c62f8e7-02a3-48c0-a5b5-5de87ed9c31a"
Successful response
audio_idID of the imported audio asset.
Example: "6c62f8e7-02a3-48c0-a5b5-5de87ed9c31a"
statusImport state returned immediately after the background job starts.
Example: "processing"
messageHuman-readable status message for the import request.
Example: "Download started"
batch_idBatch import ID when the submitted link expands into multiple tracks, such as a playlist or creator page.
Example: "1f6a3a16-7c63-4ad7-9f6b-4af8b8a5f2f5"
Errors
X-API-Key returns an authentication error. Validation errors use the declared 422 response below.detailNo description provided.