SUNOAPI / CUSTOM LYRICS

Generate a song from your lyrics with the Suno API

A lyric-to-song feature needs more than a text box. Keep the words, musical direction, and generation state independently editable.

Give each input a purpose#

Use prompt for the lyrics, tags for the arrangement, and title for the song name. A style instruction such as “soft piano and intimate vocals” belongs in tags, not in a verse.

Make structure readable#

Use verse and chorus markers to communicate the intended structure. They provide musical context, but generated timing and pronunciation remain model decisions. Preview results before publishing.

Example
[Verse]
A letter folded in my coat
A thousand things I never wrote

[Chorus]
Take the long way home with me
Past the places we could be

Send a complete custom-lyrics request#

Set SUNO_API_BASE and SUNO_API_KEY using Get started. This example sends a new paid request; keep its UUID so you can retrieve it using the task endpoint. Use actual JSON newline escapes in the lyric string.

Example
export SUNO_REQUEST_ID="$(uuidgen | tr '[:upper:]' '[:lower:]')"
curl --request POST "$SUNO_API_BASE/sonic/create" \
  --header "Authorization: Bearer $SUNO_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $SUNO_REQUEST_ID" \
  --data '{"custom_mode":true,"mv":"sonic-v6-mini","title":"The Long Way Home","tags":"acoustic folk, fingerpicked guitar, close vocals","prompt":"[Verse]\nA letter folded in my coat\nA thousand things I never wrote\n[Chorus]\nTake the long way home with me","make_instrumental":false}'

Build for iteration#

Save the lyric revision and style tags alongside each task. Let users compare results and edit a draft without losing the original generation. Label new submissions clearly because a new request can consume credits.

Use a focused musical brief#

For a first version, try “acoustic folk, fingerpicked guitar, close vocals, gentle build”. Then change one element at a time so users can understand which direction they prefer.

Review the returned performance#

Poll the saved UUID until it completes, then listen to each returned track. Compare intelligibility, line breaks, arrangement and the chorus transition. Change one input at a time and keep the lyric revision with the task. If a word is unclear, edit the phrasing before submitting a new, separately charged request.

Keep an audition note with each lyric revision#

Use the same passage when comparing returned tracks. Record a concrete observation before deciding whether another paid generation is useful. These are listening criteria, not guaranteed output properties.

Listen forRecordPossible next revision
Words and pronunciationThe exact word and playback time that was unclear.Simplify that phrase while keeping a copy of the original.
Verse and chorus contrastWhether the chorus becomes recognisable at the intended point.Clarify section markers or change the arrangement direction in tags.
Voice and accompanimentWhere the instrumental part masks the lyric.Ask for a sparser arrangement in tags rather than adding instructions inside a verse.

Limits and input rights#

Lyrics must be nonempty and at most 5,000 characters, style tags at most 1,000, and title at most 80. Submit lyrics you have permission to use. The API does not establish permission to use another writer’s words or guarantee exact pronunciation.