Suno V6
Suno V6, V6 Mini and V6 Wild on reAPI — full songs with vocals from a prompt or your own lyrics. Version rules, parameter reference, and billing dimensions for the eight V6 generation operations.
Suno's current model generation, live on reAPI. V6, V6_MINI and
V6_WILD are selected per request through the version field, and every
generation returns two finished tracks with their own ids. This page covers
the eight operations that take a V6 version; the full 18-operation family
reference — WAV, stems, MIDI, cover art, music video, lyrics and voice
cloning — is at Suno. See pricing on the
model page.
Quick example
curl https://reapi.ai/api/v1/audio/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-music",
"version": "V6",
"custom_mode": false,
"instrumental": false,
"prompt": "A dreamy synthwave track about driving through a neon city at midnight"
}'import requests
resp = requests.post(
"https://reapi.ai/api/v1/audio/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "suno-music",
"version": "V6",
"custom_mode": False,
"instrumental": False,
"prompt": "A dreamy synthwave track about driving through a neon city at midnight",
},
timeout=30,
)
print(resp.json())const r = await fetch("https://reapi.ai/api/v1/audio/generations", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "suno-music",
version: "V6",
custom_mode: false,
instrumental: false,
prompt: "A dreamy synthwave track about driving through a neon city at midnight",
}),
});
console.log(await r.json());package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "suno-music",
"version": "V6",
"custom_mode": false,
"instrumental": false,
"prompt": "A dreamy synthwave track about driving through a neon city at midnight",
})
req, _ := http.NewRequest("POST",
"https://reapi.ai/api/v1/audio/generations", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYEndpoint
POST /api/v1/audio/generations
GET /api/v1/tasks/{id}Submission is async. The POST returns immediately with a task_id; the task
endpoint returns the same envelope until completion. Polling does not consume
credits. The model field selects the operation, not the model version —
the version lives in version.
Versions
| Value | Character |
|---|---|
V6 | Greater musical expression, more natural vocals, richer detail. The default wherever version is optional. |
V6_MINI | Lightweight and fast — balances quality against speed. |
V6_WILD | Pushes creative boundaries for bolder, more distinctive results. |
All three take the same request fields, so moving between them changes one value and nothing else.
V4, V4_5, V4_5PLUS, V4_5ALL, V5 and V5_5 are discontinued
upstream. The schema still accepts them so older integrations do not break
at the gateway, but a request that names one fails at the provider and is
refunded. Send a V6 value.
Modes: inspiration vs custom
Generation-class operations (suno-music, suno-upload-cover,
suno-mashup) run in one of two modes:
custom_mode: false(inspiration) —promptdescribes the song idea and Suno writes the lyrics. Capped at 3000 characters onsuno-music, 500 onsuno-upload-coverandsuno-mashup.custom_mode: true(custom) —promptis used strictly as lyrics;styleandtitlebecome required. Withinstrumental: true,promptis not needed.durationis honoured only in this mode.
On the V6 family the custom-mode caps are prompt 5000 characters, style
1000 characters, title 80 characters.
Operations
Eight operations take a V6 version. Every one posts to
/api/v1/audio/generations and is selected by model.
model | What it does | Fields beyond the generation set |
|---|---|---|
suno-music | Song from a text idea or your own lyrics | — |
suno-extend | Continue a track you generated | audio_id, default_param_flag, continue_at |
suno-upload-cover | Re-imagine an uploaded song in a new style | upload_url |
suno-upload-extend | Extend an uploaded song in its own style | upload_url, default_param_flag, continue_at |
suno-add-vocals | Sing new vocals over an uploaded backing track | upload_url; prompt, title, style, negative_tags required |
suno-add-instrumental | Build accompaniment under uploaded vocals | upload_url, tags; title, negative_tags required |
suno-mashup | Blend two uploaded songs into one | upload_url_list (exactly 2) |
suno-sounds | Short sounds and loops, not songs | sound_loop, sound_tempo, sound_key, grab_lyrics |
version is required on all of them except suno-add-vocals and
suno-add-instrumental, where it is optional and defaults to V6.
Full per-operation request tables, plus the ten operations that take no model version (WAV, stem separation, MIDI, cover art, music video, section replace, lyrics writing and the voice-cloning flow), are in the Suno reference.
Request body — suno-music
| Field | Type | Default | Notes |
|---|---|---|---|
model | string | — | suno-music. Required. |
version | string | — | V6 / V6_MINI / V6_WILD. Required. Discontinued values are accepted by the schema and fail upstream. |
custom_mode | boolean | — | Required. false = inspiration mode, true = your text is the lyrics. |
instrumental | boolean | — | Required. true generates a track with no vocals. In custom mode it decides whether prompt is required. |
prompt | string | — | Conditional. Inspiration mode: the idea, max 3000 characters, required. Custom mode: the exact sung lyrics, max 5000 characters, required when instrumental is false. |
style | string | — | Conditional. Genre, mood and vocal direction ("synthwave, dreamy, female vocal"). Required in custom mode, max 1000 characters. Ignored in inspiration mode. |
title | string | — | Conditional. Track title, max 80 characters. Required in custom mode, ignored in inspiration mode. |
negative_tags | string | — | Comma-separated styles or traits to steer away from. |
vocal_gender | string | — | m or f. Effective in custom mode; biases the voice rather than guaranteeing it. |
style_weight | number | — | 0–1, up to 2 decimal places. How strictly the result follows style. |
weirdness_constraint | number | — | 0–1, up to 2 decimal places. How far the result may deviate. |
audio_weight | number | — | 0–1, up to 2 decimal places. Balance of audio features against the other inputs. |
persona_id | string | — | Persona or cloned-voice id, custom mode only. Persona ids come from POST /api/v1/audio/suno/persona; voice ids from suno-voice-generate. |
persona_model | string | — | style_persona or voice_persona — which kind of id persona_id is. V6 family only. |
duration | integer | 20 (upstream) | Target track length in seconds, 10–360, whole seconds only. Honoured only in custom mode on the V6 family. Omit to let Suno choose. |
The other seven operations reuse this field set and add the columns listed in Operations; their own required combinations are documented per operation in the Suno reference.
No data: URIs. reAPI rejects base64 inputs platform-wide. Every media
field (upload_url, upload_url_list) must be a public HTTP(S) URL, up to
eight minutes of audio. Upload to your own object storage and pass the URL.
Response envelope
Submit and poll share the same shape — only status and output fill in
over time.
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "suno-music",
"status": "completed",
"created_at": 1735000000,
"output": {
"audio_urls": ["https://cdn.reapi.ai/media/tasks/.../0.mp3"],
"tracks": [
{
"id": "track id — reuse as audio_id",
"url": "https://cdn.reapi.ai/media/tasks/.../0.mp3",
"title": "Midnight Drive",
"duration": 128.5,
"tags": "synthwave, dreamy",
"lyrics": "..."
}
]
},
"error": null
}Poll GET /api/v1/tasks/{id} (see the Tasks reference)
until status === "completed". A generation request returns two entries:
output.audio_urls[] holds one URL per variation and output.tracks[] is
index-aligned with it. Only url is guaranteed — metadata keys are omitted
when the upstream returns them empty.
Keep output.tracks[].id. It is the audio_id that suno-extend takes, and
the same id feeds WAV conversion, stem separation, MIDI extraction and
music-video rendering on the Suno reference page.
Pricing dimensions
Flat rate per request — nothing scales with duration, version or output
length. V6, V6_MINI and V6_WILD cost the same. The seven
generation-class operations share one rate that covers both returned tracks;
suno-sounds has its own, lower rate.
credits = price_usd × 1000 1 credit = $0.001Current rates are on the model page, which renders them from the live price. Failed and rejected requests are refunded automatically.
Errors
Failures use the standard envelope
{ "error": { "code", "message", "request_id" } } — see the
error catalog.
| Case | Code | Behaviour |
|---|---|---|
Schema violation (bad version, missing style in custom mode, over-length prompt) | 400 at submit | Nothing is charged |
| Invalid parameter combination the upstream rejects | 80007 | Refunded, upstream reason passed through |
| Content flagged by moderation | 80006 | Refunded |
| Upstream generation failure | 80003 | Refunded |
Discontinued version sent | 80003 / 80007 | Fails at the provider and is refunded — send a V6 value |
Tips
- Start in inspiration mode: one prompt line is enough. Move to custom mode when the exact words matter.
- Pick the version per job, not per project:
V6_MINIwhen a queue is backing up,V6_WILDwhen a predictable result is the wrong result. stylereads best as comma-separated genre + mood + vocal tags.durationis ignored outside custom mode. If a length request seems to have no effect, checkcustom_mode.- Need more than six minutes? Generate the opening, then
suno-extendit from a second you choose. suno-soundsis the cheap path for stingers, ambience and loops — do not pay song rates for a five-second effect.
Related
- Suno — the full 18-operation family reference
- Mureka V9 Song — lyrics-first song generation
- Music Video 1.0 — song + images to MV
- Errors catalog
- Quickstart