Skip to main content
POST
The former POST /v1/music/generations/wav endpoint is deprecated. It remains temporarily compatible and is equivalent to the new endpoint with formats: ["wav"]. New integrations should use POST /v1/music/generations/download.
Select the source song: pass the task_id returned by the task that created the source audio, then use audio_index to select a track from its music[] result. The index is 1-based and defaults to 1.

Authentication

string
required
All endpoints require Bearer Token authentication. Get your key from the API Key page.

Request parameters

string
default:"suno"
Model name. Use suno; omitted values default to suno.
string
required
The task ID returned when the source song was created.The source task must belong to the current account, be completed, and contain a downloadable audio track. Music generation, extension, cover, and stem tasks can be used; text-only tasks such as lyrics or BPM analysis cannot.
integer
default:"1"
The track to download from the source task’s music[] result.
  • 1-based index
  • Default: 1
  • Must not exceed the number of tracks in the source task
string[]
Array of requested file formats. At least one item is required.Supported values:
  • mp3
  • m4a
  • wav
Multiple formats may be requested together. Values are case-insensitive and duplicates are removed automatically. Result order matches request order.
string
For a single format, this field can be used instead of formats.Example: "format": "mp3"
Use either formats or format. Omitting both, or passing an empty format list, returns HTTP 400.

Submission response

Successful submission returns a new download-task task_id:
data is an array; read data[0].task_id. This is the new download task ID, not the source-song task_id sent in the request.

Query download results

Query with the download task ID from the submission response:
Files are usually prepared during submission, so query once immediately. If the status is neither completed nor failed, poll every 2 seconds for up to 60 seconds.

Completed

Read result.files[] to obtain downloads:
result.wavUrl only exists for compatibility with the legacy WAV endpoint. New code should always read result.files[].

Processing

There is no result yet. Continue polling.

Failed

Failed tasks are refunded automatically and return cost: 0. Display error.message and offer a retry.

File URLs

Results normally use APIMart’s file domain. If storage transfer fails, an upstream CDN URL may be returned and its lifetime is not guaranteed.
Download and store the file promptly. Do not rely on a temporary URL for long-term storage.

Errors

Submission validation errors return HTTP 400 before task creation and billing: HTTP 403 with model_price_not_configured means suno@download pricing is not configured; contact platform support.

Billing and repeated downloads

The download endpoint is billed per request:
  • One request with multiple formats incurs one charge
  • Submitting the same song again creates another charge, even for the same format
  • Requesting another format in a later task incurs another charge
  • Failed download tasks are refunded automatically
Reuse returned file URLs and disable the download button while a request is in progress to prevent duplicate submissions and charges.

Migrate from the legacy endpoint

The legacy endpoint remains temporarily available, but all new code should use /generations/download.

Response

integer
Response status code; 200 on success
array
Submission response data