Skip to content

Add Vocals to Music ​

This page is generated from the upstream official OpenAPI documentation. Endpoints, parameters and examples match the official docs; brand and API domain are replaced with ModelFold.

Endpoint ​

POST /jobs/createTask

Full URL: https://ai.modelfold.online/v1/jobs/createTask

Authentication: every request must include the Authorization: Bearer <API_KEY> header.

Document updated

If you have already completed the integration process previously, you can still access the old version document at: Old version address (https://ai.modelfold.online/docs/en/suno-api/add-vocals)

Generate music with vocals based on uploaded audio files. This interface allows you to upload audio files and add vocal singing to them.

Usage Guide ​

  • Use this interface to add vocal singing to existing audio
  • Supports custom lyric content and singing styles
  • Allows control of vocal gender, style weight, and other parameters
  • With source audio (upload_url), generation can proceed; title, negative_tags, and style are required, and all other fields are optional

Parameter Details ​

  • Always required: upload_url, title, negative_tags, style
  • upload_url specifies the source audio file URL to be processed
  • title specifies the title for the generated music
  • style and negative_tags are used to control music and vocal style
  • lyrics is optional. V6 maximum 5000 characters. If omitted, prompt is used as lyrics when provided
  • Optional fine-tuning: prompt, model, vocal_gender, style_weight, weirdness_constraint, audio_weight, variety

Developer Notes ​

  • Generated files will be retained for 14 days
  • Callbacks may be sent at the text, first and complete stages; only complete is guaranteed. Treat complete as the final result.

Request Parameters ​

Body (application/json) ​

ParameterTypeRequiredDescription
modelstringYesThe model name to use for generation. Required field. 示例:ai-music-api/add-vocals。
callBackUrlstringNoThe URL to receive generation task completion updates. Optional but recommended for production use.
- System will POST task status and results to this URL when generation completes
- Callback includes generated content URLs and task information
- Your callback endpoint should accept POST requests with JSON payload containing results
- Alternatively, poll GET /api/v1/jobs/recordInfo?taskId=... (see Get Task Details). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration).
- To ensure callback security, see Webhook Verification Guide for signature verification implementation
inputobjectYesInput parameters for the generation task
  input.promptstringNoPrompt for generating audio. Optional.
- Used as lyrics only when lyrics is not provided. If lyrics is present, prompt is not used as lyrics.
- V6, V6_MINI, and V6_WILD: Maximum 5000 characters. 示例:A calm and relaxing piano track.。
  input.modelstringNoThe AI model version to use for generation.
- Available options:
- V6_WILD: Pushes creative boundaries for bolder, more distinctive musical expression.
- V6_MINI: Lightweight and fast, balancing quality and speed for effortless creation.
- V6: Greater musical expression with more natural vocals and richer details.
- V5_5 (Discontinued): Custom Models Tailored to Your Unique Taste.
- V5 (Discontinued): Superior musical expression, faster generation.
- V4_5PLUS (Discontinued): V4.5+ is richer sound, new ways to create. Default:"V6"。 Allowed values:V4_5PLUS / V5 / V5_5 / V6 / V6_MINI / V6_WILD。 示例:V6。
  input.titlestringYesMusic title. Required. Will be displayed in the player interface and file name. 示例:Relaxing Piano。
  input.negative_tagsstringYesExcluded music styles. Required. Used to avoid including specific styles or elements in the generated music. 示例:heavy metal, strong drum beats。
  input.stylestringYesMusic style. Required. Such as jazz, electronic, classical and other music types. 示例:Jazz。
  input.vocal_genderstringNoVocal gender preference. Optional. 'm' for male, 'f' for female. Based on practice, this parameter can only increase the probability but cannot guarantee adherence to male/female voice instructions. Allowed values:m / f。 示例:m。
  input.style_weightnumberNoAdherence strength to specified style. Optional. Range 0–1, up to 2 decimal places. 示例:0.61。
  input.weirdness_constraintnumberNoControls experimental/creative deviation level. Optional. Range 0–1, up to 2 decimal places. 示例:0.72。
  input.audio_weightnumberNoRelative weight of audio elements. Optional. Range 0–1, up to 2 decimal places. 示例:0.65。
  input.upload_urlstringYesURL of the uploaded audio file. Required. Source audio (upload_url) is enough to generate once title, negative_tags, and style are provided. 示例:https://example.com/music.mp3。
  input.lyricsstringNoLyrics for the generated audio. Optional.
- Takes priority over prompt as lyrics. If omitted, prompt is used as lyrics when provided.
- V6, V6_MINI, and V6_WILD: Maximum 5000 characters.
- Not required. Source audio (upload_url) is enough to generate once title, negative_tags, and style are provided. 示例:[Verse]\nKeep the melody flowing\nInto a gentle bridge\n[Chorus]\nLet the piano rise and fall。
  input.varietyintegerNoControls the diversity and stylistic variation of generated results. Optional. Integer range 0–4, default 1.
