GPT Image 2.5 is LIVE — Flare & Sunburst | Try in Image Generator →

minimax/

MiniMax Music v1.5 turns text prompts into high-quality, diverse music (Text-to-Audio) using advanced AI for versatile tracks. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

text-to-audio
Input
Enable Safety Checker

Idle

$0.03per run·~33 / $1

ExamplesView all

[verse]Radio static, hadn't smiled in a while. A forgotten song came on, and blew away my care.[chorus]That one song changed it all. The hope a simple melody can bring. Lifts you up and makes you strong, three minutes where you belong.

[verse]The bourbon burns, a trail of fire. Each sip, a memory of desire. The neon hums a low, sad tune beneath this cold, uncaring moon.[chorus]Oh, these barroom blues, a heavy chain. Each link forged in your pouring rain. The smoky haze can't hide my pain, just your ghost whispering my name.

[verse]The clock on the wall stands still. Time's a poison I'm forced to spill. Every shadow dances with grace, just to mock the sorrow on my face.[chorus]Oh, these barroom blues, a lonely ache for a love that was a mistake. The fading afternoon light plays the final verse of our sad tune.

[verse]The smell of stale beer and regret, a tangled web I can't forget. The old piano's missing a key, just like the missing part of me.[chorus]Oh, these barroom blues, a swirling storm, trying to keep my shattered pieces warm. Every song's a nail in the coffin lid for the love I foolishly hid.

[verse]Bass is kicking, lights are low. Got my friends here, ready to go. Feel the energy in the air tonight, everything is shining so bright.[chorus]Oh, we're dancing 'til the sun comes up. Pour the good times in my cup. Worries fade and disappear, 'cause the best night of the year is here.

[verse]Woke up this morning, felt the call. To leave the concrete, stand up tall. With a backpack and a faded map, I won't ever look back.[chorus]Oh, the mountains sing a song for me. Underneath the canopy. Every river bend and soaring hawk shows me how to really talk, to really be.

[verse]No alarm clock, sun is high. Just watching all the clouds drift by. The coffee's brewing, slow and sweet. Got no plans and no one to meet.[chorus]Oh, this quiet and this easy pace, a simple smile upon my face. The world can rush, the world can spin. But today I'm just soaking it all in.

Related Models

README

MiniMax Music v1.5 — AI Music & Lyric Generator

minimax/music-v1.5 is an end-to-end music generator that creates catchy songs from short style cues and structured lyrics. Provide a lyrics_prompt for mood/genre guidance and a prompt with sectioned lyrics, and the model returns a complete track with vocals and instrumental backing.

What It Does

  • Genre & mood control via lyrics_prompt (e.g., "pop, upbeat, inspirational, feel-good").
  • Structured songwriting from your prompt using labeled sections like [verse], [chorus], [bridge].
  • Full mix output with lead vocal + accompaniment rendered as a single track.

Parameters

ParameterRequiredDescription
lyrics_promptYesShort style tags and mood descriptors.
promptYesYour lyrics with explicit section markers (max 600 characters).

lyrics_prompt Examples

  • pop, upbeat, summer vibes
  • indie folk, intimate, acoustic
  • EDM, energetic, festival drop

Supported Section Tags

[intro], [verse], [pre-chorus], [chorus], [post-chorus], [bridge], [outro], [build]

Format Example

[verse] Radio static, hadn't smiled in a while. A forgotten song came on, and blew away my care.

[chorus] That one song changed it all. The hope a simple melody can bring. Lifts you up and makes you strong, three minutes where you belong.

How to Use

  1. Set lyrics_prompt — list genre, tempo/energy, mood (comma-separated).
  2. Compose prompt — paste your lyrics using section tags (up to 600 characters).
  3. Keep sections short (2–4 lines) for cleaner phrasing and hooks.
  4. Click Run — receive a mixed audio track ready to preview and download.

Best Use Cases

  • Original Music Creation — Generate complete songs for personal projects or demos.
  • Content Creators — Create custom background music and jingles for videos.
  • Songwriting Inspiration — Explore melodies and arrangements for your lyrics.
  • Marketing & Advertising — Produce catchy tunes for campaigns and ads.
  • Learning & Experimentation — Explore different genres and song structures.

Pricing

OutputPrice
Per song$0.03

Ready-to-Copy Templates

Pop / Feel-Good

lyrics_prompt: pop, upbeat, catchy, summer, feel-good

prompt: [intro] Sun on my face, wheels on the road. [verse] Left all my worries in the rearview mirror, chasing the light as the skyline gets nearer. [pre-chorus] Heart on the beat, road under my feet. [chorus] We're wide awake tonight—sing it out, lights are in our eyes. Every mile feels right—turn it up, let the world go by.

Indie Folk / Intimate

lyrics_prompt: indie folk, acoustic, warm, reflective

prompt: [verse] Coffee steam and open windows, morning writes across the floor. [chorus] If home is where the quiet grows, I'll find it in your voice once more.

EDM / Festival

lyrics_prompt: EDM, energetic, anthemic, festival drop

prompt: [verse] Hands up, heartbeat running wild, neon rivers in the night. [build] Count it down—4, 3, 2— [chorus] We break like thunder, we're lightning undercover; let the sky remember our names tonight!

Notes

  • Avoid overly long paragraphs; 2–4 lines per section yields cleaner melodies.
  • If an error occurs, simplify the prompt (fewer tags, clearer mood) and try again.
  • Ensure the prompt length has at most 600 characters.
Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Music v1.5 API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/minimax/music-v1.5 with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Music v1.5 below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "lyrics_prompt": "blues, melancholic, raw, lonely bar, heartbreak.",
    "prompt": "A cinematic shot of a city at sunset, soft golden light"
}
JSON
)

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

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; 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 has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  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
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/minimax/music-v1.5";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "lyrics_prompt": "blues, melancholic, raw, lonely bar, heartbreak.",
        "prompt": "A cinematic shot of a city at sunset, soft golden light"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "lyrics_prompt": "blues, melancholic, raw, lonely bar, heartbreak.",
    "prompt": "A cinematic shot of a city at sunset, soft golden light"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/minimax/music-v1.5", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

Music v1.5 API — Frequently asked questions

What is the Music v1.5 API?

Music v1.5 is a MiniMax model for audio generation, exposed as a REST API on WaveSpeedAI. MiniMax Music v1.5 turns text prompts into high-quality, diverse music (Text-to-Audio) using advanced AI for versatile tracks. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Music v1.5 API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/minimax/minimax-music-v1.5.

How much does Music v1.5 cost per run?

Music v1.5 starts at $0.030 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Music v1.5 accept?

Key inputs: `prompt`, `lyrics_prompt`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/minimax/minimax-music-v1.5.

How long does Music v1.5 take to generate?

Median end-to-end generation time on WaveSpeedAI is around 85 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Music v1.5 outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (MiniMax). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Music V1.5 | Realistic Voice & TTS API on WaveSpeedAI