Suno V6 API
Suno V6 songs and sounds from scratch by a description or your own lyrics: two MP3 variants of the track per run. From your audio: add vocals or music, a cover, a continuation, a rewritten part, a mashup of two tracks. Versions V6 Mini and V6 Wild are available too.
For AI assistants:Download .mdAll documentation .mdOpen as text
Connect in three steps
- Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
- Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
- Run a task and collect the resultPOST /v1/tasks starts a task, GET /v1/tasks/{id} shows its status and files.
Ready-to-use code
Replace YOUR_API_KEY with your key. The code starts a task and waits for the result. In cURL, repeat the second request with the id from the first response instead of TASK_ID until status becomes succeeded.
curl -X POST "https://api.cyhub.ai/v1/tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "suno",
"settings": {
"mode": "generate",
"model": "V6",
"customMode": false,
"songDescription": "Лёгкая летняя песня о дороге к морю, акустическая гитара, женский вокал"
}
}'
curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"import time
import requests
API = "https://api.cyhub.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
body = {
"model": "suno",
"settings": {
"mode": "generate",
"model": "V6",
"customMode": False,
"songDescription": "Лёгкая летняя песня о дороге к морю, акустическая гитара, женский вокал",
},
}
response = requests.post(f"{API}/tasks", json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
task = response.json()
while task["status"] in ("queued", "running"):
time.sleep(5)
task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
print(task["status"], task["result"])const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };
const body = {
"model": "suno",
"settings": {
"mode": "generate",
"model": "V6",
"customMode": false,
"songDescription": "Лёгкая летняя песня о дороге к морю, акустическая гитара, женский вокал"
}
};
async function main() {
let response = await fetch(`${API}/tasks`, { method: "POST", headers: HEADERS, body: JSON.stringify(body) });
if (!response.ok) throw new Error(await response.text());
let task = await response.json();
while (task.status === "queued" || task.status === "running") {
await new Promise((resolve) => setTimeout(resolve, 5000));
response = await fetch(`${API}/tasks/${task.id}`, { headers: HEADERS });
task = await response.json();
}
console.log(task.status, task.result);
}
main();Price before the run
Prices as of 15.10.2026: from 3 ₽. POST /v1/price shows the exact price of your settings.
| Mode | Price |
|---|---|
| A song from scratch | from 12 ₽ |
| V6 model = V6 | from 12 ₽ |
| V6 Mini model = V6_MINI | from 12 ₽ |
| V6 Wild model = V6_WILD | from 12 ₽ |
| A sound or ambience | from 3 ₽ |
| V6 model = V6 | from 3 ₽ |
| V6 Mini model = V6_MINI | from 3 ₽ |
| V6 Wild model = V6_WILD | from 3 ₽ |
| Add vocals with a 1 s file | from 12 ₽ |
| V6 model = V6, with a 1 s file | from 12 ₽ |
| V6 Mini model = V6_MINI, with a 1 s file | from 12 ₽ |
| V6 Wild model = V6_WILD, with a 1 s file | from 12 ₽ |
| Add instrumental with a 1 s file | from 12 ₽ |
| V6 model = V6, with a 1 s file | from 12 ₽ |
| V6 Mini model = V6_MINI, with a 1 s file | from 12 ₽ |
| V6 Wild model = V6_WILD, with a 1 s file | from 12 ₽ |
| A cover of your audio with a 1 s file | from 12 ₽ |
| V6 model = V6, with a 1 s file | from 12 ₽ |
| V6 Mini model = V6_MINI, with a 1 s file | from 12 ₽ |
| V6 Wild model = V6_WILD, with a 1 s file | from 12 ₽ |
| Continue your audio with a 90 s file | from 12 ₽ |
| V6 model = V6, with a 90 s file | from 12 ₽ |
| V6 Mini model = V6_MINI, with a 90 s file | from 12 ₽ |
| V6 Wild model = V6_WILD, with a 90 s file | from 12 ₽ |
| Rewrite a part of your audio with a 60 s file | from 5 ₽ |
| V6 model = V6, with a 60 s file | from 5 ₽ |
| V6 Mini model = V6_MINI, with a 60 s file | from 5 ₽ |
| V6 Wild model = V6_WILD, with a 60 s file | from 5 ₽ |
| A mashup of two tracks with a 1 s file | from 12 ₽ |
| V6 model = V6, with a 1 s file | from 12 ₽ |
| V6 Mini model = V6_MINI, with a 1 s file | from 12 ₽ |
| V6 Wild model = V6_WILD, with a 1 s file | from 12 ₽ |
Send the same settings to POST /v1/price: the response shows the price of the run without charging you.
curl -X POST "https://api.cyhub.ai/v1/price" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "suno",
"settings": {
"mode": "generate",
"model": "V6",
"customMode": false,
"songDescription": "Лёгкая летняя песня о дороге к морю, акустическая гитара, женский вокал"
}
}'amount_minor: the price of the run in minor units (kopecks for rubles)currency: the wallet currencyavailable_minor: how much your balance has for new tasks right now
Modes
Each mode has its own parameters and examples. The mode is set by the mode field.
- A song from scratch
mode = generate - A sound or ambience
mode = sounds - Add vocals
mode = add_vocals - Add instrumental
mode = add_instrumental - A cover of your audio
mode = cover_upload - Continue your audio
mode = extend - Rewrite a part of your audio
mode = replace_upload - A mashup of two tracks
mode = mashup
A song from scratch
A song from a short description, or with your own lyrics, style and title.
Value of the mode field: generate
Price in this mode from 12 ₽.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"customModeOptionalAdvanced mode: your own lyrics, style, title and duration. Off: a song description is enough.
Type: BooleanDefault:falsesongDescriptionOptionalSong description for the simple mode: subject, mood, genre. Required when customMode is off.
Type: StringMaximum characters: 3000titleOptionalSong title. Required in advanced mode, not set in simple mode.
Type: StringMaximum characters: 80styleOptionalStyle and genre in words. Required in advanced mode, not set in simple mode.
Type: StringMaximum characters: 1000promptOptionalLyrics for the advanced mode. Required unless the track is instrumental. Not set in simple mode: there the description defines the song.
Type: StringMaximum characters: 5000instrumentalOptionalNo vocals.
Type: BooleanDefault:falsevocalGenderOptionalSinger voice, advanced mode only.
Type: StringAllowed values:mfDefault:"m"durationOptionalDuration in seconds, advanced mode only.
Type: IntegerMinimum: 10Maximum: 360Default:20styleWeightOptionalHow strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals. Advanced mode only.
Type: NumberMinimum: 0Maximum: 1Default:0.65weirdnessConstraintOptionalHow bold the result is: 0 predictable, 1 experimental, at most two decimals. Advanced mode only.
Type: NumberMinimum: 0Maximum: 1Default:0.65audioWeightOptionalWeight of the audio features in the result: 0 weak, 1 strong, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65
Parameters not listed here are not accepted: the response is 422 unknown_setting.
Input
- Simple mode: a song description, the model invents the rest. Title, style and lyrics are not set in it.
- Advanced mode: title and style are required; lyrics are required unless the track is instrumental.
- Voice, duration, style weight and weirdness work only in advanced mode: in simple mode they are not sent.
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
Song from a description
{
"model": "suno",
"settings": {
"mode": "generate",
"model": "V6",
"customMode": false,
"songDescription": "Лёгкая летняя песня о дороге к морю, акустическая гитара, женский вокал"
}
}Song with your own lyrics
{
"model": "suno",
"settings": {
"mode": "generate",
"model": "V6",
"customMode": true,
"title": "Дорога к морю",
"style": "акустический поп, лето",
"prompt": "Куплет 1: ...\nПрипев: ...",
"instrumental": false,
"vocalGender": "f",
"duration": 120
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}A sound or ambience
Not a song but a sound: rain, city hum, a game effect. It can be looped, with a set tempo and key.
Value of the mode field: sounds
Price in this mode from 3 ₽.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"soundDescriptionRequiredWhat it should sound like, for example rain on a roof or footsteps in snow. There will be no lyrics.
Type: StringMinimum characters: 1Maximum characters: 500soundLoopOptionalMake the end flow into the beginning without a click: for background that plays in a loop.
Type: BooleanDefault:falsesoundTempoOptionalTempo in beats per minute. Not set: the model chooses it.
Type: IntegerMinimum: 1Maximum: 300soundKeyOptionalKey: a letter means major, a letter with m means minor (Am is A minor). An empty string: any.
Type: StringAllowed values:CC#DD#EFF#GG#AA#BCmC#mDmD#mEmFmF#mGmG#mAmA#mBmDefault:""
Parameters not listed here are not accepted: the response is 422 unknown_setting.
Input
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
Background for a video
{
"model": "suno",
"settings": {
"mode": "sounds",
"soundDescription": "Шум дождя по жестяной крыше, далёкие раскаты грома",
"soundLoop": true
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}Add vocals
Vocals on top of your music without a voice: the model sings your lyrics in the given style.
Value of the mode field: add_vocals
Price in this mode from 12 ₽, with a 1 s file.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"audioRequiredOne URL of your music without vocals.
Type: List (String, uri)Maximum items: 1titleRequiredTrack title. Required.
Type: StringMinimum characters: 1Maximum characters: 80styleRequiredStyle and genre in words. Required.
Type: StringMinimum characters: 1Maximum characters: 1000promptRequiredThe lyrics the vocals will sing.
Type: StringMinimum characters: 1Maximum characters: 5000negativeTagsRequiredStyles that must not appear in the result, comma separated. Required.
Type: StringMinimum characters: 1Maximum characters: 500vocalGenderOptionalSinger gender: m male, f female. Only raises the chance, does not guarantee it. Not set: the model decides.
Type: StringAllowed values:mfDefault:""styleWeightOptionalHow strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65weirdnessConstraintOptionalHow bold the result is: 0 predictable, 1 experimental, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65audioWeightOptionalHow closely the result keeps the sound of the source: 0 loosely, 1 closely, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65
Parameters not listed here are not accepted: the response is 422 unknown_setting.
Input
- Audio is a URL of an MP3, WAV, OGG, M4A, FLAC or AAC file up to 20 MB.
- Your own audio only: Suno recognises well-known songs by others and refuses them.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
audio | Audio | mp3, wav, ogg, m4a, flac, aac | 1 | 20 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
Vocals on your music
{
"model": "suno",
"settings": {
"mode": "add_vocals",
"audio": [
"https://example.com/my-instrumental.mp3"
],
"title": "Ночной город",
"style": "синти-поп, мягкий женский вокал",
"prompt": "Куплет 1: ...\nПрипев: ...",
"negativeTags": "хеви-метал, рэп"
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}Add instrumental
Music under your vocals recorded without accompaniment.
Value of the mode field: add_instrumental
Price in this mode from 12 ₽, with a 1 s file.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"audioRequiredOne URL of your vocals without music.
Type: List (String, uri)Maximum items: 1titleRequiredTrack title. Required.
Type: StringMinimum characters: 1Maximum characters: 80tagsRequiredMusic style in words: genre, instruments, mood. Required.
Type: StringMinimum characters: 1Maximum characters: 500negativeTagsRequiredStyles that must not appear in the result, comma separated. Required.
Type: StringMinimum characters: 1Maximum characters: 500vocalGenderOptionalSinger gender: m male, f female. Only raises the chance, does not guarantee it. Not set: the model decides.
Type: StringAllowed values:mfDefault:""styleWeightOptionalHow strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65weirdnessConstraintOptionalHow bold the result is: 0 predictable, 1 experimental, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65audioWeightOptionalHow closely the result keeps the sound of the source: 0 loosely, 1 closely, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65
Parameters not listed here are not accepted: the response is 422 unknown_setting.
Input
- Audio is a URL of an MP3, WAV, OGG, M4A, FLAC or AAC file up to 20 MB.
- Your own audio only: Suno recognises well-known songs by others and refuses them.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
audio | Audio | mp3, wav, ogg, m4a, flac, aac | 1 | 20 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
Music under your voice
{
"model": "suno",
"settings": {
"mode": "add_instrumental",
"audio": [
"https://example.com/my-vocals.mp3"
],
"title": "Колыбельная",
"tags": "нежное фортепиано, струнные",
"negativeTags": "барабаны, электроника"
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}A cover of your audio
The melody of your track stays, the style changes. As with a song from scratch: from a description or with your own lyrics, style and title.
Value of the mode field: cover_upload
Price in this mode from 12 ₽, with a 1 s file.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"audioRequiredOne URL of your track.
Type: List (String, uri)Maximum items: 1customModeOptionalAdvanced mode: your own lyrics, style, title and duration. Off: a song description is enough.
Type: BooleanDefault:falsesongDescriptionOptionalSong description for the simple mode: subject, mood, genre. Required when customMode is off.
Type: StringMaximum characters: 3000titleOptionalSong title. Required in advanced mode, not set in simple mode.
Type: StringMaximum characters: 80styleOptionalStyle and genre in words. Required in advanced mode, not set in simple mode.
Type: StringMaximum characters: 1000promptOptionalLyrics for the advanced mode. Required unless the track is instrumental. Not set in simple mode: there the description defines the song.
Type: StringMaximum characters: 5000instrumentalOptionalNo vocals.
Type: BooleanDefault:falsenegativeTagsOptionalStyles that must not appear in the result, comma separated. Advanced mode only.
Type: StringMaximum characters: 500durationOptionalDuration in seconds, advanced mode only.
Type: IntegerMinimum: 10Maximum: 360Default:20styleWeightOptionalHow strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals. Advanced mode only.
Type: NumberMinimum: 0Maximum: 1Default:0.65weirdnessConstraintOptionalHow bold the result is: 0 predictable, 1 experimental, at most two decimals. Advanced mode only.
Type: NumberMinimum: 0Maximum: 1Default:0.65audioWeightOptionalHow closely the result keeps the sound of the source: 0 loosely, 1 closely, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65
Parameters not listed here are not accepted: the response is 422 unknown_setting.
Input
- Audio is a URL of an MP3, WAV, OGG, M4A, FLAC or AAC file up to 20 MB.
- Your own audio only: Suno recognises well-known songs by others and refuses them.
- The track is at most 8 minutes long.
- Simple mode: a song description, the model invents the rest. Title, style and lyrics are not set in it.
- Advanced mode: title and style are required; lyrics are required unless the track is instrumental.
- Duration, style weight and weirdness work only in advanced mode: in simple mode they are not sent.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
audio | Audio | mp3, wav, ogg, m4a, flac, aac | 1 | 20 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
A cover in another style
{
"model": "suno",
"settings": {
"mode": "cover_upload",
"audio": [
"https://example.com/my-song.mp3"
],
"customMode": false,
"songDescription": "Та же мелодия в стиле лёгкого джаза, женский вокал"
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}Continue your audio
The track continues from the chosen second. The continuation second is required, the style and title are optional: without them the continuation follows the track itself.
Value of the mode field: extend
Price in this mode from 12 ₽, with a 90 s file.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"audioRequiredOne URL of your track.
Type: List (String, uri)Maximum items: 1titleOptionalTrack title. Optional.
Type: StringMaximum characters: 100styleOptionalStyle and genre in words. Optional.
Type: StringMaximum characters: 1000promptOptionalLyrics of the continuation. Required unless the continuation is instrumental.
Type: StringMaximum characters: 5000instrumentalOptionalA continuation without vocals.
Type: BooleanDefault:falsecontinueAtRequiredThe second of the track where the continuation starts. Before the end of the file.
Type: NumberMinimum: 1Maximum: 480negativeTagsOptionalStyles that must not appear in the result, comma separated.
Type: StringMaximum characters: 500vocalGenderOptionalSinger gender: m male, f female. Only raises the chance, does not guarantee it. Not set: the model decides.
Type: StringAllowed values:mfDefault:""styleWeightOptionalHow strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65weirdnessConstraintOptionalHow bold the result is: 0 predictable, 1 experimental, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65audioWeightOptionalHow closely the result keeps the sound of the source: 0 loosely, 1 closely, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65
Parameters not listed here are not accepted: the response is 422 unknown_setting.
The API sets these settings itself, do not send them: defaultParamFlag = true
Input
- Audio is a URL of an MP3, WAV, OGG, M4A, FLAC or AAC file up to 20 MB.
- Your own audio only: Suno recognises well-known songs by others and refuses them.
- The track is at most 8 minutes long.
- The continuation second comes before the end of the track.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
audio | Audio | mp3, wav, ogg, m4a, flac, aac | 1 | 20 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
Continue your track
{
"model": "suno",
"settings": {
"mode": "extend",
"audio": [
"https://example.com/my-song.mp3"
],
"title": "Дорога к морю",
"style": "акустический поп, лето",
"prompt": "Куплет 3: ...\nПрипев: ...",
"continueAt": 60
}
}Continue without lyrics, as the track sounds
{
"model": "suno",
"settings": {
"mode": "extend",
"audio": [
"https://example.com/my-song.mp3"
],
"instrumental": true,
"continueAt": 90
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}Rewrite a part of your audio
Only the chosen section of the track is rewritten, the rest stays and is stitched to the new part.
Value of the mode field: replace_upload
Price in this mode from 5 ₽, with a 60 s file.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"audioRequiredOne URL of your track.
Type: List (String, uri)Maximum items: 1infillStartSRequiredStart of the section in seconds, at most two decimals, for example 45.25.
Type: NumberMinimum: 0infillEndSRequiredEnd of the section in seconds, at most two decimals. At least 10 seconds and at most half of the track.
Type: NumberMinimum: 0promptRequiredNew lyrics for this section.
Type: StringMinimum characters: 1Maximum characters: 5000fullLyricsRequiredThe whole lyrics, already with the changed section. If there are no lyrics, describe in order what sounds.
Type: StringMinimum characters: 1Maximum characters: 5000tagsRequiredStyle of the new section in words. Required.
Type: StringMinimum characters: 1Maximum characters: 500titleRequiredTrack title. Required.
Type: StringMinimum characters: 1Maximum characters: 80negativeTagsOptionalStyles that must not appear in the result, comma separated.
Type: StringMaximum characters: 500
Parameters not listed here are not accepted: the response is 422 unknown_setting.
Input
- Audio is a URL of an MP3, WAV, OGG, M4A, FLAC or AAC file up to 20 MB.
- Your own audio only: Suno recognises well-known songs by others and refuses them.
- The section is at least 10 seconds and at most half of the track.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
audio | Audio | mp3, wav, ogg, m4a, flac, aac | 1 | 20 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
A new chorus
{
"model": "suno",
"settings": {
"mode": "replace_upload",
"audio": [
"https://example.com/my-song.mp3"
],
"infillStartS": 45,
"infillEndS": 70,
"prompt": "Новый припев: ...",
"fullLyrics": "Куплет 1: ...\nНовый припев: ...\nКуплет 2: ...",
"tags": "поп-рок, энергично",
"title": "Дорога к морю"
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}A mashup of two tracks
Two of your tracks are mixed into one, the first sets the base. From a description or with your own lyrics, style and title.
Value of the mode field: mashup
Price in this mode from 12 ₽, with a 1 s file.
Parameters
Model parameters go inside settings. Omitted optional fields take their default values.
modelOptionalModel version.
Type: StringAllowed values:V6V6_MINIV6_WILDDefault:"V6"audioRequiredURL of the first track: it sets the base.
Type: List (String, uri)Maximum items: 1audio2RequiredURL of the second track.
Type: List (String, uri)Maximum items: 1customModeOptionalAdvanced mode: your own lyrics, style, title and duration. Off: a song description is enough.
Type: BooleanDefault:falsesongDescriptionOptionalSong description for the simple mode: subject, mood, genre. Required when customMode is off.
Type: StringMaximum characters: 3000titleOptionalSong title. Required in advanced mode, not set in simple mode.
Type: StringMaximum characters: 80styleOptionalStyle and genre in words. Required in advanced mode, not set in simple mode.
Type: StringMaximum characters: 1000promptOptionalLyrics for the advanced mode, optional. Not set in simple mode: there the description defines the song.
Type: StringMaximum characters: 5000instrumentalOptionalNo vocals.
Type: BooleanDefault:falsedurationOptionalDuration in seconds, advanced mode only.
Type: IntegerMinimum: 10Maximum: 360Default:20styleWeightOptionalHow strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals. Advanced mode only.
Type: NumberMinimum: 0Maximum: 1Default:0.65weirdnessConstraintOptionalHow bold the result is: 0 predictable, 1 experimental, at most two decimals. Advanced mode only.
Type: NumberMinimum: 0Maximum: 1Default:0.65audioWeightOptionalHow closely the result keeps the sound of the source: 0 loosely, 1 closely, at most two decimals.
Type: NumberMinimum: 0Maximum: 1Default:0.65
Parameters not listed here are not accepted: the response is 422 unknown_setting.
Input
- Audio is a URL of an MP3, WAV, OGG, M4A, FLAC or AAC file up to 20 MB.
- Your own audio only: Suno recognises well-known songs by others and refuses them.
- Simple mode: a song description, the model invents the rest. Title, style and lyrics are not set in it.
- Advanced mode: title and style are required, lyrics are optional.
- Duration, style weight and weirdness work only in advanced mode: in simple mode they are not sent.
| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
audio | Audio | mp3, wav, ogg, m4a, flac, aac | 1 | 20 MB |
audio2 | Audio | mp3, wav, ogg, m4a, flac, aac | 1 | 20 MB |
Request example
Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.
A mashup from a description
{
"model": "suno",
"settings": {
"mode": "mashup",
"audio": [
"https://example.com/track-1.mp3"
],
"audio2": [
"https://example.com/track-2.mp3"
],
"customMode": false,
"songDescription": "Танцевальный ремикс, быстрый темп, яркий припев"
}
}The price is calculated when the task is accepted, currency RUB.
Output
- Two MP3 versions of the track per run, plus the title and lyrics as text when there are any.
- A song takes 5 to 10 minutes, a sound about a minute.
| Kind | Formats | How many | Note |
|---|---|---|---|
audio | mp3 | 2 | Two versions of the track. |
result.texts: The title and lyrics of the song, when there are any.
A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "succeeded",
"finished_at": "2026-10-01T12:03:41+00:00",
"result": {
"caption": "Caption of the result: the model and its settings",
"texts": [
"Text of the result, for example lyrics"
],
"files_expire_at": "2026-10-08T12:03:41+00:00",
"files_expired": false,
"artifacts": [
{
"index": 0,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
},
{
"index": 1,
"kind": "audio",
"filename": "audio.mp3",
"size": 4194304,
"caption": "",
"download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
}
]
}
}See also
Try Suno V6 through the API
One key opens every CyHUB model. Payment in rubles, and you see the price before the run.
Get an API key