Skip to main content
GET
Suno Common Conventions & Task Query
This page covers the common conventions shared by all Suno music APIs and is meant to be used alongside the individual documentation for each endpoint. All generation / editing APIs are asynchronous tasks: submit to get a task_id, then poll the query API on this page to retrieve results.

Authentication

All requests must include the following in the request headers:
Visit the API Key management page to obtain an API Key.

Task Lifecycle (all APIs are asynchronous)

1

Submit

POST /v1/music/generations/<operation> → immediately returns our task_id:
2

Poll

GET /v1/music/tasks/:task_id until status is completed or failed. While generating, status is pending and progress goes queued 10 → ready 50 → done 100. A polling interval of 3–5s is recommended; music generation usually takes 30–120s.
3

Retrieve results

On completion, take audio_url / image_url / video_url, etc. from data.result.music[].
Task status transitions: submittedpendingcompleted / failed. On failure, data.error.message gives the reason and the pre-deducted quota is automatically refunded.

Version

v3.5 / v4 / v4.5 / v4.5+ / v4.5-all / v5 / v5.5, affecting audio quality and billing; the default is used if omitted. Availability and defaults vary per endpoint — some support only a subset, and some have no version dimension at all; see each endpoint’s own documentation.

Referencing a Source Track: task_id + audio_index

Operations based on an existing song (extend / cover / stem separation / add vocals / trim…) do not require you to remember any upstream id; you only pass:
  • task_id: our task_id for the task that produced the source track
  • audio_index: which track in that task’s result music[] (1-based, defaults to 1; a single generation usually produces 2 tracks: 1 and 2)
If the source cannot be resolved (task not complete / index out of range / task_id not found), a 400 is returned at submission time.

Query Task: GET /v1/music/tasks/:task_id

task_id
string
required
Our task_id returned by the submit API.
Poll this API until status is completed or failed. Once completed, retrieve the products from data.result.music[].

Response

task_id
string
Unique task identifier
status
string
Task status: submitted / pending / completed / failed
progress
integer
Progress: queued 10 → ready 50 → done 100
data
object
Result data