Skip to content
RU

Suno 6

Suno 6 (suno-music-generate, short names suno and suno-v6; the old suno-v5 keeps working) generates vocal songs from a text prompt. It returns 2 tracks per request. Generation is async, like video: create a job, poll the status, download the finished mp3 files. The model is paid — requests are charged from your balance.

A job is created with POST /v1/audio/music:

Field Description
model suno or suno-v6 (the full key is suno-music-generate; suno-v5 is a legacy synonym)
prompt Track description, up to 5000 characters; required in simple mode
mode simple (from prompt) or custom (from lyrics + style + title); defaults to simple
lyrics Song lyrics; required in custom mode, up to 5000 characters
style Genre, style, tags; up to 500 characters
title Track title; up to 200 characters

A request with mode: simple and no prompt, or mode: custom and no lyrics, returns 400.

import time
import requests
API = "https://api.mixen.ai/v1/audio/music"
headers = {"Authorization": f"Bearer {MIXEN_API_KEY}"}
job = requests.post(
API,
headers=headers,
json={"model": "suno", "prompt": "Melancholic synth-pop about a night city, female vocals"},
).json()
while job["status"] in ("queued", "in_progress"):
time.sleep(5)
job = requests.get(f"{API}/{job['id']}", headers=headers).json()
for i in (0, 1): # Suno yields two tracks for a single charge
mp3 = requests.get(f"{API}/{job['id']}/content", params={"index": i}, headers=headers)
with open(f"track_{i}.mp3", "wb") as f:
f.write(mp3.content)

When you need specific lyrics rather than generated ones:

{
"model": "suno",
"mode": "custom",
"title": "Night Tram",
"style": "indie rock, 90s, male vocals, live drums",
"lyrics": "First verse...\n\nChorus..."
}

The statuses are the same as for video: queuedin_progresscompleted or failed; a finished answer carries a tracks array with index and title.

curl https://api.mixen.ai/v1/audio/music/music_... \
-H "Authorization: Bearer $MIXEN_API_KEY"
curl -L "https://api.mixen.ai/v1/audio/music/music_.../content?index=1" \
-H "Authorization: Bearer $MIXEN_API_KEY" -o track_1.mp3

Two tracks per request is how the model behaves, not an error: both appear in the poll response, and a specific track is downloaded with the ?index=N parameter of /audio/music/{id}/content (numbering starts at zero, default 0). The endpoint returns mp3 and supports Range requests. A job that has not finished within 15 minutes is marked failed on the next poll and is not charged.

8.0216 ₽ ($0.09) per request — the per_request_rub field in the catalog. Music is billed per request rather than per second: Suno’s two tracks are one charge.

  • A vocal song from a text prompt; each request yields two track variants.
  • Custom mode: your own lyrics, genre and title.
  • Two tracks for a single charge — pick the better one from the poll response.
  • Instrumental tracks without vocals are the Lyria model — see the music guide.
  • Balance only; a job that times out is not charged.

All models — in the catalog. The full music workflow — music guide.