Add stem API

Updated 2026-09-18 · Suno-API team

Endpoint description

Add stem adds a specific instrument or track to an existing song — for example drums, bass, strings or a harmony track.

Endpoint: POST /api/music/add-stem

Billing: Paid, billed by the requested model; the amount actually charged follows the 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; variety costs nothing extra. What they mean and how to send them is in the "Advanced parameters" section of the New API overview.

Recommended model: suno-v6. suno-v6, suno-v6-wild and suno-v6-mini are available.

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.

Authentication

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

Request parameters

Parameter Type Required Default Notes
model string yes - Customer-facing model name: suno-v6, suno-v6-wild or suno-v6-mini
source_clip_id string yes - The real song_id of the source song; it must be completed and accessible to the current API key
stem_control_tags string yes - Single-line add-track instruction, up to 120 characters, for example add Drums
lyrics string no - Lyrics, when they must be generated together with the track
style_tags string no - Style tags
song_title string no - Title of the result
negative_tags string no - Negative style tags
wait_completion boolean no false Whether to wait a long time before responding

Request example

curl -X POST https://www.suno-api.io/api/music/add-stem \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "source_clip_id": "source_song_id",
    "stem_control_tags": "add Drums",
    "song_title": "Added drums",
    "wait_completion": false
  }'

Response

{
  "code": 200,
  "message": "success",
  "data": {
    "clips": [
      {
        "song_id": "result_song_id",
        "song_title": "Added drums",
        "status": "pending"
      },
      {
        "song_id": "result_song_id_2",
        "song_title": "Added drums",
        "status": "pending"
      }
    ]
  }
}

One call returns 2 results (billed as 2 songs); the example shows 2. Judge by the length of the clips array and do not hard-code a fixed count. Save clips[].song_id and poll the song query API until completed.

Notes

NextMashup 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