Skip to main content
POST
custom controls how text fields are interpreted. With custom=true (custom mode), prompt contains lyrics, and title, style, negative_tags, auto_lyrics, and persona_id apply. With custom=false (inspiration mode), prompt contains an inspiration description and those custom-mode fields are ignored. style_weight, weirdness_constraint, audio_weight, and vocal_gender are validated and applied in both modes.
This endpoint has slightly different field names: style is used, instead of tags.

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).
boolean
default:"false"
false=inspiration mode; true=custom mode (prompt used as lyrics). Defaults to false.
boolean
default:"false"
true=instrumental only, no vocals. Defaults to false.
string
Public version: v6 / v6-wild / v6-mini. At least one must be provided with custom_model_id; omit this field when using a custom model.
string
The complete UUID of the created custom model task. Mutually exclusive with version and persona_id; this field is provided to be charged based on the price tier of the custom model.
string
inspiration prompt / lyrics. custom=false must be filled and no more than 3000 characters; custom=true and instrumental=false must be filled and no more than 5000 characters; custom pure music can be omitted.
string
Title for custom mode, up to 80 characters. Ignored when custom=false (inspiration mode).
string
Style tag (custom mode), no more than 1000 characters. Ignored when custom=false (inspiration mode).
string
Negative style tags (styles you don’t want). Only takes effect when custom=true.
boolean
true=rewrite the provided lyrics creatively. Only takes effect when custom=true.
string
Persona Style ID. Only applies when custom=true is used and mutually exclusive with custom_model_id.
string
Vocal gender: Male / Female (m / f / male / female are also accepted and normalized by the backend). Works in both modes.
number
Style weight, 0.00–1.00. Validated and effective in both modes.
number
creative score, 0.00–1.00. Both modes will validate and take effect.
number
Audio weight, 0.00–1.00. Validated and effective in both modes.
string
Style variation: off / normal / high / extra / max. Optional; there is no fixed default.
boolean
default:"false"
Whether to enable Max mode. Enable it requires custom=true and charges at twice the normal price.
string
Output audio format: mp3 / m4a / wav. If omitted, the service chooses the default.
integer
target generation duration, range 10-360 seconds. Only available when set as custom=true; actual finished product duration will be based on task results.
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[] (there are also image_url / video_url / title / duration etc.). 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