Skip to content

Music Editor ​

Music editor uses to extend, recreate, add accompaniment, add a voice, Mashup and replace clips. Edit task is submitted by POST /v1/tasks.

Extension of Music ​

Query the original music task. Once status=SUCCESS, read media[].suno_audio_id and use that value as audioId in the extension request.

The extension model should be consistent with the version of the source music. For example, if the source music is generated by suno-music-v5.5, the suno-extend-v5.5 priority is given to the extension; not to mix the same audioId with the extended model of the different versions.

bash
curl https://moonnexai.com/v1/tasks \
  -H "Authorization: Bearer <MOONNEXAI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-extend-v5.5",
    "audioId": "807233aa-438a-4b5c-a203-9b64299ed238",
    "defaultParamFlag": false,
    "callBackUrl": "https://example.com/callback"
  }'

Upload and recreate ​

bash
curl https://moonnexai.com/v1/tasks \
  -H "Authorization: Bearer <MOONNEXAI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-upload-cover-v5.5",
    "uploadUrl": "https://example.com/source.mp3",
    "customMode": true,
    "instrumental": false,
    "prompt": "Create a soft acoustic cover with a warm vocal tone.",
    "style": "Acoustic Pop",
    "title": "Warm Cover",
    "callBackUrl": "https://example.com/callback"
  }'

Upload and extend ​

defaultParamFlag=true is recommended to provide continueAt, prompt, style and title in a visible form. continueAt must be greater than 0 and less than the upload of the total duration.

bash
curl https://moonnexai.com/v1/tasks \
  -H "Authorization: Bearer <MOONNEXAI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-upload-extend-v5.5",
    "uploadUrl": "https://example.com/source.mp3",
    "defaultParamFlag": true,
    "continueAt": 60,
    "prompt": "Extend the song with an emotional bridge.",
    "style": "Cinematic Pop",
    "title": "Emotional Bridge",
    "callBackUrl": "https://example.com/callback"
  }'

Add accompaniment or a human voice ​

bash
curl https://moonnexai.com/v1/tasks \
  -H "Authorization: Bearer <MOONNEXAI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-add-instrumental-v5.5",
    "uploadUrl": "https://example.com/source.mp3",
    "title": "Instrumental Version",
    "negativeTags": "noise, distortion",
    "tags": "pop, clean instrumental",
    "callBackUrl": "https://example.com/callback"
  }'
bash
curl https://moonnexai.com/v1/tasks \
  -H "Authorization: Bearer <MOONNEXAI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-add-vocals-v5.5",
    "uploadUrl": "https://example.com/source.mp3",
    "prompt": "Add a gentle female vocal.",
    "title": "Vocal Version",
    "negativeTags": "noise, distortion",
    "style": "Soft Pop",
    "callBackUrl": "https://example.com/callback"
  }'

Generate Mashup ​

It is suggested to use the default mode customMode=false first; if the custom mode returns the lyrics to empty, short or format abnormal, you can cut back to the default mode to try again.

bash
curl https://moonnexai.com/v1/tasks \
  -H "Authorization: Bearer <MOONNEXAI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-mashup-v5",
    "uploadUrlList": [
      "https://example.com/source-a.mp3",
      "https://example.com/source-b.mp3"
    ],
    "customMode": false,
    "callBackUrl": "https://example.com/callback"
  }'

Replace Snippet ​

bash
curl https://moonnexai.com/v1/tasks \
  -H "Authorization: Bearer <MOONNEXAI_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-replace-section",
    "taskId": "task_xxx",
    "audioId": "807233aa-438a-4b5c-a203-9b64299ed238",
    "prompt": "Replace this section with a brighter hook.",
    "tags": "pop, bright hook",
    "title": "Updated Hook",
    "fullLyrics": "[Verse] ... [Chorus] ...",
    "infillStartS": 45,
    "infillEndS": 75,
    "callBackUrl": "https://example.com/callback"
  }'

You will fill in field ​

Model familyYou will fill in field
suno-extend-*audioId, defaultParamFlag, callBackUrl; when defaultParamFlag=true, also supply continueAt, prompt, style, title
suno-upload-cover-*uploadUrl, customMode, instrumental, callBackUrl; when customMode=true, also supply prompt, style, title
suno-upload-extend-*uploadUrl, defaultParamFlag, callBackUrl; recommended to provide continueAt, prompt, style, title
suno-add-instrumental-*uploadUrl, title, negativeTags, tags, callBackUrl
suno-add-vocals-*uploadUrl, prompt, title, negativeTags, style, callBackUrl
suno-mashup-*uploadUrlList, customMode, callBackUrl
suno-replace-sectiontaskId, audioId, prompt, tags, title, fullLyrics, infillStartS, infillEndS

Use recommendations ​

  • Edit class task to save old task ID, suno_audio_id and new task ID.
  • Extending class task to select a model that is the same as the source music; a cross-version may fail to generate.
  • Upload task using a public web-accessible uploadUrl and, if necessary, by registering media assets via POST /v1/assets/uploads and then using the public network URL of media assets.
  • When uploading and extending, it is recommended that the continueAt be displayed and confirmed that it is within the sound-efficient duration.
  • When the same song is edited several times, it is suggested that each editorial purpose be recorded.