Generate a song
generate_musicGenerate a song with vocals or instrumental. Two modes: simple (custom=false) where you describe the song and the model writes the lyrics, or custom (custom=true) where you supply lyrics, title and style tags. Asynchronous — returns a task_id you poll with get_task; generation usually takes 30-120 seconds and normally yields two variations.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Comma-separated style tags, e.g. 'pop, upbeat, guitar'. Max 200 characters. | |
| model | No | Suno model version, e.g. chirp-v5 or chirp-v4-5-plus. Omit for the platform default. | |
| title | No | Song title. Used in custom mode. | |
| custom | No | false (default) lets the model write the lyrics from your description; true means prompt contains lyrics you wrote and you should also set title and tags. | |
| prompt | Yes | In simple mode (custom=false) a description of the song, e.g. 'a dreamy lo-fi track about late-night trains'. In custom mode (custom=true) the actual lyrics, with section markers like [Verse] and [Chorus]. | |
| provider | No | Music backend: 'suno' (default) or 'producer'. | |
| instrumental | No | Generate without vocals. | |
| wait_seconds | No | Poll server-side for up to this many seconds (max 240) and return finished audio if it completes in time. Omit to return a task_id immediately. | |
| negative_tags | No | Styles to avoid, e.g. 'heavy metal, rap'. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | Full result payload when completed — clip IDs, lyrics text and per-clip metadata. Clip IDs from here are what extend_music takes. | |
| note | Yes | What to do next. | |
| status | Yes | One of: queued, in_progress, completed, failed. | |
| task_id | Yes | Pass this to get_task together with platform to check progress. | |
| platform | Yes | 'suno' or 'producer'. Pass to get_task. | |
| audio_urls | No | Finished audio URLs, when the task completed within wait_seconds. |