Write lyrics
November 14, 2026
Table of contents
Have ACE Music’s lyrics writer write lyrics and a title from a request, without making a song. It answers in about 5 to 40 seconds with [verse] / [chorus] tagged lyrics. Edit them if you like, then sing them with POST /music as lyrics with a style, which POST /music/style can write.
Send existing lyrics with a request such as “make the chorus shorter” to rewrite them, and a style for words that fit the music. With model acemusic-v1, the writer adds section headers that say how each part is played, for ACE Music v1. Nothing is kept: call it again for another version. No credits were charged for it in our tests.
https://api.useapi.net/v1/acemusic/music/lyrics
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
{
"prompt": "A short song about a cat who loves rainy days",
"style": "acoustic indie folk"
}
promptis required, what to write: the theme, the story, the mood, or a change to the givenlyrics.
Maximum length:2000characters.styleis optional, the song’s style, for lyrics that fit it.
Maximum length:1000characters.lyricsis optional, existing lyrics to rewrite or continue.
Maximum length:5000characters.titleis optional, a working title.
Maximum length:80characters.modelis optional.acemusic-v1adds section headers that say how each part is played. Other values change nothing.
Supported values:acemusic-v1,acemusic-v1.1,ace-step-1.5-xl.emailis optional, the account to use. Default: any healthy account.
Responses
-
{ "email": "[email protected]", "title": "Rainy Day Whiskers", "lyrics": "[verse]\nCurled up on the window sill\nWatching every drop spill\nPaws tucked in against the cold\nGrey skies turning into gold\n\n[chorus]\nPatter, patter on the glass\nWatching little rivers pass\nTail twitch, half-closed eyes\nSleeping under stormy skies\n\n[verse]\nThunder rolls a gentle sound\nRaindrops drumming on the ground\nSoft purr humming in my chest\nRainy days are always best\n\n[outro]\nPatter, patter, rain falls deep\nTime to curl right back to sleep" } -
A parameter is missing or invalid, or ACE Music’s writer refused the request.
{ "error": "Parameter prompt is required", "code": 400 } -
Invalid API token.
{ "error": "useapi.net ⁝ Unauthorized", "code": 401 } -
{ "error": "ACE Music wrote no lyrics for this request: rephrase it and try again", "code": 422 } -
596 Account Error
The account named by
emailis paused, or no account is healthy. Add it again with the current password.{ "error": "No healthy ACE Music account configured. Check GET /accounts", "code": 596 }
Model
{ // TypeScript, all fields are optional
email: string // the account that wrote them
title: string | null
lyrics: string // [verse] / [chorus] tagged
}
Examples
-
curl -X POST "https://api.useapi.net/v1/acemusic/music/lyrics" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer …" \ -d '{ "prompt": "A short song about a cat who loves rainy days" }' -
const token = "API token"; const response = await fetch("https://api.useapi.net/v1/acemusic/music/lyrics", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${token}` }, body: JSON.stringify({ prompt: "A short song about a cat who loves rainy days" }) }); const { title, lyrics } = await response.json(); console.log(title, lyrics); -
import requests token = "API token" response = requests.post( "https://api.useapi.net/v1/acemusic/music/lyrics", headers={"Authorization": f"Bearer {token}"}, json={"prompt": "A short song about a cat who loves rainy days"} ) print(response.status_code, response.json())