Skip to main content
POST
/
suno
/
v2
/
generate
cURL
curl --request POST \
  --url https://api.mountsea.ai/suno/v2/generate \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "task": "create",
  "model": "chirp-v50",
  "make_instrumental": false,
  "prompt": "[Verse]\nHello world, here I come...\n\n[Chorus]\nLa la la...",
  "continued_aligned_prompt": "[Verse 1]\nOriginal lyrics...\n\n[Chorus]\nNew replaced lyrics...\n\n[Verse 2]\nMore lyrics...",
  "infill_lyrics": "[Bridge]\nThis is the new bridge section\nWith updated lyrics...",
  "gpt_description_prompt": "A happy pop song about summer vacation",
  "tags": "Pop, Happy, Upbeat",
  "negative_tags": "Sad, Slow",
  "title": "Summer Vibes",
  "clip_id": "clip_abc123",
  "continue_at": 30,
  "range": {
    "start_s": 15.36,
    "end_s": 53.8
  },
  "infill_type": "smart",
  "infill_context_range": {
    "start_s": 0,
    "end_s": 69.16
  },
  "persona": {
    "persona_id": "persona_xyz789",
    "artist_clip_id": "clip_abc123",
    "persona_style": "vox"
  },
  "controls": {
    "style_weight": 0.6,
    "audio_weight": 0.4,
    "weirdness_constraint": 0.2
  },
  "vocal_gender": "m",
  "audio_url": "https://example.com/audio.mp3",
  "mashup_clip_ids": [
    "clip_abc123",
    "clip_def456"
  ],
  "playlist_clip_ids": [
    "1df1d908-842d-41a2-bce4-c798a551cd2d",
    "93d2bfe9-c6d4-42cd-88fc-ee508d4fa6ed"
  ],
  "sound": {
    "description": "深沉的低音和温暖的模拟质感",
    "type": "one_shot",
    "key": "F#",
    "bpm": 2
  }
}
'
{
  "taskId": "15c257ff-43f7-4678-bd41-202ad6b8488b"
}
The /generate endpoint supports 15 different task types, each requiring a different set of parameters. Before calling this endpoint, we strongly recommend using the Generate Schema endpoint to get the exact required/optional fields and a complete request example for your task type.

Quick Start

1

Check required parameters

Call GET /suno/v2/generate/schema?task=create to get the parameter schema and a request example for the create task.See Generate Schema →
2

Send generate request

Call POST /suno/v2/generate with the correct parameters for your task type.
3

Poll task status

Use the returned taskId to poll Get Task Status until status is success.

Task Types Overview

TaskDescriptionKey Required Fields
createCreate new music from scratchmodel
extendExtend existing musicclip_id, model
upload_extendExtend uploaded audioaudio_url, model
upload_coverCover uploaded audioaudio_url, model
coverCreate cover of existing clipclip_id, model
use_styles_lyricsUse styles from clip with new lyricsclip_id, model
replace_sectionReplace a section of existing audioclip_id, range, infill_context_range, continued_aligned_prompt, model
add_instrumentalAdd instrumental to a rangeclip_id, range, model
add_vocalsAdd vocals to a rangeclip_id, range, model
gen_stem_twoGenerate two-track stems (vocals + instrumental)clip_id, model
gen_stem_allGenerate all stemsclip_id, model
mashupMashup two songsmashup_clip_ids, model
sampleSample from existing clipclip_id, range, model
inspirationGenerate from inspiration playlistplaylist_clip_ids, model
soundGenerate sound effectssound, model
All tasks require the task and model fields. Use GET /suno/v2/generate/schema?task=xxx to get the full parameter details for any specific task type.

Common Parameters

These parameters are shared across most task types:
ParameterTypeDescription
taskstringRequired. The task type (see table above)
modelstringRequired. Model version: chirp-v55, chirp-v50, chirp-45+, chirp-v45, chirp-v45-lite, chirp-v40, chirp-v35
promptstringLyrics or prompt text
tagsstring | string[]Style tags (e.g., "Pop, Happy, Upbeat")
negative_tagsstring | string[]Styles to exclude
titlestringSong title
make_instrumentalbooleanGenerate without vocals (default: false)
vocal_genderstring"m" (male) or "f" (female)
controlsobjectAdvanced control: style_weight, audio_weight, weirdness_constraint (0~1)
personaobjectVocal persona for style mimicking

Examples

curl -X POST https://api.mountsea.ai/suno/v2/generate \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "task": "create",
    "model": "chirp-v55",
    "prompt": "[Verse]\nHello world, here I come...\n\n[Chorus]\nLa la la...",
    "tags": "Pop, Happy, Upbeat",
    "title": "Summer Vibes"
  }'
