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-v6",
"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.29,
"weirdness_constraint": 0.37,
"aug_creativity": 2,
"duration": 110
},
"vocal_gender": "m",
"audio_url": "https://example.com/audio.mp3",
"mashup_clip_ids": [
"clip_abc123",
"clip_def456"
],
"playlist_id": "119573ff-8e48-4fe6-9029-39c76c9a5597",
"sound": {
"description": "深沉的低音和温暖的模拟质感",
"type": "one_shot",
"key": "F#",
"bpm": 2
},
"stem_control_tags": "add ",
"max_mode": false,
"use_personalization": false
}
'import requests
url = "https://api.mountsea.ai/suno/v2/generate"
payload = {
"task": "create",
"model": "chirp-v6",
"make_instrumental": False,
"prompt": "[Verse]
Hello world, here I come...
[Chorus]
La la la...",
"continued_aligned_prompt": "[Verse 1]
Original lyrics...
[Chorus]
New replaced lyrics...
[Verse 2]
More lyrics...",
"infill_lyrics": "[Bridge]
This is the new bridge section
With 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.29,
"weirdness_constraint": 0.37,
"aug_creativity": 2,
"duration": 110
},
"vocal_gender": "m",
"audio_url": "https://example.com/audio.mp3",
"mashup_clip_ids": ["clip_abc123", "clip_def456"],
"playlist_id": "119573ff-8e48-4fe6-9029-39c76c9a5597",
"sound": {
"description": "深沉的低音和温暖的模拟质感",
"type": "one_shot",
"key": "F#",
"bpm": 2
},
"stem_control_tags": "add ",
"max_mode": False,
"use_personalization": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
task: 'create',
model: 'chirp-v6',
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.29,
weirdness_constraint: 0.37,
aug_creativity: 2,
duration: 110
},
vocal_gender: 'm',
audio_url: 'https://example.com/audio.mp3',
mashup_clip_ids: ['clip_abc123', 'clip_def456'],
playlist_id: '119573ff-8e48-4fe6-9029-39c76c9a5597',
sound: {description: '深沉的低音和温暖的模拟质感', type: 'one_shot', key: 'F#', bpm: 2},
stem_control_tags: 'add ',
max_mode: false,
use_personalization: false
})
};
fetch('https://api.mountsea.ai/suno/v2/generate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mountsea.ai/suno/v2/generate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'task' => 'create',
'model' => 'chirp-v6',
'make_instrumental' => false,
'prompt' => '[Verse]
Hello world, here I come...
[Chorus]
La la la...',
'continued_aligned_prompt' => '[Verse 1]
Original lyrics...
[Chorus]
New replaced lyrics...
[Verse 2]
More lyrics...',
'infill_lyrics' => '[Bridge]
This is the new bridge section
With 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.29,
'weirdness_constraint' => 0.37,
'aug_creativity' => 2,
'duration' => 110
],
'vocal_gender' => 'm',
'audio_url' => 'https://example.com/audio.mp3',
'mashup_clip_ids' => [
'clip_abc123',
'clip_def456'
],
'playlist_id' => '119573ff-8e48-4fe6-9029-39c76c9a5597',
'sound' => [
'description' => '深沉的低音和温暖的模拟质感',
'type' => 'one_shot',
'key' => 'F#',
'bpm' => 2
],
'stem_control_tags' => 'add ',
'max_mode' => false,
'use_personalization' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mountsea.ai/suno/v2/generate"
payload := strings.NewReader("{\n \"task\": \"create\",\n \"model\": \"chirp-v6\",\n \"make_instrumental\": false,\n \"prompt\": \"[Verse]\\nHello world, here I come...\\n\\n[Chorus]\\nLa la la...\",\n \"continued_aligned_prompt\": \"[Verse 1]\\nOriginal lyrics...\\n\\n[Chorus]\\nNew replaced lyrics...\\n\\n[Verse 2]\\nMore lyrics...\",\n \"infill_lyrics\": \"[Bridge]\\nThis is the new bridge section\\nWith updated lyrics...\",\n \"gpt_description_prompt\": \"A happy pop song about summer vacation\",\n \"tags\": \"Pop, Happy, Upbeat\",\n \"negative_tags\": \"Sad, Slow\",\n \"title\": \"Summer Vibes\",\n \"clip_id\": \"clip_abc123\",\n \"continue_at\": 30,\n \"range\": {\n \"start_s\": 15.36,\n \"end_s\": 53.8\n },\n \"infill_type\": \"smart\",\n \"infill_context_range\": {\n \"start_s\": 0,\n \"end_s\": 69.16\n },\n \"persona\": {\n \"persona_id\": \"persona_xyz789\",\n \"artist_clip_id\": \"clip_abc123\",\n \"persona_style\": \"vox\"\n },\n \"controls\": {\n \"style_weight\": 0.29,\n \"weirdness_constraint\": 0.37,\n \"aug_creativity\": 2,\n \"duration\": 110\n },\n \"vocal_gender\": \"m\",\n \"audio_url\": \"https://example.com/audio.mp3\",\n \"mashup_clip_ids\": [\n \"clip_abc123\",\n \"clip_def456\"\n ],\n \"playlist_id\": \"119573ff-8e48-4fe6-9029-39c76c9a5597\",\n \"sound\": {\n \"description\": \"深沉的低音和温暖的模拟质感\",\n \"type\": \"one_shot\",\n \"key\": \"F#\",\n \"bpm\": 2\n },\n \"stem_control_tags\": \"add \",\n \"max_mode\": false,\n \"use_personalization\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mountsea.ai/suno/v2/generate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"task\": \"create\",\n \"model\": \"chirp-v6\",\n \"make_instrumental\": false,\n \"prompt\": \"[Verse]\\nHello world, here I come...\\n\\n[Chorus]\\nLa la la...\",\n \"continued_aligned_prompt\": \"[Verse 1]\\nOriginal lyrics...\\n\\n[Chorus]\\nNew replaced lyrics...\\n\\n[Verse 2]\\nMore lyrics...\",\n \"infill_lyrics\": \"[Bridge]\\nThis is the new bridge section\\nWith updated lyrics...\",\n \"gpt_description_prompt\": \"A happy pop song about summer vacation\",\n \"tags\": \"Pop, Happy, Upbeat\",\n \"negative_tags\": \"Sad, Slow\",\n \"title\": \"Summer Vibes\",\n \"clip_id\": \"clip_abc123\",\n \"continue_at\": 30,\n \"range\": {\n \"start_s\": 15.36,\n \"end_s\": 53.8\n },\n \"infill_type\": \"smart\",\n \"infill_context_range\": {\n \"start_s\": 0,\n \"end_s\": 69.16\n },\n \"persona\": {\n \"persona_id\": \"persona_xyz789\",\n \"artist_clip_id\": \"clip_abc123\",\n \"persona_style\": \"vox\"\n },\n \"controls\": {\n \"style_weight\": 0.29,\n \"weirdness_constraint\": 0.37,\n \"aug_creativity\": 2,\n \"duration\": 110\n },\n \"vocal_gender\": \"m\",\n \"audio_url\": \"https://example.com/audio.mp3\",\n \"mashup_clip_ids\": [\n \"clip_abc123\",\n \"clip_def456\"\n ],\n \"playlist_id\": \"119573ff-8e48-4fe6-9029-39c76c9a5597\",\n \"sound\": {\n \"description\": \"深沉的低音和温暖的模拟质感\",\n \"type\": \"one_shot\",\n \"key\": \"F#\",\n \"bpm\": 2\n },\n \"stem_control_tags\": \"add \",\n \"max_mode\": false,\n \"use_personalization\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mountsea.ai/suno/v2/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"task\": \"create\",\n \"model\": \"chirp-v6\",\n \"make_instrumental\": false,\n \"prompt\": \"[Verse]\\nHello world, here I come...\\n\\n[Chorus]\\nLa la la...\",\n \"continued_aligned_prompt\": \"[Verse 1]\\nOriginal lyrics...\\n\\n[Chorus]\\nNew replaced lyrics...\\n\\n[Verse 2]\\nMore lyrics...\",\n \"infill_lyrics\": \"[Bridge]\\nThis is the new bridge section\\nWith updated lyrics...\",\n \"gpt_description_prompt\": \"A happy pop song about summer vacation\",\n \"tags\": \"Pop, Happy, Upbeat\",\n \"negative_tags\": \"Sad, Slow\",\n \"title\": \"Summer Vibes\",\n \"clip_id\": \"clip_abc123\",\n \"continue_at\": 30,\n \"range\": {\n \"start_s\": 15.36,\n \"end_s\": 53.8\n },\n \"infill_type\": \"smart\",\n \"infill_context_range\": {\n \"start_s\": 0,\n \"end_s\": 69.16\n },\n \"persona\": {\n \"persona_id\": \"persona_xyz789\",\n \"artist_clip_id\": \"clip_abc123\",\n \"persona_style\": \"vox\"\n },\n \"controls\": {\n \"style_weight\": 0.29,\n \"weirdness_constraint\": 0.37,\n \"aug_creativity\": 2,\n \"duration\": 110\n },\n \"vocal_gender\": \"m\",\n \"audio_url\": \"https://example.com/audio.mp3\",\n \"mashup_clip_ids\": [\n \"clip_abc123\",\n \"clip_def456\"\n ],\n \"playlist_id\": \"119573ff-8e48-4fe6-9029-39c76c9a5597\",\n \"sound\": {\n \"description\": \"深沉的低音和温暖的模拟质感\",\n \"type\": \"one_shot\",\n \"key\": \"F#\",\n \"bpm\": 2\n },\n \"stem_control_tags\": \"add \",\n \"max_mode\": false,\n \"use_personalization\": false\n}"
response = http.request(request)
puts response.read_body{
"taskId": "15c257ff-43f7-4678-bd41-202ad6b8488b"
}Generate Music
Generate, extend, cover, mashup and more — the unified music generation endpoint
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-v6",
"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.29,
"weirdness_constraint": 0.37,
"aug_creativity": 2,
"duration": 110
},
"vocal_gender": "m",
"audio_url": "https://example.com/audio.mp3",
"mashup_clip_ids": [
"clip_abc123",
"clip_def456"
],
"playlist_id": "119573ff-8e48-4fe6-9029-39c76c9a5597",
"sound": {
"description": "深沉的低音和温暖的模拟质感",
"type": "one_shot",
"key": "F#",
"bpm": 2
},
"stem_control_tags": "add ",
"max_mode": false,
"use_personalization": false
}
'import requests
url = "https://api.mountsea.ai/suno/v2/generate"
payload = {
"task": "create",
"model": "chirp-v6",
"make_instrumental": False,
"prompt": "[Verse]
Hello world, here I come...
[Chorus]
La la la...",
"continued_aligned_prompt": "[Verse 1]
Original lyrics...
[Chorus]
New replaced lyrics...
[Verse 2]
More lyrics...",
"infill_lyrics": "[Bridge]
This is the new bridge section
With 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.29,
"weirdness_constraint": 0.37,
"aug_creativity": 2,
"duration": 110
},
"vocal_gender": "m",
"audio_url": "https://example.com/audio.mp3",
"mashup_clip_ids": ["clip_abc123", "clip_def456"],
"playlist_id": "119573ff-8e48-4fe6-9029-39c76c9a5597",
"sound": {
"description": "深沉的低音和温暖的模拟质感",
"type": "one_shot",
"key": "F#",
"bpm": 2
},
"stem_control_tags": "add ",
"max_mode": False,
"use_personalization": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
task: 'create',
model: 'chirp-v6',
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.29,
weirdness_constraint: 0.37,
aug_creativity: 2,
duration: 110
},
vocal_gender: 'm',
audio_url: 'https://example.com/audio.mp3',
mashup_clip_ids: ['clip_abc123', 'clip_def456'],
playlist_id: '119573ff-8e48-4fe6-9029-39c76c9a5597',
sound: {description: '深沉的低音和温暖的模拟质感', type: 'one_shot', key: 'F#', bpm: 2},
stem_control_tags: 'add ',
max_mode: false,
use_personalization: false
})
};
fetch('https://api.mountsea.ai/suno/v2/generate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mountsea.ai/suno/v2/generate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'task' => 'create',
'model' => 'chirp-v6',
'make_instrumental' => false,
'prompt' => '[Verse]
Hello world, here I come...
[Chorus]
La la la...',
'continued_aligned_prompt' => '[Verse 1]
Original lyrics...
[Chorus]
New replaced lyrics...
[Verse 2]
More lyrics...',
'infill_lyrics' => '[Bridge]
This is the new bridge section
With 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.29,
'weirdness_constraint' => 0.37,
'aug_creativity' => 2,
'duration' => 110
],
'vocal_gender' => 'm',
'audio_url' => 'https://example.com/audio.mp3',
'mashup_clip_ids' => [
'clip_abc123',
'clip_def456'
],
'playlist_id' => '119573ff-8e48-4fe6-9029-39c76c9a5597',
'sound' => [
'description' => '深沉的低音和温暖的模拟质感',
'type' => 'one_shot',
'key' => 'F#',
'bpm' => 2
],
'stem_control_tags' => 'add ',
'max_mode' => false,
'use_personalization' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mountsea.ai/suno/v2/generate"
payload := strings.NewReader("{\n \"task\": \"create\",\n \"model\": \"chirp-v6\",\n \"make_instrumental\": false,\n \"prompt\": \"[Verse]\\nHello world, here I come...\\n\\n[Chorus]\\nLa la la...\",\n \"continued_aligned_prompt\": \"[Verse 1]\\nOriginal lyrics...\\n\\n[Chorus]\\nNew replaced lyrics...\\n\\n[Verse 2]\\nMore lyrics...\",\n \"infill_lyrics\": \"[Bridge]\\nThis is the new bridge section\\nWith updated lyrics...\",\n \"gpt_description_prompt\": \"A happy pop song about summer vacation\",\n \"tags\": \"Pop, Happy, Upbeat\",\n \"negative_tags\": \"Sad, Slow\",\n \"title\": \"Summer Vibes\",\n \"clip_id\": \"clip_abc123\",\n \"continue_at\": 30,\n \"range\": {\n \"start_s\": 15.36,\n \"end_s\": 53.8\n },\n \"infill_type\": \"smart\",\n \"infill_context_range\": {\n \"start_s\": 0,\n \"end_s\": 69.16\n },\n \"persona\": {\n \"persona_id\": \"persona_xyz789\",\n \"artist_clip_id\": \"clip_abc123\",\n \"persona_style\": \"vox\"\n },\n \"controls\": {\n \"style_weight\": 0.29,\n \"weirdness_constraint\": 0.37,\n \"aug_creativity\": 2,\n \"duration\": 110\n },\n \"vocal_gender\": \"m\",\n \"audio_url\": \"https://example.com/audio.mp3\",\n \"mashup_clip_ids\": [\n \"clip_abc123\",\n \"clip_def456\"\n ],\n \"playlist_id\": \"119573ff-8e48-4fe6-9029-39c76c9a5597\",\n \"sound\": {\n \"description\": \"深沉的低音和温暖的模拟质感\",\n \"type\": \"one_shot\",\n \"key\": \"F#\",\n \"bpm\": 2\n },\n \"stem_control_tags\": \"add \",\n \"max_mode\": false,\n \"use_personalization\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mountsea.ai/suno/v2/generate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"task\": \"create\",\n \"model\": \"chirp-v6\",\n \"make_instrumental\": false,\n \"prompt\": \"[Verse]\\nHello world, here I come...\\n\\n[Chorus]\\nLa la la...\",\n \"continued_aligned_prompt\": \"[Verse 1]\\nOriginal lyrics...\\n\\n[Chorus]\\nNew replaced lyrics...\\n\\n[Verse 2]\\nMore lyrics...\",\n \"infill_lyrics\": \"[Bridge]\\nThis is the new bridge section\\nWith updated lyrics...\",\n \"gpt_description_prompt\": \"A happy pop song about summer vacation\",\n \"tags\": \"Pop, Happy, Upbeat\",\n \"negative_tags\": \"Sad, Slow\",\n \"title\": \"Summer Vibes\",\n \"clip_id\": \"clip_abc123\",\n \"continue_at\": 30,\n \"range\": {\n \"start_s\": 15.36,\n \"end_s\": 53.8\n },\n \"infill_type\": \"smart\",\n \"infill_context_range\": {\n \"start_s\": 0,\n \"end_s\": 69.16\n },\n \"persona\": {\n \"persona_id\": \"persona_xyz789\",\n \"artist_clip_id\": \"clip_abc123\",\n \"persona_style\": \"vox\"\n },\n \"controls\": {\n \"style_weight\": 0.29,\n \"weirdness_constraint\": 0.37,\n \"aug_creativity\": 2,\n \"duration\": 110\n },\n \"vocal_gender\": \"m\",\n \"audio_url\": \"https://example.com/audio.mp3\",\n \"mashup_clip_ids\": [\n \"clip_abc123\",\n \"clip_def456\"\n ],\n \"playlist_id\": \"119573ff-8e48-4fe6-9029-39c76c9a5597\",\n \"sound\": {\n \"description\": \"深沉的低音和温暖的模拟质感\",\n \"type\": \"one_shot\",\n \"key\": \"F#\",\n \"bpm\": 2\n },\n \"stem_control_tags\": \"add \",\n \"max_mode\": false,\n \"use_personalization\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mountsea.ai/suno/v2/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"task\": \"create\",\n \"model\": \"chirp-v6\",\n \"make_instrumental\": false,\n \"prompt\": \"[Verse]\\nHello world, here I come...\\n\\n[Chorus]\\nLa la la...\",\n \"continued_aligned_prompt\": \"[Verse 1]\\nOriginal lyrics...\\n\\n[Chorus]\\nNew replaced lyrics...\\n\\n[Verse 2]\\nMore lyrics...\",\n \"infill_lyrics\": \"[Bridge]\\nThis is the new bridge section\\nWith updated lyrics...\",\n \"gpt_description_prompt\": \"A happy pop song about summer vacation\",\n \"tags\": \"Pop, Happy, Upbeat\",\n \"negative_tags\": \"Sad, Slow\",\n \"title\": \"Summer Vibes\",\n \"clip_id\": \"clip_abc123\",\n \"continue_at\": 30,\n \"range\": {\n \"start_s\": 15.36,\n \"end_s\": 53.8\n },\n \"infill_type\": \"smart\",\n \"infill_context_range\": {\n \"start_s\": 0,\n \"end_s\": 69.16\n },\n \"persona\": {\n \"persona_id\": \"persona_xyz789\",\n \"artist_clip_id\": \"clip_abc123\",\n \"persona_style\": \"vox\"\n },\n \"controls\": {\n \"style_weight\": 0.29,\n \"weirdness_constraint\": 0.37,\n \"aug_creativity\": 2,\n \"duration\": 110\n },\n \"vocal_gender\": \"m\",\n \"audio_url\": \"https://example.com/audio.mp3\",\n \"mashup_clip_ids\": [\n \"clip_abc123\",\n \"clip_def456\"\n ],\n \"playlist_id\": \"119573ff-8e48-4fe6-9029-39c76c9a5597\",\n \"sound\": {\n \"description\": \"深沉的低音和温暖的模拟质感\",\n \"type\": \"one_shot\",\n \"key\": \"F#\",\n \"bpm\": 2\n },\n \"stem_control_tags\": \"add \",\n \"max_mode\": false,\n \"use_personalization\": false\n}"
response = http.request(request)
puts response.read_body{
"taskId": "15c257ff-43f7-4678-bd41-202ad6b8488b"
}/generate endpoint supports 16 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
Check required parameters
GET /suno/v2/generate/schema?task=create to get the parameter schema and a request example for the create task.See Generate Schema →Send generate request
POST /suno/v2/generate with the correct parameters for your task type.Poll task status
taskId to poll Get Task Status until status is success.Task Types Overview
| Task | Description | Key Required Fields |
|---|---|---|
create | Create new music from scratch | model |
extend | Extend existing music | clip_id, model |
upload_extend | Extend uploaded audio | audio_url, model |
upload_cover | Cover uploaded audio | audio_url, model |
cover | Create cover of existing clip | clip_id, model |
use_styles_lyrics | Use styles from clip with new lyrics | clip_id, model |
replace_section | Replace a section of existing audio | clip_id, range, infill_context_range, continued_aligned_prompt, model |
add_instrumental | Add instrumental to a range | clip_id, range, model |
add_vocals | Add vocals to a range | clip_id, range, model |
gen_stem_two | Generate two-track stems (vocals + instrumental) | clip_id, model |
gen_stem_all | Generate all stems | clip_id, model |
add_stems | Add stems onto a clip | clip_id, model — optional stem_control_tags (default "add ") |
mashup | Mashup two songs | mashup_clip_ids, model |
sample | Sample from existing clip | clip_id, range, model |
inspiration | Generate from a real playlist | playlist_id, model — see Inspiration Guide |
sound | Generate sound effects | sound, model |
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:| Parameter | Type | Description |
|---|---|---|
task | string | Required. The task type (see table above) |
model | string | Required. New: chirp-v6 (v6 Pro), chirp-v6-mini, chirp-v6-wild. Legacy names (chirp-v55 and older) are still accepted and always auto-converted to v6 Pro. Custom: chirp-custom:<uuid> |
prompt | string | Lyrics or prompt text |
tags | string | string[] | Style tags (e.g., "Pop, Happy, Upbeat") |
negative_tags | string | string[] | Official Exclude styles |
title | string | Song title |
make_instrumental | boolean | Generate without vocals (default: false) |
vocal_gender | string | Official Vocal Gender: "m" / "f". Omit = no preference |
max_mode | boolean | Official Max Mode. true = 2× billing. Omit / false = current price. true on gen_stem_* / sound returns HTTP 400 |
use_personalization | boolean | Official Personalize / My Taste. Effect not guaranteed. Omit / false |
controls | object | Official More Options sliders — see below |
persona | object | Vocal persona — see Persona overview |
stem_control_tags | string | add_stems only. Optional; default "add " |
persona object
| Field | Type | Description |
|---|---|---|
persona_id | string | Required. ID from Clip Persona, Clone Voice, or Init+Complete |
artist_clip_id | string | Required. Style-reference clip |
persona_style | string | Only "vox" on chirp-v50+ |
is_voice | boolean | true for Voice Persona (Clone Voice or Init+Complete). Clip Persona stays false |
controls object
| Field | Type | Official UI | Description |
|---|---|---|---|
style_weight | number | Style Influence | 0~1 |
weirdness_constraint | number | Weirdness | 0~1; higher = more experimental |
aug_creativity | number | Variety | Integer 0~4. 2 = Normal, 4 = max. Omit = official default |
audio_weight | number | (cover / extend) | Original-audio influence 0~1 |
duration | number | Duration Custom | Seconds 10~360. Auto = omit. chirp-v55 / chirp-v6+; older / chirp-custom:* ignore |
{
"task": "create",
"model": "chirp-v6",
"prompt": "[Verse]\nHello world...",
"tags": "Pop, Happy",
"negative_tags": "Sad, Slow",
"vocal_gender": "f",
"max_mode": false,
"controls": {
"style_weight": 0.29,
"weirdness_constraint": 0.37,
"aug_creativity": 2,
"duration": 110
}
}
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-v6",
"prompt": "[Verse]\nHello world, here I come...\n\n[Chorus]\nLa la la...",
"tags": "Pop, Happy, Upbeat",
"title": "Summer Vibes"
}'
curl -X POST https://api.mountsea.ai/suno/v2/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"task": "extend",
"model": "chirp-v6",
"clip_id": "clip_abc123",
"continue_at": 30,
"tags": "Pop, Happy"
}'
curl -X POST https://api.mountsea.ai/suno/v2/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"task": "add_stems",
"model": "chirp-v6",
"clip_id": "clip_abc123",
"stem_control_tags": "add "
}'
curl -X POST https://api.mountsea.ai/suno/v2/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key" \
-d '{
"task": "sound",
"model": "chirp-v6",
"sound": {
"description": "A deep bass drop with warm analog texture",
"type": "one_shot",
"key": "F#",
"bpm": 120
}
}'
task=inspiration requires a real playlist_id from Create Playlist. The legacy pattern playlist_id: "inspiration" with playlist_clip_ids is deprecated. See the Inspiration workflow.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
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Task type. Use GET /generate/schema?task=xxx to query required fields for each task.
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, add_stems "create"
Model version. New: chirp-v6 (v6 Pro), chirp-v6-mini, chirp-v6-wild. Legacy names (chirp-v55 / chirp-v50 / chirp-v45 / chirp-45+ / chirp-v45-lite / chirp-v40 / chirp-v35) are still accepted and always auto-converted to v6 Pro. Custom: chirp-custom:.
"chirp-v6"
Whether to make instrumental (no vocals). [Optional: all tasks]
false
Lyrics or prompt text. [Optional: all tasks] For replace_section: lyrics within infill_context_range (modified if replacement changes lyrics).
"[Verse]\nHello world, here I come...\n\n[Chorus]\nLa la la..."
Full song lyrics after replacement. [Required: replace_section] Contains the complete lyrics of the entire song with the replaced section updated.
"[Verse 1]\nOriginal lyrics...\n\n[Chorus]\nNew replaced lyrics...\n\n[Verse 2]\nMore lyrics..."
Lyrics for the replaced section only. [Optional: replace_section] The specific lyrics within the range being replaced.
"[Bridge]\nThis is the new bridge section\nWith updated lyrics..."
Short description for GPT lyrics generation. [Optional: create, mashup, etc.]
"A happy pop song about summer vacation"
Style tags. Supports string or array. [Optional: all tasks]
"Pop, Happy, Upbeat"
Official Create form → More Options → "Exclude styles". Mapped to top-level negative_tags. [Optional: all tasks]
"Sad, Slow"
Song title. [Optional: all tasks]
"Summer Vibes"
Source clip ID. [Required: extend, cover, use_styles_lyrics, replace_section, add_instrumental, add_vocals, gen_stem_*, add_stems, sample]
"clip_abc123"
Continue position in seconds. [Optional: extend, upload_extend]
x >= 030
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.
Show child attributes
Show child attributes
{ "start_s": 15.36, "end_s": 53.8 }
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).
smart, classic, fixed "smart"
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.
Show child attributes
Show child attributes
{ "start_s": 0, "end_s": 69.16 }
Artist persona config for style mimicking. [Optional: create, cover, extend, replace_section]
Show child attributes
Show child attributes
{
"persona_id": "persona_xyz789",
"artist_clip_id": "clip_abc123",
"persona_style": "vox"
}
Official Create form → More Options sliders. style_weight = Style Influence (01); weirdness_constraint = Weirdness (01); aug_creativity = Variety (04 int, 2=Normal, 4=max); audio_weight = reference-audio influence (cover/extend, 01); duration = Duration Custom in seconds (10~360, chirp-v55+). Omit unused keys.
Show child attributes
Show child attributes
{
"style_weight": 0.29,
"weirdness_constraint": 0.37,
"aug_creativity": 2,
"duration": 110
}
Official Create form → More Options → "Vocal Gender" (Male=m, Female=f). Mapped to metadata.vocal_gender. Omit for no preference.
m, f "m"
Audio URL for upload tasks. [Required: upload_extend, upload_cover]
"https://example.com/audio.mp3"
Two clip IDs for mashup [clip_a, clip_b]. [Required: mashup]
["clip_abc123", "clip_def456"]
Suno playlist ID. [Required: inspiration] Must be obtained via /playlist/create → /playlist/addClips before calling /generate. Add inspiration clips (1–4, same account) to the playlist first. When combined with persona (vox_playlist_condition), the playlist must exist on the same account as the persona.
"119573ff-8e48-4fe6-9029-39c76c9a5597"
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.
Show child attributes
Show child attributes
{
"description": "深沉的低音和温暖的模拟质感",
"type": "one_shot",
"key": "F#",
"bpm": 2
}
Stem control tags for add_stems. [Optional: add_stems] Default "add ".
"add "
Official Create form → "Max Mode" (also in More Options). Mapped to metadata.is_max_mode. Uses more compute for consistency throughout the song. Costs 2x official-account credits. User billing is 2x via a platform param_cost_rule matching max_mode=true. Default omitted/false = current pricing (no change). Rejected on gen_stem_* and sound (HTTP 400).
false
Official Create form → More Options → "Personalize" / "My Taste". Mapped to top-level use_personalization. Uses the picked official account's taste profile. Default omitted/false. Effect is not guaranteed (pool accounts may have no taste data).
false
Response
task id. Use this id to query task status.
"15c257ff-43f7-4678-bd41-202ad6b8488b"