Guides

    generate_lyrics returns words, not a Suno track

    Lyric generation is one text job. Hitting generate_music because you wanted to 'hear it' spends a track credit on unreviewed lines.

    Versely Team4 min read

    generate_lyrics returns words. It does not return a song. It does not extend a song, cover a song, or split stems. If you wanted audio and you ran this, you have a poem and an unpaid music bill. If you wanted to check the lines first and you ran generate_music anyway, you have a track whose lyrics you cannot edit without generating again.

    Write song lyrics is the named agent job. Give a theme. Get lyric text. No audio model runs. The tagline is the point of the row: get the words before you commit to a track.

    The required param is a prompt. That is the entire tool. Review the lines. Change a chorus. Then ask to turn them into a full song.

    What the job is

    Standalone lyrics from a theme — an upbeat road-trip chorus, a slow breakup verse, whatever you brief. Output is text, saved as text. It is a drafting step the AI music generator will not give you for free inside a generate, because a generate is a generate.

    This step is priced as text, not as a music model. Check your plan for how that lands; do not treat it as "a cheap Suno." Treat it as the pass that keeps you from buying a vocal you will never ship.

    When you are happy, generate a song from a prompt is generate_music. That is the audio job. Lyrics here do not auto-become that job.

    What it is not

    • A track. generate_music is genre, vocal, length, a file you can attach to video. Prompting lyrics with "make it sound like lo-fi" does not produce lo-fi. It produces more words about lo-fi.
    • An extension. Extend a song needs an audioId from a prior generate. You cannot extend text.
    • A cover. Create a cover needs a track URL. Lyrics are not a URL.
    • A voiceover or a podcast. Speech tools speak copy. Lyric structure is not a VO script, and feeding lyric output into TTS because "it's words" is a different named job you should choose on purpose, not by accident.

    Running the music model "just to hear the chorus" is the usual leak. You will keep the take you did not approve because you already paid for it. That is how unreviewed lines ship.

    The test

    Do you need to read the song before anyone hears it?

    Yes: this job. Theme in, lyrics out, edit in chat.

    If you already signed off on lines (yours or these) and you want audio, leave. Name generate_music. Confirm the music model. Spend the track credit once.

    Write song lyrics exists so those two confirms stay two confirms.

    FAQ

    If lyrics are "just text," why is this a capability at all?

    Because the default instinct is to skip to audio. The capability is a named brake. It is also the only row whose output is editable as copy rather than as a waveform.

    Can I paste lyrics into generate_music in the same message and skip this?

    You can, if you already have lines you trust. Then you never needed this job. If you do not have lines, a combined ask still spends the music credit on a first draft. That is the waste.

    Does this create a Suno task I can extend later?

    No. There is no audioId. Extension and stems require a generated track. Lyrics are upstream of that id.

    Will the agent automatically generate the song after I like the lyrics?

    Only if you ask. The jobs are separate on purpose. Approval of text is not consent to a music model.