Skip to main content
POST
Suno Music Generation
suno is an action-based model: the model ID is fixed and the action field decides what a call does. Start a song from scratch with generate, then keep working on the same track — extend it, cover it, split its stems, edit it, export it — across 32 actions in total. Every action is submitted through the unified task endpoint POST /v1/tasks.

Quick start

A successful submission returns a task_id. Retrieve the result with GET /v1/tasks/{task_id}, wait inline with Prefer: wait, or configure a webhook.

Request parameters

Actions

Create from scratch — no source track involved. Work on an existing track — the source is given by ref_task_id. Vocals and stems Audio editing Export and analysis

Common parameters

string
required
Always suno.
string
default:"generate"
What this call does; see Actions for the full set.
string
A content description in inspiration mode, the lyrics themselves when custom: true, and the subject to write about for lyrics and sounds.
string[]
Reference audio URLs, publicly reachable. Accepted only by the inspo action, where it is required and takes 1–4 entries.
string
Completion callback URL; see Submit Task.

Creative parameters

These apply to the creative actions: generate, inspo, extend, cover, remaster, mashup, sample, replace_section, add_vocals, add_instrumental, add_stem, sounds. Parameters with a narrower range say so in the description.
style and tags are two field names for the same thing: generate uses style, every other action uses tags.

Referencing a source track

string
The task_id of the task that produced the source track.
integer
default:"1"
Which track from the source task’s result to use, starting at 1.
Two exceptions: create_voice takes a publicly reachable audio_url, and upload takes audioFilePath for the file being imported.

Action-specific parameters

Parameters are validated per action: sending an action-specific parameter with a different action, or sending anything beyond the fields above, returns 400 and is not billed.

Limits

This model produces one result per task; n is not supported. The inspo action takes 1 to 4 reference audio URLs.

Pricing

Billed per call, with a different price per action. Each action has its own flat rate, and that rate does not change with version, track length or prompt length. Full-generation actions (generate, extend, cover, remaster and similar) and full stem separation (stems_all) sit at the top; light actions such as lyrics, bpm and wav cost far less. Rates are in price_config.audio_prices on GET /v1/models, keyed by action, and in the console’s Model Market. What a single call actually cost is the cost field on the task response — an integer quota at 500,000 quota = 1 USD, not dollars. Only a successful result is billed. Failed and cancelled tasks, and tasks that return nothing deliverable, are refunded in full.

Response

Audio-producing actions return their output in result.audios[]: url is an array of audio links and expires_at is when those links stop working. generate returns two candidate tracks, addressed later as audio_index 1 or 2. The lyrics action returns no audio: the lyric text sits in the prompt field of each result.audios.lyrics[] entry, alongside title and tags.

Examples

To keep working on the same song, take the task_id from generate and pass it as ref_task_id to the next action. Each follow-up action produces a new task_id of its own, which can be chained further.