Skip to main content
POST
Referencing a source track: Operations based on an existing song require no extra ids—just pass task_id (task_id of the job that produced the source track) + audio_index (which track in the result music[], 1-based, defaults to 1).

Authorizations

string
required
All endpoints require authentication using a Bearer TokenGet an API Key:Visit the API Key management page to get your API KeyAdd the following to the request headers when using it:

Body

string
default:"suno"
Audio model. Currently pass suno (defaults to suno if omitted).
string
required
Our task_id of the job that produced the source track. If missing or the source cannot be resolved, a 400 is returned at submission time.
integer
default:"1"
Which track in the source job’s result data.music[] (1-based; defaults to 1; a single generation usually produces 2 tracks: indexes 1 and 2).
string
Lyrics for the replacement section.
integer
required
Replacement start point (seconds). If missing, returns 400 immediately.
integer
required
Replacement end point (seconds). If missing, returns 400 immediately.
string
default:"v5.5"
Generation version: v4 / v4.5+ / v5 / v5.5; defaults to v5.5 if omitted. Any other value (including v3.5 / v4.5 / v4.5-all) returns 400 directly at submission time.
string
Context lyrics.
string
Title.
string
Style tags.
string
Style tags to exclude.
Getting the result: This endpoint is an async task. After submitting you get a task_id; poll GET /v1/music/tasks/{task_id} at 3–5s intervals until status is completed or failed (music generation typically takes 30–120s; while generating, status is pending and progress goes queued 10 → ready 50 → done 100). On completion take the replaced audio_url from data.result.music[]. On failure data.error.message gives the reason and the pre-deducted quota is automatically refunded.

Response

integer
Response status code
array
Returned data array