Mureka AI Mureka V9 Generate Song API Documentation

Mureka AI Mureka V9 Generate Song API Documentation

Playground

Try it on WaveSpeedAI!

Mureka AI V9 Generate Song is a fast AI music generation model that creates high-quality songs via the official Mureka API. Ready-to-use REST inference API for AI song generation, lyrics-to-music workflows, vocal music creation, demo production, creative audio projects, and professional music generation with simple integration, no coldstarts, and affordable pricing.

Features

Mureka AI V9 Generate Song creates full songs from lyrics with optional style guidance and optional reference inputs for melody, vocals, or overall musical direction. It is suitable for songwriting, demo generation, vocal-guided creation, and fast music prototyping workflows.


Why Choose This?

  • Lyrics-to-song generation Turn written lyrics into complete song outputs with minimal setup.

  • Optional style prompting Add a prompt to guide genre, mood, instrumentation, arrangement, or production style.

  • Reference-based control Use optional reference_id, vocal_id, or melody_id inputs to steer the result more precisely.

  • Multiple generations per run Generate up to 3 songs in a single request with number_of_songs.

  • Flexible output formats Export generated songs as mp3, wav, or flac.

  • Simple pricing Pricing depends only on how many songs you generate.


Parameters

ParameterRequiredDescription
lyricsYesLyrics for the generated song. Official limit: up to 3000 characters.
promptNoOptional style prompt for the song. Official limit: up to 1024 characters.
number_of_songsNoNumber of generations. Range: 1–3. Default: 1.
output_formatNoOutput audio format after re-uploading to WaveSpeed CDN. Supported values: mp3, wav, flac. Default: mp3.
reference_idNoOptional Mureka uploaded reference file ID.
vocal_idNoOptional Mureka uploaded vocal file ID.
melody_idNoOptional Mureka uploaded melody file ID.

How to Use

  1. Write your lyrics — provide the lyrics you want to turn into a song.
  2. Add a style prompt (optional) — describe genre, mood, instrumentation, tempo, or production feel.
  3. Add references (optional) — use reference_id, vocal_id, or melody_id if you want more control over the result.
  4. Set number of songs — choose how many generations you want, from 1 to 3.
  5. Choose output format — select mp3, wav, or flac.
  6. Submit — run the model and download the generated songs.

Example Prompt

Emotional pop ballad with piano, warm strings, cinematic chorus, expressive female vocal, polished modern production


Pricing

Pricing is based on number_of_songs.

Number of SongsCost
1$0.045
2$0.09

Billing Rules

  • Each generated song costs $0.045
  • Total price = $0.045 × number_of_songs
  • prompt, output_format, reference_id, vocal_id, and melody_id do not affect pricing

Best Use Cases

  • Songwriting demos — Quickly turn lyrics into draft songs for evaluation and iteration.
  • Style exploration — Test the same lyrics across different genres, moods, and arrangements.
  • Reference-guided generation — Use melody or vocal references to guide the resulting song.
  • Content creation — Generate original song material for videos, social content, and creative projects.
  • Music ideation — Explore multiple song directions in a single run with number_of_songs.

Pro Tips

  • Keep lyrics clearly structured with verses, choruses, and bridges when possible.
  • Use the style prompt to specify genre, instrumentation, vocal tone, tempo, and production feel.
  • Increase number_of_songs when you want multiple variations from the same lyrics.
  • Use reference_id, vocal_id, or melody_id only when you want tighter guidance over the output.
  • Start with mp3 for convenience, then use wav or flac when higher-quality output matters more.

Notes

  • lyrics is required.
  • number_of_songs supports values from 1 to 3.
  • lyrics supports up to 3000 characters.
  • prompt supports up to 1024 characters.
  • output_format defaults to mp3.
  • Pricing depends only on number_of_songs.
  • The IDs must be from official Mureka ID.

  • Mureka AI Stem Song — Process songs into stem-based outputs for remixing, editing, and production workflows.

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",
  "number_of_songs": 1,
  "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/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=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 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) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
lyricsstringYes--Lyrics for the generated song. Official limit: up to 3000 characters.
promptstringNo-Optional style prompt for the song. Official limit: up to 1024 characters.
number_of_songsintegerNo11 ~ 3Number of generations. Mureka charges per generated item.
output_formatstringNomp3mp3, wav, flacOutput audio format after re-uploading to WaveSpeed CDN.
reference_idstringNo--Optional Mureka uploaded reference file ID.
vocal_idstringNo--Optional Mureka uploaded vocal file ID.
melody_idstringNo--Optional Mureka uploaded melody file ID.

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.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
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.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
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.