Mureka AI Mureka V9.5 Generate Song API Documentation

Mureka AI Mureka V9.5 Generate Song API Documentation

Playground

Try it on WaveSpeedAI!

Mureka 9.5 Generate Song creates complete AI songs from prompts and lyrics via the Mureka official API, supporting vocal tracks, instrumentals, songwriting demos, music production, and creative audio workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Mureka V9.5 Generate Song creates one complete song from supplied lyrics. You can optionally guide the musical style with a prompt, choose the output format, or use existing Mureka reference, vocal, and melody IDs for more controlled generation.


Why Choose This?

  • Lyrics-to-song generation
    Generate a complete song from provided lyrics.

  • Optional style guidance
    Use prompt to describe genre, mood, instrumentation, tempo, vocal direction, or production style.

  • Reference ID support
    Use existing reference, vocal, or melody IDs to guide the final track.

  • Multiple output formats
    Choose mp3, wav, or flac based on your workflow needs.

  • Simple music workflow
    Provide lyrics, add optional guidance, and generate a full song in one request.


Parameters

ParameterRequiredDescription
lyricsYesSong lyrics. Maximum length: 5000 characters.
promptNoOptional style prompt describing genre, mood, instruments, tempo, vocal style, or production direction.
output_formatNoOutput audio format: mp3, wav, or flac.
reference_idNoExisting Mureka reference file ID used to guide the song style or audio direction.
vocal_idNoExisting Mureka vocal file ID used to guide the vocal identity or singing style.
melody_idNoExisting Mureka melody file ID used to guide the melody direction.

How to Use

  1. Enter lyrics — Provide the lyrics for the song.
  2. Add a style prompt optional — Describe the genre, mood, instruments, tempo, vocal style, or production direction.
  3. Add reference IDs optional — Use reference_id, vocal_id, or melody_id when you want stronger control.
  4. Choose output format — Select mp3, wav, or flac.
  5. Submit — Generate the song and retrieve the output URL.

Pricing

Pricing is fixed at $0.225 per song.

OutputCost
One generated song$0.225

Each request generates one song. output_format, reference_id, vocal_id, and melody_id do not add separate charges.


Best Use Cases

  • Song generation from lyrics — Turn written lyrics into a complete track.
  • Demo production — Create quick song demos from draft lyrics and style prompts.
  • Vocal-guided generation — Use a vocal_id when a specific vocal direction is needed.
  • Melody-guided generation — Use a melody_id to guide the musical contour or theme.
  • Reference-based music creation — Use reference_id to guide the style or arrangement direction.
  • Content and media workflows — Generate songs for videos, campaigns, social content, or creative projects.

Pro Tips

  • Use structured lyrics with sections such as verse, chorus, bridge, or outro for clearer arrangement.
  • Add a style prompt when genre, mood, tempo, or instrumentation matters.
  • Use reference_id when you want the song to follow an existing reference direction.
  • Use vocal_id when vocal identity or singing style matters.
  • Use melody_id when the melody direction should follow an existing melody reference.
  • Choose mp3 for compact delivery, or wav / flac when higher-quality audio files are needed.

Notes

  • reference_id and melody_id can be prepared with Create Upload ID.
  • vocal_id can be created with Vocal Clone.
  • Use IDs from compatible Mureka workflows to avoid reference mismatch.
  • Changing output_format does not add a format surcharge.

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'
{
  "lyrics": "Waves rise softly under the morning light",
  "output_format": "mp3"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/mureka-ai/mureka-v9.5/generate-song" \
  -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
lyricsstringYes--Lyrics for the generated song. Official limit: up to 5000 characters.
promptstringNo-Optional style prompt for the song. Official limit: up to 1024 characters.
output_formatstringNomp3mp3, wav, flacOutput audio format after re-uploading to WaveSpeed CDN.

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.