Google Lyria 3.5 Music API Documentation

Google Lyria 3.5 Music API Documentation

Playground

Try it on WaveSpeedAI!

Google Lyria 3.5 generates full-length songs up to about three minutes with expressive vocals, timed lyrics, and complete arrangements from text prompts and optional image input. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Google Lyria 3.5 is Google’s flagship music generation model for full-length songs. Describe the track you want in natural language — genre, mood, tempo, instruments, vocal style — and get a complete song of up to about three minutes with expressive vocals, timed lyrics, and a full arrangement with verses, choruses, and bridges. Write your own lyrics with section tags, or ask for an instrumental. Optionally guide the mood with a reference image.


Why Choose This?

  • Full-length songs Complete tracks of up to about three minutes with coherent structure — intro, verses, choruses, bridges, and outro.

  • Expressive vocals and timed lyrics Richer musical arrangements and more natural vocals than Lyria 3 Pro, with lyrics that follow your text closely.

  • Bring your own lyrics Add [Verse], [Chorus], and [Bridge] tags in the prompt to control the song structure, or add timestamps such as [0:00 - 0:10] Intro to shape the timeline.

  • Multilingual Write the prompt in the language you want the song sung in; the vocal style adapts to the language.

  • Image-guided generation Upload a reference image to inspire the musical mood and atmosphere.


Parameters

ParameterRequiredDescription
promptYes1-5,000 characters. Description of the song: genre, mood, tempo, instruments, vocal style. Include your own lyrics with section tags, or write “instrumental” for no vocals.
imageNoReference image to guide the mood and atmosphere of the generated song.

How to Use

  1. Write your prompt — describe the genre, tempo, instruments, mood, and vocal style.
  2. Add lyrics (optional) — paste your lyrics with [Verse] / [Chorus] / [Bridge] tags, or add timestamps to control when sections start.
  3. Upload a reference image (optional) — provide an image to inspire the musical atmosphere.
  4. Submit — generate and download your song as an MP3.

Pricing

$0.10 per generated song. Billed per generation, not per second or token.


Best Use Cases

  • Original songs — Produce complete vocal tracks for short films, ads, social content, and demos.
  • Film & Video Scoring — Generate full-length music beds and underscore for video productions.
  • Game & Interactive Media — Create atmospheric tracks and theme songs for games and apps.
  • Podcast & Streaming — Generate intro, outro, and background music with or without vocals.
  • Creative Production — Rapidly prototype song ideas, lyrics, and styles before studio work.

Pro Tips

  • Be specific about BPM, key instruments, vocal gender or style, and energy level for the most accurate results.
  • Use section tags to control structure; without them the model writes its own lyrics from your description.
  • Say how long the song should be in the prompt (for example, “a two-minute song”) to control duration.
  • Try pairing an atmospheric image with a minimal prompt to let the image drive the mood.
  • Requests for a specific artist’s voice or copyrighted lyrics are blocked by Google’s content policy.

Notes

  • Only prompt is required (1-5,000 characters); image is optional.
  • Duration is guided by the prompt, not an exact duration parameter. negative_prompt, seed, and output-format selection are not exposed.
  • The WaveSpeed result provides the generated MP3 URL in outputs; a separate lyrics response is not part of this endpoint contract.
  • Output is a 44.1 kHz stereo MP3. Every song carries an inaudible SynthID watermark.
  • Generation is not deterministic; identical prompts produce different songs.
  • Please ensure your content complies with Google’s usage policies.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/google/lyria-3.5/music" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-Describe the music: genre, mood, tempo, instruments, vocals and structure. Include original lyrics or timestamps, or request instrumental music. Length: 1-5,000 characters. Duration hints in the prompt guide generation; exact length is not guaranteed.
imagestringNo-Optional reference image URL to inspire the mood and theme of the music.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.