Skip to main content
POST
Source track: The source must come from an upload task created with POST /v1/music/generations/uploadTask. Pass that task’s task_id and use audio_index to select a track in data.result.music[] (1-based; default 1). A regular generation task cannot be used as the source.
custom controls which fields apply. Submitted fields must still meet all type, range, and length requirements even when they do not apply in the selected mode. With custom=true, prompt (lyrics), title, tags, negative_tags, style_weight, weirdness, and audio_weight apply, while gpt_description is ignored. With custom=false, only gpt_description applies and is required; omitting it returns 400 during submission. vocal_gender applies in both modes. If custom is omitted, the backend infers it in this order: a prompt sets it to true; no prompt plus a gpt_description sets it to false; otherwise, either tags or title sets it to true.

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
The task_id returned by POST /v1/music/generations/uploadTask. Regular generation tasks cannot be used. A missing or invalid source returns 400 during submission.
integer
default:"1"
Selects a track from the source task’s data.result.music[] array (1-based; default 1).
string
default:"v6"
Public version: v6 / v6-wild / v6-mini. Defaults to v6; omit this field when using custom_model_id.
string
The full UUID returned by the model-creation task. Mutually exclusive with version.
boolean
true=custom mode (prompt used as lyrics); false=inspiration mode (uses gpt_description); if omitted, inferred from the content (see the Warning above).
string
Lyrics. Takes effect when custom=true (ignored in inspiration mode).
string
Inspiration prompt. Required when custom=false — if missing, the request fails with 400 at submission (nothing is charged).
string
Title. Only takes effect when custom=true.
string
Style tags. Only takes effect when custom=true.
string
Style tags to exclude. Only takes effect when custom=true.
number
Style weight, 0.00–1.00 (out-of-range values return 400 directly at submission time). Only takes effect when custom=true.
number
Creativity weight, 0.00 – 1.00. Compatible with the old name weirdness_constraint; new requests should use weirdness.
number
Audio weight, 0.00–1.00. Only takes effect when custom=true.
string
Vocal gender: Male / Female. Works in both modes.
string
Style variation: off / normal / high / extra / max.
boolean
default:"false"
Enables Max mode. Requires custom mode and is billed at twice the standard price.
string
Output audio format: mp3 / m4a / wav. This endpoint does not support a target-duration field.
This interface does not support the fields auto_lyrics, persona_id, or instrumental, or target duration.
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 (music generation usually takes 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 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