Minimax Music 3.0 API Documentation

Minimax Music 3.0 API Documentation

Playground

Try it on WaveSpeedAI!

MiniMax Music 3.0 generates complete songs from text prompts and lyrics, including vocals and instrumentals, with instrumental-only mode, auto lyrics generation, structure tags for song arrangement, and configurable audio quality. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

MiniMax Music 3.0 generates complete songs with vocals and instrumentals from a text prompt and lyrics. Describe the genre, mood, instruments, tempo, and production style, and the model creates a full track with support for structure tags, instrumental-only mode, auto lyrics generation, and configurable audio quality up to 256kbps / 44.1kHz.


Why Choose This?

  • Complete song generation
    Generate a full song with vocals and instrumental arrangement from a prompt and lyrics.

  • Structure tag support
    Use tags like [Verse], [Chorus], and [Bridge] to guide song structure and arrangement.

  • Auto lyrics generation
    Leave the lyrics input empty to let the model generate lyrics automatically from the prompt.

  • Instrumental mode
    Enable is_instrumental to generate a backing track without vocals.

  • Configurable audio quality
    Choose bitrate and sample rate settings up to 256000 bitrate and 44100 sample rate.

  • Wide genre support
    Generate pop, rock, folk, electronic, orchestral, lo-fi, cinematic, and other music styles from prompt instructions.


Parameters

ParameterRequiredDescription
promptYesMusic style description, including genre, mood, instruments, tempo, vocal style, and production direction. Maximum length: 2000 characters.
lyricsYesSong lyrics with optional structure tags. Length: 10–3000 characters. Pass an empty value for auto-generated lyrics.
bitrateNoAudio bitrate: 32000, 60000, 64000, 128000, or 256000. Default: 256000.
sample_rateNoAudio sample rate: 16000, 24000, 32000, or 44100. Default: 44100.
is_instrumentalNoGenerate instrumental music without vocals. Default: false.

Lyrics Structure Tags

Use structure tags in the lyrics to guide arrangement and song sections:

[Intro], [Verse], [Pre Chorus], [Chorus], [Post Chorus], [Interlude], [Bridge], [Outro], [Hook], [Build Up], [Break], [Transition], [Inst], [Solo]


How to Use

  1. Write your prompt — Describe the genre, mood, instruments, tempo, vocal style, and production direction.
  2. Enter lyrics — Add lyrics with optional structure tags such as [Verse] and [Chorus]. Leave lyrics empty for auto-generation.
  3. Choose audio quality optional — Set bitrate and sample_rate when you need a specific delivery format.
  4. Enable instrumental mode optional — Use is_instrumental when you want a backing track without vocals.
  5. Submit — Generate the song and retrieve the audio output.

Pricing

OutputCost
One generated song$0.15

Best Use Cases

  • Songwriting and demos — Turn lyrics and a style description into a complete demo track.
  • Content creation — Generate original songs or background music for videos, podcasts, and social media.
  • Music production — Use instrumental mode to create backing tracks for further production.
  • Custom soundtracks — Create original music for games, ads, short films, and branded content.
  • Creative exploration — Test different genres, moods, arrangements, and vocal styles from the same concept.

Pro Tips

  • Be specific in the prompt: include genre, tempo, instruments, vocal style, mood, and production cues.
  • Use structure tags to guide verse, chorus, bridge, intro, outro, and instrumental sections.
  • Leave lyrics empty when you want quick auto-generated lyric ideas.
  • Use is_instrumental for backing tracks, music beds, or soundtrack-style output.
  • Use higher bitrate and sample rate settings when you need higher-quality delivery.
  • Keep lyrics structured and readable for better vocal phrasing and arrangement.

Notes

  • When leaving lyrics empty for auto-generated lyrics, make sure lyrics_optimizer is enabled.
  • Use lyrics_optimizer when you want the model to generate or improve lyrics based on the music prompt.

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",
  "lyrics_optimizer": false,
  "bitrate": 256000,
  "sample_rate": 44100,
  "is_instrumental": false
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/minimax/music-3.0" \
  -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-Prompt for the music generation.
lyricsstringNo--Lyrics with optional formatting. You can use a newline to separate each line of lyrics. You can use two newlines to add a pause between lines. You can use double hash marks (##) at the beginning and end of the lyrics to add accompaniment. Valid input: 10-3000 characters.
lyrics_optimizerbooleanNofalse-true and lyrics is empty, the system will auto-generate lyrics from.
bitrateintegerNo25600060000, 32000, 64000, 128000, 256000Bitrate for the generated music
sample_rateintegerNo4410016000, 24000, 32000, 44100Sample rate for the generated music
is_instrumentalbooleanNofalse-Whether to generate instrumental music (no vocals).

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.