Not sure which parameters to pass? Call GET /suno/v2/generate/schema?task=your_task — it returns the required fields, optional fields, not-allowed fields, and a complete request example for each task type.Try Generate Schema →

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
task
enum<string>
required

Task type. Use GET /generate/schema?task=xxx to query required fields for each task.

Available options:
create,
extend,
upload_extend,
upload_cover,
cover,
use_styles_lyrics,
replace_section,
add_instrumental,
add_vocals,
gen_stem_two,
gen_stem_all,
mashup,
sample,
inspiration,
sound
Example:

"create"

model
string
required

Model version. Supports standard models (e.g. chirp-v50) and custom models (chirp-custom:).

Example:

"chirp-v50"

make_instrumental
boolean
default:false

Whether to make instrumental (no vocals). [Optional: all tasks]

Example:

false

prompt
string

Lyrics or prompt text. [Optional: all tasks] For replace_section: lyrics within infill_context_range (modified if replacement changes lyrics).

Example:

"[Verse]\nHello world, here I come...\n\n[Chorus]\nLa la la..."

continued_aligned_prompt
string

Full song lyrics after replacement. [Required: replace_section] Contains the complete lyrics of the entire song with the replaced section updated.

Example:

"[Verse 1]\nOriginal lyrics...\n\n[Chorus]\nNew replaced lyrics...\n\n[Verse 2]\nMore lyrics..."

infill_lyrics
string

Lyrics for the replaced section only. [Optional: replace_section] The specific lyrics within the range being replaced.

Example:

"[Bridge]\nThis is the new bridge section\nWith updated lyrics..."

gpt_description_prompt
string

Short description for GPT lyrics generation. [Optional: create, mashup, etc.]

Example:

"A happy pop song about summer vacation"

tags

Style tags. Supports string or array. [Optional: all tasks]

Example:

"Pop, Happy, Upbeat"

negative_tags

Negative style tags to exclude. [Optional: all tasks]

Example:

"Sad, Slow"

title
string

Song title. [Optional: all tasks]

Example:

"Summer Vibes"

clip_id
string

Source clip ID. [Required: extend, cover, use_styles_lyrics, replace_section, add_instrumental, add_vocals, gen_stem_*, sample]

Example:

"clip_abc123"

continue_at
number

Continue position in seconds. [Optional: extend, upload_extend]

Required range: x >= 0
Example:

30

range
object

Target range { start_s, end_s }. [Required: replace_section, sample] For replace_section: the section to replace (duration should be > 6 seconds). For sample: the time range to sample from source clip.

Example:
{ "start_s": 15.36, "end_s": 53.8 }
infill_type
enum<string>

Infill mode for replace_section. [Optional: replace_section] "smart" = auto-select based on duration (default), "classic" = always use infill (better for long selections), "fixed" = always use fixed_infill (better for short selections).

Available options:
smart,
classic,
fixed
Example:

"smart"

infill_context_range
object

Infill context range (must encompass range). [Required: replace_section] Should extend ~30s before range.start_s and ~30s after range.end_s. If range starts within first 30s, use 0 for start_s. If range ends within last 30s of song, use song duration for end_s.

Example:
{ "start_s": 0, "end_s": 69.16 }
persona
object

Artist persona config for style mimicking. [Optional: create, cover, extend]

Example:
{
"persona_id": "persona_xyz789",
"artist_clip_id": "clip_abc123",
"persona_style": "vox"
}
controls
object

Advanced control sliders (0~1). [Optional: all tasks]

Example:
{
"style_weight": 0.6,
"audio_weight": 0.4,
"weirdness_constraint": 0.2
}
vocal_gender
enum<string>

Vocal gender (m=male, f=female). [Optional: all tasks]

Available options:
m,
f
Example:

"m"

audio_url
string<uri>

Audio URL for upload tasks. [Required: upload_extend, upload_cover]

Example:

"https://example.com/audio.mp3"

mashup_clip_ids
string[]

Two clip IDs for mashup [clip_a, clip_b]. [Required: mashup]

Example:
["clip_abc123", "clip_def456"]
playlist_clip_ids
string[]

Clip IDs for inspiration generation (max 4). Must be clips from the same account. [Required: inspiration]

Maximum array length: 4
Example:
[
"1df1d908-842d-41a2-bce4-c798a551cd2d",
"93d2bfe9-c6d4-42cd-88fc-ee508d4fa6ed"
]
sound
object

Sound generation config. [Required: sound] description is the core sound prompt (also auto-used as title). type/key/bpm are optional advanced options. Tags are auto-assembled; user-provided tags are ignored for sound task.

Example:
{
"description": "深沉的低音和温暖的模拟质感",
"type": "one_shot",
"key": "F#",
"bpm": 2
}

Response

201 - application/json
taskId
string
required

task id. Use this id to query task status.

Example:

"15c257ff-43f7-4678-bd41-202ad6b8488b"