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_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"
  ]
}
'
{
  "taskId": "15c257ff-43f7-4678-bd41-202ad6b8488b"
}

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
Example:

"create"

model
enum<string>
required

Model version.

Available options:
chirp-v35,
chirp-v40,
chirp-v45,
chirp-45+,
chirp-v45-lite,
chirp-v50
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, add_instrumental, add_vocals, 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_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"
]

Response

201 - application/json
taskId
string
required

task id. Use this id to query task status.

Example:

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