- 0: off (exact style) — fully off, strictly the same style
- 1: normal (balanced variety) — default, balances stability and diversity
- 2: high (distinct styles) — produces results with clearly different styles
- 3: extra (bold exploration) — higher variation, encourages bold exploration of different styles
- 4: max (unreasonably varied) — maximum diversity; results may differ in style very significantly Default:1。 示例:1。

Request Example ​

bash
curl -X POST "https://ai.modelfold.online/v1/jobs/createTask" \
  -H "Authorization: Bearer $MODELFOLD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "ai-music-api/add-vocals",
  "callBackUrl": "https://example.com/callback",
  "input": {
    "prompt": "A calm and relaxing piano track.",
    "title": "Relaxing Piano",
    "negative_tags": "heavy metal, strong drum beats",
    "style": "Jazz",
    "upload_url": "https://example.com/music.mp3",
    "model": "V6",
    "vocal_gender": "m",
    "style_weight": 0.61,
    "weirdness_constraint": 0.72,
    "audio_weight": 0.65,
    "lyrics": "[Verse]\nKeep the melody flowing\nInto a gentle bridge\n[Chorus]\nLet the piano rise and fall",
    "variety": 1
  }
}'
json
{
  "model": "ai-music-api/add-vocals",
  "callBackUrl": "https://example.com/callback",
  "input": {
    "prompt": "A calm and relaxing piano track.",
    "title": "Relaxing Piano",
    "negative_tags": "heavy metal, strong drum beats",
    "style": "Jazz",
    "upload_url": "https://example.com/music.mp3",
    "model": "V6",
    "vocal_gender": "m",
    "style_weight": 0.61,
    "weirdness_constraint": 0.72,
    "audio_weight": 0.65,
    "lyrics": "[Verse]\nKeep the melody flowing\nInto a gentle bridge\n[Chorus]\nLet the piano rise and fall",
    "variety": 1
  }
}

Response ​

200 — Request successful ​

参数类型必填说明
codeinteger否Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). 可选值:200 / 401 / 402 / 404 / 409 / 422 / 429 / 451 / 455 / 500。 示例:200。
msgstring否Error message when code != 200 示例:success。
dataobject否—
  data.taskIdstring否Task ID for tracking task status. Poll GET /api/v1/jobs/recordInfo?taskId=... (see Get Task Details). For Suno audio tasks the tracks are in data.response.data[] (audio_url, stream_audio_url, image_url, id, duration). 示例:5c79****be8e。
json
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "5c79****be8e"
  }
}

Callback ​

audioGenerated ​

Callback URL: {request.body#/callBackUrl} (the callBackUrl in the request body).

When vocal generation is completed, the system will call this callback to notify the results.

Callback Example ​

json
{
  "code": 200,
  "msg": "All generated successfully.",
  "data": {
    "callbackType": "complete",
    "task_id": "2fac****9f72",
    "data": [
      {
        "id": "e231****-****-****-****-****8cadc7dc",
        "audio_url": "https://example.cn/****.mp3",
        "stream_audio_url": "https://example.cn/****",
        "image_url": "https://example.cn/****.jpeg",
        "prompt": "[Verse] Night city lights shining bright",
        "model_name": "chirp-v4-5",
        "title": "Iron Man",
        "tags": "electrifying, rock",
        "createTime": "2025-01-01 00:00:00",
        "duration": 198.44
      }
    ]
  }
}

Callback body parameters

参数类型必填说明
codeinteger否Status code 示例:200。
msgstring否Return message 示例:All generated successfully。
dataobject否—
  data.callbackTypestring否Callback type: text (text generation completed), first (first track completed), complete (all completed) Allowed values:text / first / complete。 示例:text。
  data.task_idstring否Task ID
  data.dataarray&lt;object&gt;否—
    data.data[].idstring否Audio unique identifier (audioId)
    data.data[].audio_urlstring否Audio file URL
    data.data[].stream_audio_urlstring否Streaming audio URL
    data.data[].image_urlstring否Cover image URL
    data.data[].promptstring否Generation prompt/lyrics
    data.data[].model_namestring否Model name used
    data.data[].titlestring否Music title
    data.data[].tagsstring否Music tags
    data.data[].createTimestring否Creation time
    data.data[].durationnumber否Audio duration (seconds)
json
{
  "code": 200,
  "msg": "All generated successfully",
  "data": {
    "callbackType": "text",
    "task_id": "",
    "data": [
      {
        "id": "",
        "audio_url": "https://your-domain.com/input.png",
        "stream_audio_url": "https://your-domain.com/input.png",
        "image_url": "https://your-domain.com/input.png",
        "prompt": "A serene mountain landscape at sunrise",
        "model_name": "model-name",
        "title": "",
        "tags": "",
        "createTime": "",
        "duration": 0
      }
    ]
  }
}

ModelFold — one API for all the best AI models.