Skip to main content
Call Suno through the API: generate songs and lyrics, rework, extend, split into stems, export, and clone voices. Each action is its own endpoint, POST /suno/v2/{action}, and every action is an asynchronous task: you get a task ID on submission, then fetch the result, or pass notify_hook and wait for us to push it.

Basics

Every endpoint page has a playground on the right: enter your API key and parameters to send a request. Playground requests are real and billed as usual.

Call flow

1

Submit a task

Call the endpoint for the action, for example Music Generation. data.task_id in the response is the task ID.
2

Get the result

Poll Get Task every 3 to 5 seconds until status becomes SUCCESS or FAILURE; use Batch Get Tasks for several at once. Or pass notify_hook on submission and we POST the same content as the fetch result when the task ends.
3

Keep creating

music_id in the result is how follow-up actions such as extend, cover, stems and export find the track. Store it with the task.
Every action returns the same submit response, and fetch responses share one outer structure; where the outputs live is described in the Task result section of each endpoint page.
You can also submit through the unified task endpoint POST /v1/task/submit with model set to suno/ plus the action name (for example suno/music) and the parameters inside input. Both behave and bill the same.

Every endpoint

Each action lives at POST /suno/v2/{action}; action names are in the first column of each table.

Create something new

Work on an existing track

Bring your own audio

Split and reassemble

Adjust and export

Voices and models

Analysis

Fetch

Pricing

Billing is per call, independent of length or how many results come back:
  • When an action returns several results and only some succeed, you are charged for the ones that succeeded
  • max_mode doubles the price and only applies in custom mode
  • Failed tasks are refunded
  • Lyric timings (aligned-lyrics) are free
Per-action prices are in the price table on each model’s detail page.

Errors

When a request isn’t accepted, you get a non-2xx status code and a JSON error:
Gateway errors such as an invalid token or an unavailable model put the message in an error object:
If the task was accepted but failed, the fetch result has status set to FAILURE with the reason in fail_reason.

Next steps

Suno Quickstart

Generate your first song, pick a model version, write your own lyrics

Suno Workflow Guide

Full songs, reworks, stems, reusable voices and other common flows