Generate Schema
curl --request GET \
--url https://api.mountsea.ai/suno/v2/generate/schemaimport requests
url = "https://api.mountsea.ai/suno/v2/generate/schema"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.mountsea.ai/suno/v2/generate/schema', 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/schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mountsea.ai/suno/v2/generate/schema"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mountsea.ai/suno/v2/generate/schema")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mountsea.ai/suno/v2/generate/schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"task": "<string>",
"description": "<string>",
"required": [
{}
],
"optional": [
{}
],
"notAllowed": [
{}
],
"example": {}
}Suno
Generate Schema
Get the required and optional fields for each generate task type
GET
/
suno
/
v2
/
generate
/
schema
Generate Schema
curl --request GET \
--url https://api.mountsea.ai/suno/v2/generate/schemaimport requests
url = "https://api.mountsea.ai/suno/v2/generate/schema"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.mountsea.ai/suno/v2/generate/schema', 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/schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.mountsea.ai/suno/v2/generate/schema"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.mountsea.ai/suno/v2/generate/schema")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mountsea.ai/suno/v2/generate/schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"task": "<string>",
"description": "<string>",
"required": [
{}
],
"optional": [
{}
],
"notAllowed": [
{}
],
"example": {}
}This endpoint helps you understand what parameters are required or optional for each task type when using the Generate endpoint.
Recommended Workflow: Before calling
/generate, first call this endpoint with your desired task type to understand exactly which fields to include in your request.Query Parameters
string
The task type to get schema for. If not provided, returns schemas for all tasks.
| Value | Description |
|---|---|
create | Create new music from scratch |
extend | Extend existing music |
upload_extend | Extend uploaded audio |
upload_cover | Cover uploaded audio |
cover | Create cover of existing clip |
use_styles_lyrics | Use styles from existing clip with new lyrics |
replace_section | Replace a section of existing audio |
add_instrumental | Add instrumental to audio |
add_vocals | Add vocals to audio |
gen_stem_two | Generate two-track stems |
gen_stem_all | Generate all stems |
mashup | Mashup two songs |
sample | Sample from existing clip |
inspiration | Generate from inspiration playlist |
sound | Generate sound effects |
Response
Returns an array of task schema objects containing:string
The task type identifier.
string
Human-readable description of the task.
array
List of required fields with their descriptions, types, and examples.
array
List of optional fields with their descriptions, types, and examples.
array
List of fields that will be ignored for this task type.
object
A complete request example for this specific task.
Example
curl -X GET "https://api.mountsea.ai/suno/v2/generate/schema" \
-H "Authorization: Bearer your-api-key"
curl -X GET "https://api.mountsea.ai/suno/v2/generate/schema?task=extend" \
-H "Authorization: Bearer your-api-key"
// Get schema for extend task
const response = await fetch('https://api.mountsea.ai/suno/v2/generate/schema?task=extend', {
method: 'GET',
headers: {
'Authorization': 'Bearer your-api-key'
}
});
const schemas = await response.json();
console.log(schemas);
import requests
# Get schema for create task
response = requests.get(
'https://api.mountsea.ai/suno/v2/generate/schema',
params={'task': 'create'},
headers={'Authorization': 'Bearer your-api-key'}
)
schemas = response.json()
print(schemas)
Response Example
[
{
"task": "extend",
"description": "Extend existing music",
"required": [
{
"field": "clip_id",
"description": "Source clip ID",
"example": "clip_abc123",
"type": "string"
}
],
"optional": [
{
"field": "continue_at",
"description": "Continue position in seconds",
"example": 30,
"type": "number"
},
{
"field": "tags",
"description": "Style tags",
"example": "Pop, Happy",
"type": "string"
},
{
"field": "prompt",
"description": "Lyrics or prompt text",
"example": "[Verse]\nHello world...",
"type": "string"
}
],
"notAllowed": [
"range",
"audio_url"
],
"example": {
"task": "extend",
"model": "chirp-v55",
"clip_id": "clip_abc123",
"continue_at": 30,
"tags": "Pop, Happy"
}
}
]
Task Types Overview
| Task | Description | Key Required Fields |
|---|---|---|
create | Create new music | model |
extend | Extend existing clip | clip_id, model |
upload_extend | Extend uploaded audio | audio_url, model |
upload_cover | Cover uploaded audio | audio_url, model |
cover | Cover existing clip | clip_id, model |
use_styles_lyrics | Use styles with new lyrics | clip_id, model |
replace_section | Replace audio section | clip_id, range, infill_context_range, continued_aligned_prompt, model |
add_instrumental | Add instrumental | clip_id, range, model |
add_vocals | Add vocals | clip_id, range, model |
gen_stem_two | Two-track stems | clip_id, model |
gen_stem_all | All stems | clip_id, model |
mashup | Mashup two songs | mashup_clip_ids, model |
sample | Sample from existing clip | clip_id, range, model |
inspiration | Generate from real playlist | playlist_id, model — see Inspiration Guide |
sound | Generate sound effects | sound, model |
All tasks require
task and model fields. Use this endpoint to get the complete list of required and optional fields for each specific task type.⌘I