POST /v1/music/generations returns a task ID, status, and usually poll_url. Use that URL until the task is completed or failed.
Choose what to create
Get the current music-model list from:
suno_music with mv: "chirp-v4". For lyrics only, choose a model that documents lyric generation, send action: "LYRICS", and omit mv.
Create a music task
Get the finished audio
Usepoll_url. If your client needs a fixed URL, call GET /v1/tasks/{id} with the returned id or task_id.
Response Shape
The create response is a task record, not the final audio:status is completed. Failed tasks return status: "failed" with error.
Statuses are pending, processing, completed, and failed. A completed task can include audio_url, video_url, title, lyrics, and other metadata. Store the final URLs so users can reopen the result without generating it again.
Show the right state
- Show a pending state immediately after task creation.
- Poll every
5-10sfor long tasks, then stop oncompletedorfailed. - Do not display a final player until the task is
completedand anaudio_urlexists. - For lyric-only tasks, render text output separately from audio tasks so users understand what they are buying.
- On refresh, resume from the stored
task_idinstead of creating a new task.
Billing records
Music tasks can reserve an estimated amount when created. The final amount is recorded after completion or failure. Saverequest_id, task_id, model, endpoint, and billing_transaction_id when it appears; use Management API usage records for the final charge.