MiniMax Music 3.0 API: Python Wrapper for Text-to-Music Generation

August 19, 2026 · View on GitHub

Powered by MuAPI

PyPI version GitHub stars License: MIT Python 3.7+

A clean, standalone Python SDK for MiniMax Music 3.0, delivered via muapi.ai. Generate a fully arranged, mixed song — or its instrumental twin — from a style prompt and a set of lyrics in a single API call.

🚀 Why Use MiniMax Music 3.0 API?

MiniMax Music 3.0 generates a complete song — not a loop, not a stem — in one request.

  • Full song generation: Verse/chorus structure, instrumentation, and a mixed/mastered vocal (or instrumental) track from a single call.
  • Structured lyrics input: Control line breaks, pauses, and instrumental sections with a small, explicit formatting syntax.
  • Vocal or instrumental: Toggle is_instrumental to render the identical arrangement with or without vocals — useful for karaoke tracks or sync deliverables.
  • Configurable audio quality: Choose bitrate and sample_rate to match your delivery pipeline.
  • Developer-first: Simple Python SDK, fast turnaround via MuAPI's infrastructure, no per-provider account setup.

🌟 Key Features

  • Text-to-Music: Generate a complete song from a style description and lyrics.
  • Lyrics formatting: Single newline for a new line, double newline for a pause, ## to mark an instrumental section.
  • Instrumental toggle: is_instrumental=True renders the same arrangement without vocals.
  • Bitrate control: 60000, 32000, 64000, 128000, or 256000 (default 256000).
  • Sample rate control: 16000, 24000, 32000, or 44100 Hz (default 44100).
  • Blocking helper: generate_and_wait() submits and polls in one call, returning the final audio URL.

🛠 Installation

pip install minimax-music-3-api

From Source

git clone https://github.com/SamurAIGPT/minimax-music-3-api.git
cd minimax-music-3-api
pip install -r requirements.txt

Configuration

Create a .env file in the root directory and add your MuAPI API key:

MUAPI_API_KEY=your_muapi_api_key_here

💻 Quick Start (Python)

from minimax_music_3_api import MiniMaxMusic3API

api = MiniMaxMusic3API()

# 1. Generate a song
print("Generating song with MiniMax Music 3.0...")
submission = api.generate(
    prompt="an upbeat synth-pop anthem with driving drums and a soaring chorus",
    lyrics="[Verse]\nWalking through the city lights\n\n##\n[Chorus]\nWe are shining, we are free",
)

# 2. Wait for completion
result = api.wait_for_completion(submission["request_id"])
audio_url = api.extract_audio_url(result)
print(f"Success! Listen to your song here: {audio_url}")

# ...or do both in one call:
audio_url = api.generate_and_wait(
    prompt="an upbeat synth-pop anthem with driving drums and a soaring chorus",
    lyrics="[Verse]\nWalking through the city lights\n\n##\n[Chorus]\nWe are shining, we are free",
)

📡 API Reference

Base URL: https://api.muapi.ai/api/v1 Endpoint: POST /minimax-music-3.0

curl --location --request POST "https://api.muapi.ai/api/v1/minimax-music-3.0" \
  --header "Authorization: Bearer YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data-raw '{
      "prompt": "an upbeat synth-pop anthem with driving drums and a soaring chorus",
      "lyrics": "[Verse]\nWalking through the city lights\n\n##\n[Chorus]\nWe are shining, we are free",
      "is_instrumental": false,
      "bitrate": 256000,
      "sample_rate": 44100
  }'

Lyrics formatting rules

SyntaxEffect
\n (single newline)New line within a section
\n\n (double newline)Pause / section break
##Marks a point where instrumental accompaniment should be layered in

Parameters

ParameterTypeOptionsDefaultRequiredDescription
promptstringYesStyle, mood, tempo, and instrumentation description
lyricsstring10–3000 charsYesSong lyrics using the formatting rules above
is_instrumentalbooleantrue / falsefalseNoRender an instrumental-only version of the same arrangement
bitrateint60000 32000 64000 128000 256000256000NoOutput audio bitrate
sample_rateint16000 24000 32000 4410044100NoOutput sample rate (Hz)

Polling for results

import time
import requests


def wait_for_result(request_id, api_key, poll_interval=5, timeout=300):
    start = time.time()
    while time.time() - start < timeout:
        result = requests.get(
            "https://api.muapi.ai/api/v1/predictions/{}/result".format(request_id),
            headers={"Authorization": "Bearer {}".format(api_key)},
        ).json()
        if result["status"] == "completed":
            return result
        if result["status"] == "failed":
            raise RuntimeError(result.get("error", "Generation failed"))
        time.sleep(poll_interval)
    raise TimeoutError("Generation timed out")

Response

{
  "status": "completed",
  "output": {
    "audio": "https://cdn.muapi.ai/output/minimax-music-3.0/abc123.mp3"
  }
}

🎤 Vocal + Instrumental Pair Example

Generate a matching instrumental track for the same song by resubmitting with is_instrumental=True:

from minimax_music_3_api import MiniMaxMusic3API

api = MiniMaxMusic3API()

prompt = "warm acoustic folk ballad, fingerpicked guitar, gentle upright bass, intimate vocal"
lyrics = "[Verse]\nWe walked the road where the pines grow tall\n\n##\n[Chorus]\nHome isn't a place, it's a feeling we made"

vocal_url = api.generate_and_wait(prompt=prompt, lyrics=lyrics, is_instrumental=False)
instrumental_url = api.generate_and_wait(prompt=prompt, lyrics=lyrics, is_instrumental=True)

print(f"Vocal:       {vocal_url}")
print(f"Instrumental: {instrumental_url}")

See examples/basic_usage.py and examples/instrumental_example.py for runnable scripts.


📖 Documentation & Guides

For prompt engineering, lyrics-formatting tips, and a curated song-prompt library, see awesome-minimax-music-3-prompts.

MethodParametersDescription
generateprompt, lyrics, is_instrumental, bitrate, sample_rateSubmit a MiniMax Music 3.0 generation request.
generate_instrumentalprompt, lyrics, bitrate, sample_rateConvenience wrapper for generate(..., is_instrumental=True).
generate_and_waitsame as generate plus poll_interval, timeoutSubmit and block until the audio URL is ready.
get_resultrequest_idCheck the status/result of a submitted request.
wait_for_completionrequest_id, poll_interval, timeoutBlocking helper that polls until the task completes or fails.
extract_audio_urlresultStatic helper to pull the hosted audio URL out of a completed result.

🔗 Official Resources

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


Keywords: MiniMax Music 3.0, text-to-music API, AI music generator, AI song generator, lyrics-to-song API, MuAPI, Python music SDK, AI audio generation, generative music API, AI music composition, text-to-audio API.