CyHUB
РусскийGet an API key

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.

Developer: SunoModel key in the API: suno

For AI assistants:Download .mdAll documentation .mdOpen as text

Connect in three steps

  1. Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
  2. Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
  3. 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
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"
Python
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"])
Node.js
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();
Get a key

Price before the run

Prices as of 15.10.2026: from 3 ₽. POST /v1/price shows the exact price of your settings.

ModePrice
A song from scratchfrom 12 ₽
V6 model = V6from 12 ₽
V6 Mini model = V6_MINIfrom 12 ₽
V6 Wild model = V6_WILDfrom 12 ₽
A sound or ambiencefrom 3 ₽
V6 model = V6from 3 ₽
V6 Mini model = V6_MINIfrom 3 ₽
V6 Wild model = V6_WILDfrom 3 ₽
Add vocals with a 1 s filefrom 12 ₽
V6 model = V6, with a 1 s filefrom 12 ₽
V6 Mini model = V6_MINI, with a 1 s filefrom 12 ₽
V6 Wild model = V6_WILD, with a 1 s filefrom 12 ₽
Add instrumental with a 1 s filefrom 12 ₽
V6 model = V6, with a 1 s filefrom 12 ₽
V6 Mini model = V6_MINI, with a 1 s filefrom 12 ₽
V6 Wild model = V6_WILD, with a 1 s filefrom 12 ₽
A cover of your audio with a 1 s filefrom 12 ₽
V6 model = V6, with a 1 s filefrom 12 ₽
V6 Mini model = V6_MINI, with a 1 s filefrom 12 ₽
V6 Wild model = V6_WILD, with a 1 s filefrom 12 ₽
Continue your audio with a 90 s filefrom 12 ₽
V6 model = V6, with a 90 s filefrom 12 ₽
V6 Mini model = V6_MINI, with a 90 s filefrom 12 ₽
V6 Wild model = V6_WILD, with a 90 s filefrom 12 ₽
Rewrite a part of your audio with a 60 s filefrom 5 ₽
V6 model = V6, with a 60 s filefrom 5 ₽
V6 Mini model = V6_MINI, with a 60 s filefrom 5 ₽
V6 Wild model = V6_WILD, with a 60 s filefrom 5 ₽
A mashup of two tracks with a 1 s filefrom 12 ₽
V6 model = V6, with a 1 s filefrom 12 ₽
V6 Mini model = V6_MINI, with a 1 s filefrom 12 ₽
V6 Wild model = V6_WILD, with a 1 s filefrom 12 ₽

Send the same settings to POST /v1/price: the response shows the price of the run without charging you.

cURL
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 currency
  • available_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

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.

modelOptional

Model version.

Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
customModeOptional

Advanced mode: your own lyrics, style, title and duration. Off: a song description is enough.

Type: BooleanDefault: false
songDescriptionOptional

Song description for the simple mode: subject, mood, genre. Required when customMode is off.

Type: StringMaximum characters: 3000
titleOptional

Song title. Required in advanced mode, not set in simple mode.

Type: StringMaximum characters: 80
styleOptional

Style and genre in words. Required in advanced mode, not set in simple mode.

Type: StringMaximum characters: 1000
promptOptional

Lyrics for the advanced mode. Required unless the track is instrumental. Not set in simple mode: there the description defines the song.

Type: StringMaximum characters: 5000
instrumentalOptional

No vocals.

Type: BooleanDefault: false
vocalGenderOptional

Singer voice, advanced mode only.

Type: StringAllowed values: mfDefault: "m"
durationOptional

Duration in seconds, advanced mode only.

Type: IntegerMinimum: 10Maximum: 360Default: 20
styleWeightOptional

How strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals. Advanced mode only.

Type: NumberMinimum: 0Maximum: 1Default: 0.65
weirdnessConstraintOptional

How bold the result is: 0 predictable, 1 experimental, at most two decimals. Advanced mode only.

Type: NumberMinimum: 0Maximum: 1Default: 0.65
audioWeightOptional

Weight 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

JSON
{
  "model": "suno",
  "settings": {
    "mode": "generate",
    "model": "V6",
    "customMode": false,
    "songDescription": "Лёгкая летняя песня о дороге к морю, акустическая гитара, женский вокал"
  }
}

Song with your own lyrics

JSON
{
  "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.

Complete generation example

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.
KindFormatsHow manyNote
audiomp32Two 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.

JSON
{
  "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"
      }
    ]
  }
}
How to read the result and download files

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.

modelOptional

Model version.

Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
soundDescriptionRequired

What it should sound like, for example rain on a roof or footsteps in snow. There will be no lyrics.

Type: StringMinimum characters: 1Maximum characters: 500
soundLoopOptional

Make the end flow into the beginning without a click: for background that plays in a loop.

Type: BooleanDefault: false
soundTempoOptional

Tempo in beats per minute. Not set: the model chooses it.

