Write lyrics

November 14, 2026

Table of contents

  1. Request Headers
  2. Request Body
  3. Responses
  4. Model
  5. Examples
  6. Try It

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
Request Body
{
  "prompt": "A short song about a cat who loves rainy days",
  "style": "acoustic indie folk"
}
  • prompt is required, what to write: the theme, the story, the mood, or a change to the given lyrics.
    Maximum length: 2000 characters.
  • style is optional, the song’s style, for lyrics that fit it.
    Maximum length: 1000 characters.
  • lyrics is optional, existing lyrics to rewrite or continue.
    Maximum length: 5000 characters.
  • title is optional, a working title.
    Maximum length: 80 characters.
  • model is optional. acemusic-v1 adds 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.
  • email is optional, the account to use. Default: any healthy account.
Responses
  • 200 OK

    {
      "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"
    }
    
  • 400 Bad Request

    A parameter is missing or invalid, or ACE Music’s writer refused the request.

    {
      "error": "Parameter prompt is required",
      "code": 400
    }
    
  • 401 Unauthorized

    Invalid API token.

    {
      "error": "useapi.net ⁝ Unauthorized",
      "code": 401
    }
    
  • 422 Unprocessable Entity

    {
      "error": "ACE Music wrote no lyrics for this request: rephrase it and try again",
      "code": 422
    }
    
  • 596 Account Error

    The account named by email is 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())
    
Try It