Skip to main content
POST
Source Audio Reference: No additional IDs are needed for tracks based on existing songs. Just pass task_id (the task ID from the previous run of this task) + audio_index (which result track in the data.result.music[] list, 1-based, default is 1).
This endpoint has no version dimension: do not pass version — if passed, it is discarded and does not affect billing.
Prerequisite: concat can only join segments produced by extend (continuation). If the source is not an extend product (e.g. a normal one-shot full song), the request is rejected at submission with a 400.
The song synthesis itself is free. The extend API interface will be charged separately for generating the pre-written continuation fragment.

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 source job — must be a segment produced by extend (continuation) (see the Warning above). If missing, not an extend product, or the source cannot be resolved, a 400 is returned at submission time.
integer
default:"1"
Selects a track from the source task’s data.result.music[] array (1-based; default 1).
string
Output audio format: mp3 / m4a / wav.
The source task must be a result of a extend or extendMusic continuation. This API is used to synthesize a chain of continuations, not an arbitrary concatenation tool for two songs.
Get Result: This is an asynchronous task. After submission, you will receive task_id and then poll GET /v1/music/tasks/{task_id} every 3–5 seconds until status becomes completed or failed (usually 30–120 seconds; while generation is in progress, status may be pending or processing, and progress is an integer from 0 to 100 and is not guaranteed to change at fixed intervals). Once completed, read the complete song’s audio_url from data.result.music[]. In case of failure, data.error.message provides the reason and the deducted amount will be automatically refunded.

Response

integer
Response status code
array
Returned data array