Type: IntegerMinimum: 1Maximum: 300
soundKeyOptional

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

    JSON
    {
      "model": "suno",
      "settings": {
        "mode": "sounds",
        "soundDescription": "Шум дождя по жестяной крыше, далёкие раскаты грома",
        "soundLoop": true
      }
    }

    The price is calculated when the task is accepted, currency RUB.

    Complete generation example

    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.
    KindFormatsHow manyNote
    audiomp32Two 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.

    JSON
    {
      "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"
          }
        ]
      }
    }
    How to read the result and download files

    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.

    modelOptional

    Model version.

    Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
    audioRequired

    One URL of your music without vocals.

    Type: List (String, uri)Maximum items: 1
    titleRequired

    Track title. Required.

    Type: StringMinimum characters: 1Maximum characters: 80
    styleRequired

    Style and genre in words. Required.

    Type: StringMinimum characters: 1Maximum characters: 1000
    promptRequired

    The lyrics the vocals will sing.

    Type: StringMinimum characters: 1Maximum characters: 5000
    negativeTagsRequired

    Styles that must not appear in the result, comma separated. Required.

    Type: StringMinimum characters: 1Maximum characters: 500
    vocalGenderOptional

    Singer gender: m male, f female. Only raises the chance, does not guarantee it. Not set: the model decides.

    Type: StringAllowed values: mfDefault: ""
    styleWeightOptional

    How strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    weirdnessConstraintOptional

    How bold the result is: 0 predictable, 1 experimental, at most two decimals.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    audioWeightOptional

    How 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.
    FieldAcceptsFormatsFilesFile size up to
    audioAudiomp3, wav, ogg, m4a, flac, aac120 MB
    How to send files

    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

    JSON
    {
      "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.

    Complete generation example

    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.
    KindFormatsHow manyNote
    audiomp32Two 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.

    JSON
    {
      "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"
          }
        ]
      }
    }
    How to read the result and download files

    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.

    modelOptional

    Model version.

    Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
    audioRequired

    One URL of your vocals without music.

    Type: List (String, uri)Maximum items: 1
    titleRequired

    Track title. Required.

    Type: StringMinimum characters: 1Maximum characters: 80
    tagsRequired

    Music style in words: genre, instruments, mood. Required.

    Type: StringMinimum characters: 1Maximum characters: 500
    negativeTagsRequired

    Styles that must not appear in the result, comma separated. Required.

    Type: StringMinimum characters: 1Maximum characters: 500
    vocalGenderOptional

    Singer gender: m male, f female. Only raises the chance, does not guarantee it. Not set: the model decides.

    Type: StringAllowed values: mfDefault: ""
    styleWeightOptional

    How strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    weirdnessConstraintOptional

    How bold the result is: 0 predictable, 1 experimental, at most two decimals.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    audioWeightOptional

    How 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.
    FieldAcceptsFormatsFilesFile size up to
    audioAudiomp3, wav, ogg, m4a, flac, aac120 MB
    How to send files

    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

    JSON
    {
      "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.

    Complete generation example

    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.
    KindFormatsHow manyNote
    audiomp32Two 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.

    JSON
    {
      "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"
          }
        ]
      }
    }
    How to read the result and download files

    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.

    modelOptional

    Model version.

    Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
    audioRequired

    One URL of your track.

    Type: List (String, uri)Maximum items: 1
    customModeOptional

    Advanced mode: your own lyrics, style, title and duration. Off: a song description is enough.

    Type: BooleanDefault: false
    songDescriptionOptional

    Song description for the simple mode: subject, mood, genre. Required when customMode is off.

    Type: StringMaximum characters: 3000
    titleOptional

    Song title. Required in advanced mode, not set in simple mode.

    Type: StringMaximum characters: 80
    styleOptional

    Style and genre in words. Required in advanced mode, not set in simple mode.

    Type: StringMaximum characters: 1000
    promptOptional

    Lyrics for the advanced mode. Required unless the track is instrumental. Not set in simple mode: there the description defines the song.

    Type: StringMaximum characters: 5000
    instrumentalOptional

    No vocals.

    Type: BooleanDefault: false
    negativeTagsOptional

    Styles that must not appear in the result, comma separated. Advanced mode only.

    Type: StringMaximum characters: 500
    durationOptional

    Duration in seconds, advanced mode only.

    Type: IntegerMinimum: 10Maximum: 360Default: 20
    styleWeightOptional

    How strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals. Advanced mode only.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    weirdnessConstraintOptional

    How bold the result is: 0 predictable, 1 experimental, at most two decimals. Advanced mode only.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    audioWeightOptional

    How 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.
    FieldAcceptsFormatsFilesFile size up to
    audioAudiomp3, wav, ogg, m4a, flac, aac120 MB
    How to send files

    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

    JSON
    {
      "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.

    Complete generation example

    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.
    KindFormatsHow manyNote
    audiomp32Two 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.

    JSON
    {
      "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"
          }
        ]
      }
    }
    How to read the result and download files

    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.

    modelOptional

    Model version.

    Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
    audioRequired

    One URL of your track.

    Type: List (String, uri)Maximum items: 1
    titleOptional

    Track title. Optional.

    Type: StringMaximum characters: 100
    styleOptional

    Style and genre in words. Optional.

    Type: StringMaximum characters: 1000
    promptOptional

    Lyrics of the continuation. Required unless the continuation is instrumental.

    Type: StringMaximum characters: 5000
    instrumentalOptional

    A continuation without vocals.

    Type: BooleanDefault: false
    continueAtRequired

    The second of the track where the continuation starts. Before the end of the file.

    Type: NumberMinimum: 1Maximum: 480
    negativeTagsOptional

    Styles that must not appear in the result, comma separated.

    Type: StringMaximum characters: 500
    vocalGenderOptional

    Singer gender: m male, f female. Only raises the chance, does not guarantee it. Not set: the model decides.

    Type: StringAllowed values: mfDefault: ""
    styleWeightOptional

    How strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    weirdnessConstraintOptional

    How bold the result is: 0 predictable, 1 experimental, at most two decimals.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    audioWeightOptional

    How 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.
    FieldAcceptsFormatsFilesFile size up to
    audioAudiomp3, wav, ogg, m4a, flac, aac120 MB
    How to send files

    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

    JSON
    {
      "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

    JSON
    {
      "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.

    Complete generation example

    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.
    KindFormatsHow manyNote
    audiomp32Two 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.

    JSON
    {
      "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"
          }
        ]
      }
    }
    How to read the result and download files

    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.

    modelOptional

    Model version.

    Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
    audioRequired

    One URL of your track.

    Type: List (String, uri)Maximum items: 1
    infillStartSRequired

    Start of the section in seconds, at most two decimals, for example 45.25.

    Type: NumberMinimum: 0
    infillEndSRequired

    End of the section in seconds, at most two decimals. At least 10 seconds and at most half of the track.

    Type: NumberMinimum: 0
    promptRequired

    New lyrics for this section.

    Type: StringMinimum characters: 1Maximum characters: 5000
    fullLyricsRequired

    The whole lyrics, already with the changed section. If there are no lyrics, describe in order what sounds.

    Type: StringMinimum characters: 1Maximum characters: 5000
    tagsRequired

    Style of the new section in words. Required.

    Type: StringMinimum characters: 1Maximum characters: 500
    titleRequired

    Track title. Required.

    Type: StringMinimum characters: 1Maximum characters: 80
    negativeTagsOptional

    Styles 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.
    FieldAcceptsFormatsFilesFile size up to
    audioAudiomp3, wav, ogg, m4a, flac, aac120 MB
    How to send files

    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

    JSON
    {
      "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.

    Complete generation example

    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.
    KindFormatsHow manyNote
    audiomp32Two 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.

    JSON
    {
      "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"
          }
        ]
      }
    }
    How to read the result and download files

    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.

    modelOptional

    Model version.

    Type: StringAllowed values: V6V6_MINIV6_WILDDefault: "V6"
    audioRequired

    URL of the first track: it sets the base.

    Type: List (String, uri)Maximum items: 1
    audio2Required

    URL of the second track.

    Type: List (String, uri)Maximum items: 1
    customModeOptional

    Advanced mode: your own lyrics, style, title and duration. Off: a song description is enough.

    Type: BooleanDefault: false
    songDescriptionOptional

    Song description for the simple mode: subject, mood, genre. Required when customMode is off.

    Type: StringMaximum characters: 3000
    titleOptional

    Song title. Required in advanced mode, not set in simple mode.

    Type: StringMaximum characters: 80
    styleOptional

    Style and genre in words. Required in advanced mode, not set in simple mode.

    Type: StringMaximum characters: 1000
    promptOptional

    Lyrics for the advanced mode, optional. Not set in simple mode: there the description defines the song.

    Type: StringMaximum characters: 5000
    instrumentalOptional

    No vocals.

    Type: BooleanDefault: false
    durationOptional

    Duration in seconds, advanced mode only.

    Type: IntegerMinimum: 10Maximum: 360Default: 20
    styleWeightOptional

    How strictly to follow the given style: 0 loosely, 1 strictly, at most two decimals. Advanced mode only.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    weirdnessConstraintOptional

    How bold the result is: 0 predictable, 1 experimental, at most two decimals. Advanced mode only.

    Type: NumberMinimum: 0Maximum: 1Default: 0.65
    audioWeightOptional

    How 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.
    FieldAcceptsFormatsFilesFile size up to
    audioAudiomp3, wav, ogg, m4a, flac, aac120 MB
    audio2Audiomp3, wav, ogg, m4a, flac, aac120 MB
    How to send files

    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

    JSON
    {
      "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.

    Complete generation example

    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.
    KindFormatsHow manyNote
    audiomp32Two 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.

    JSON
    {
      "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"
          }
        ]
      }
    }
    How to read the result and download files

    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