Cover from a source clip API

Updated 2026-09-18 · Suno-API team

Endpoint description

Cover from a source clip reuses a source clip you have already uploaded, or one that already exists, and generates a new cover version from it.

Endpoint: POST /api/music/generate-from-source

Billing: Paid, currently 0.6 ¥ per call by default. Uploading the source audio itself is free; the charge applies when you generate a cover from the source clip. The amount actually charged follows the current back-office price configuration.

Max Mode / Variety: this endpoint supports the optional parameters max_mode and variety (0-4). With max_mode on, this call is billed at 2× the price (0.6 → 1.2 ¥ per call); variety costs nothing extra. What they mean and how to send them is in the "Advanced parameters" section of the New API overview.

Wait times and timeouts (important): this is a synchronous endpoint — the order is only accepted and handed to generation when the response arrives. Measured, most requests return in 1-3 seconds, about 10% take longer than 30 seconds, and the longest is about 230 seconds. Set your client timeout to 300 seconds or more; no response does not mean nothing was generated, and do not retry immediately after a timeout (that duplicates the order and charges again). If the connection dropped, confirm later with GET /api/music/songs. See "Wait times and timeout settings" in the New API overview.

Recommended usage: this is step 2 of the "two-step cover". In step 1, upload with the upload source audio API (free) and take the clip_id; in step 2, call this endpoint to start the cover. That way the audio only appears in the free step: if the upload goes wrong, just retry — nothing is charged — while the request body of the charged step is only a few hundred bytes, so it can hardly fail because the transfer was cut. The one-shot upload-then-cover API puts the whole audio into the request body, so once the audio is over about 8 MB it easily gets truncated in transit and returns unexpected end of JSON input (see "Large files and truncated requests" on that page).

Besides, the same clip_id can be reused for extend, replace-section, separation and other follow-up actions, so there is no need to upload the audio again.

Request parameters

Headers

Parameter Type Required Notes
Authorization string yes Bearer YOUR_API_KEY
Content-Type string yes application/json

Body parameters

Parameter Type Required Default Notes
model string no suno-v6 Customer-facing model name: suno-v6, suno-v6-wild or suno-v6-mini
sourceClipId string yes - Source clip ID; you can use the clip_id returned by upload source audio, the real song_id of a song you already have, or the real song_id returned once an enhanced upload completes
sourceAudioUrl string no - Source audio URL
sourceTitle string no - Source audio title
prompt string no - New lyrics or the creative direction
customMode boolean no true Whether to use custom mode
style string no - Style tags
title string no - Title
negativeTags string no - Negative style
instrumental boolean no false Whether the song is instrumental
waitAudio boolean no false Whether to wait for the audio to complete
vocalGender string no - Vocal gender
lyricsMode string no - Lyrics mode
weirdnessConstraint number no - Weirdness
styleWeight number no - Style influence weight
audio_weight number no - Influence weight of the reference audio, range 0.0-1.0; can only be sent when a source clip or reference audio is provided

weirdnessConstraint, styleWeight and audio_weight all take a decimal ratio from 0.0 to 1.0, not a percentage integer; 50%, for example, is 0.5. 0 is a valid value — only omitting the field means "not specified". audio_weight maps to Suno's metadata.control_sliders.audio_weight and controls how far the result leans on the reference audio; it may only be carried when the request contains a valid sourceClipId or reference audio, so do not send it for ordinary text-only generation. With customMode=true, put the new lyrics in prompt and provide both style and title; with customMode=false, put the creative description in prompt. instrumental and waitAudio must use the JSON booleans true/false.

This endpoint returns asynchronously by default. While the returned status is pending, an empty audio_url is normal; wait until it completes before using the audio address. sourceClipId must be a real source song/clip ID — do not use a task_id, a client_request_id or a pending: placeholder ID.

What kind of ID is sourceClipId

sourceClipId is the real Suno clip identifier used as the source of this cover. The platform's customer-facing song object normally names this identifier song_id, while the cover request parameters keep the name sourceClipId; here the two mean the same real song ID.

If the source is an enhanced upload, query the enhanced upload task first and wait until status becomes completed, then put the returned real song_id into sourceClipId. It is recommended to also put that result's audio_url and title into sourceAudioUrl and sourceTitle.

Do not put an enhanced upload's task_id, client_request_id or pending:enhanced-upload:* placeholder ID into sourceClipId.

Request example

curl -X POST https://www.suno-api.io/api/music/generate-from-source \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "sourceClipId": "uploaded_or_existing_clip_id",
    "sourceAudioUrl": "https://example.com/source.mp3",
    "sourceTitle": "Original audio title",
    "prompt": "New lyrics or creative direction",
    "customMode": true,
    "style": "Mandopop, warm vocal",
    "title": "Cover title",
    "negativeTags": "noise",
    "audio_weight": 0.5,
    "instrumental": false,
    "waitAudio": false
  }'

Response

{
  "code": 200,
  "message": "success",
  "data": {
    "clips": [
      {
        "song_id": "new_clip_id",
        "song_title": "Cover title",
        "status": "pending"
      }
    ],
    "source_update": {}
  }
}

Notes

This endpoint tries to handle which account the source clip belongs to. If the source clip cannot be used directly, the server may re-upload it based on the source audio information and then generate.

NextExtend API

Get an API key

Create an API key in the console after signing up. ¥0.6 per run returns 2 tracks, downloads are unlimited, and no phone number is required.

Get API key Back to overview