Skip to main content
GET
Suno V6 General Agreements and Task Inquiry
All Suno generation, editing, and tool interfaces use asynchronous tasks: obtain task_id after submitting an operation, then query results through this page interface.

Authentication

string
required
Bearer Token authentication: Authorization: Bearer <YOUR_API_KEY>.
Visit the API Key management page to obtain an API Key.

V6 version and model selection

Public models support the following versions:
  • v6
  • v6-wild
  • v6-mini
The main generation endpoint requires either version or the custom_model_id returned by a model-creation task. Editing operations that support versions default to v6 when version is omitted. A public version and custom_model_id cannot be sent together.
custom: true selects custom-lyrics mode, while custom_model_id selects a trained custom model. They are different concepts. Custom-lyrics mode does not automatically switch to custom-model pricing.

General V6 Generation Options

List the following fields only when specific endpoints are provided: Omit fields that an operation does not support; do not send max_mode: false to every operation. variety and Max mode are independent, so choosing variety: "max" does not enable Max billing.

text and weight limits

The new request for the operation interface uses weirdness; weirdness_constraint is a compatibility alias. The main generation still uses weirdness_constraint. Text length is calculated in Unicode characters.

Reference source track

Based on existing works:
  • task_id:API Mart task ID for the output audio track.
  • audio_index: The original position in the source task query response of data.result.music[], starting from 1 by default, and can be 1.
Return however many are specified in the array without fixing the result count to 2. Even if the display order changes on the page, subsequent operations must use the index of tracks in the original results.
All new requests use task_id + audio_index to reference the source audio track and cannot be replaced by audio_id, music_id, or audio_url. If a resolved task is not found or an index out of bounds occurs, 400 will be returned.

Submit response

Read the task ID from data[0].task_id. submitted simply indicates that the task has been accepted, not that there is already final audio or other products.

Query task

GET /v1/music/tasks/{task_id} You can append ?language=zh to get applicable failure message translations. This parameter does not change the language of the song or lyrics.
string
required
The task ID returned by the submission interface.
It is recommended to wait approximately 3 seconds initially, then query every 5-10 seconds until data.status becomes completed or failed. You can continue using the same task ID after page refresh; do not automatically resend paid POST requests due to network timeout.

query response

integer
response status code.
object
Task information.

result processing

  • Music-related results are typically found at data.result.music[], but different operations such as downloads, lyrics, MIDI, Persona, and custom models have their own result structures.
  • duration is the actual duration and may contain decimals; input target duration does not guarantee exact match with final product.
  • The weight return value 0 is a valid value and cannot be hidden due to JavaScript’s falsy judgment.
  • audio_url does not guarantee the use of .mp3 suffix, please play or download using the actual URL returned by the interface.
  • status="unknown" Keep the task ID and allow manual refreshing while not automatically creating new tasks.
AbortController can stop browser requests and polling, but it does not cancel the server-side task. There is currently no endpoint for canceling a submitted Suno task.