Build a full-length song
A single run usually gives you two or three minutes. For something longer, extend in steps and merge at the end.1
Generate the opening
Call
suno/music and keep the music_id.2
Continue from there
Call
suno/extend with that music_id and continue_at, the second to continue from.Extension produces a segment, not a full track, typically well under a minute. Extend again from the new segment to go further.3
Merge into one track
Call
suno/concat with the segment’s music_id. It follows that segment back through the chain and assembles the whole thing.4
Export
Call
suno/download and pick mp3, m4a, or wav.Rework audio you already have
1
Upload
Call
suno/upload with a publicly downloadable audio URL and keep the music_id.This endpoint is synchronous. It waits for processing, which takes about a minute, so allow a generous client timeout.2
Restyle or continue
- New style:
suno/upload-cover - Keep writing:
suno/upload-extend
audio_url directly, so you can skip the upload step if you prefer.suno/inspo with up to four references.
Get the instrumental or the vocal
1
Separate
suno/stems pulls the lead vocal by default, or any stem you name. For every stem at once, use suno/stems-all.2
Rebuild around it
- Vocal in hand, want new backing:
suno/add-instrumental - Instrumental in hand, want a singer:
suno/add-vocals - Want one more layer:
suno/add-stem
Reuse one voice across songs
1
Capture the voice
- From an existing track:
suno/persona - From an audio file:
suno/create-voice
2
Generate with it
Pass
persona_id when generating and the new song sings in that voice. Custom mode only.suno/create-model trains one from 6 to 24 audio files. Training takes a while and yields a model ID.
Finishing touches
Once a song is done, change its tempo withsuno/adjust-speed (optionally preserving pitch), convert it to MIDI with suno/gen-midi, or fetch per-line lyric timings plus whole-track waveform data with suno/aligned-lyrics.
How long you wait
Every action answers a submit the same way: a task ID, which you then read withGET /suno/v2/fetch/{task_id} or have pushed to you via notify_hook. One code path covers them all, with no per-action branching.
What differs is the wait. These are usually final on submit, so the very next query has the result:
suno/upload, suno/persona, suno/gen-midi, suno/aligned-lyrics, suno/upsample-tags
MIDI and lyric timings occasionally need a little longer. The task then shows as in progress; query again shortly. You are billed once.
Of these, the submit request for
suno/upload is by far the slowest, close to a minute before it answers, so allow a generous client timeout. The rest return quickly.Every capability
Create something new
Work on an existing track
Bring your own audio
Split and reassemble
Adjust
Export
Voices and models
Analysis
About pricing
Billing is per call, independent of length or how many results come back. A few things worth knowing:- When an action returns several results and only some succeed, you are charged for the ones that succeeded
max_modedoubles the price and only applies in custom mode- Failed tasks are refunded
- Lyric timings (
suno/aligned-lyrics) are free
Common questions
Why does merging say the track cannot be merged?
Why does merging say the track cannot be merged?
suno/concat expects the ID of a segment produced by extend. The original song has no follow-on segments to merge, so it returns 400.My upload keeps timing out
My upload keeps timing out
suno/upload is synchronous and takes close to a minute. Raise your client timeout to 90 seconds or more. The audio URL must also be publicly downloadable, not a page behind a login.Can I use both songs from one run?
Can I use both songs from one run?
Yes. Every entry in
musics is a finished track with its own music_id, and each can be extended or split independently.Which model version should I pick?
Which model version should I pick?
All three cost the same.
chirp-v6 is balanced, chirp-v6-wild is bolder, chirp-v6-mini is faster. Defaults to chirp-v6. Only generation actions accept it; every other action is version-independent.