MiniMax Music 1.5 API
/v1/tasks All models are called through the Unified Async API POST /v1/tasks endpoint; only the input fields differ (see input parameters below).
Model summary
| Model name | minimax-music-1.5 |
|---|---|
| Type | Audio generation (text-to-music) |
| Endpoint | POST /v1/tasks |
| Pricing | See HiAPI Pricing |
MiniMax Music 1.5: full songs up to 4 minutes with natural vocals and rich instrumentation, English or Chinese lyrics, structure tags, billed per song.
Production guidance
- For production, pass callback.url at the top level of the request body so HiAPI can notify your service when the task reaches a terminal state.
- GET /v1/tasks/:id is better for local debugging, low-volume jobs, or fallback reconciliation if a callback is missed.
- Use callback.when=final. Both success and fail are terminal states, so your service should deduplicate by taskId.
Best suited for
Complete songs up to ~4 minutes in one pass — vocals, harmonies and arrangement, not just BGM loops.
promptlyricsSings naturally in both languages with clear diction — short-video soundtracks or brand jingles.
lyrics[intro][verse][chorus][bridge][outro] tags shape the song structure with distinct verse/chorus dynamics.
lyricsPrice is independent of duration — long or short, one flat rate per song.
promptRequest parameters
model string required Fixed value minimax-music-1.5.
input object required Business parameters. Put MiniMax Music 1.5-specific configuration here.
prompt string required Text prompt controlling the music style (genre, mood, instrumentation). 10-300 characters.
lyrics string required Song lyrics, one line per phrase (use \n to separate). Supports structure tags [intro][verse][chorus][bridge][outro]. 10-600 characters.
audio_format enum optional Output audio format.
bitrate enum optional Audio bitrate in bps.
sample_rate enum optional Audio sample rate in Hz.
callback object optional Optional callback configuration. When set, HiAPI notifies your service when the task reaches a terminal state.
url string required Required when callback is set; HTTPS URL that receives terminal task notifications.
when enum optional Callback trigger timing. Use final.
Example requests
Healing female-vocal ballad, Chinese lyrics — verified run.
{
"model": "minimax-music-1.5",
"input": {
"prompt": "warm acoustic Chinese folk-pop ballad, gentle female vocals, fingerstyle guitar and soft strings, healing and nostalgic mood",
"lyrics": "[verse]\n晨光洒进老街的窗\n豆浆的雾气慢慢上扬\n单车铃声穿过小巷\n载着昨天的梦去远方\n[chorus]\n慢一点走 别慌张\n日子会把答案酿成糖\n慢一点走 看夕阳\n把平凡过成诗的模样",
"audio_format": "mp3"
}
}Retro 80s synths with male vocals — style contrast test.
{
"model": "minimax-music-1.5",
"input": {
"prompt": "upbeat synthwave pop with male vocals, punchy drums, retro 80s synths, neon night drive energy",
"lyrics": "[verse]\nCity lights are calling out my name\nMidnight engines humming through the rain\n[chorus]\nWe ride the neon wave tonight\nChasing every flash of light\nNever gonna slow it down\nHeartbeat louder than this town",
"audio_format": "mp3"
}
}Getting the result
- The response returns a taskId immediately without waiting for generation to finish.
- In production, prefer waiting for callback.url to receive the terminal notification. For local debugging, poll GET /v1/tasks/:id.
- When status=success, download the generated audio from output[].url.
- When status=fail, fix the request based on the returned error instead of retrying the same invalid payload.
FAQ
How long is a song? How is it billed?
Song length follows your lyrics, up to ~4 minutes (600 characters of lyrics is roughly 1 minute in our tests). Billing is per song, independent of duration. See the pricing page for live rates. View pricing
How should I write lyrics?
Separate lines with \n and sections with [verse]/[chorus] tags (10-600 characters). For the style prompt, name genre + vocal gender + instruments + mood. Longer lyrics produce longer songs.
What format is the output?
mp3 by default (256kbps/44.1kHz), with wav and pcm options; bitrate and sample_rate are adjustable.
How do I get the generated song?
The request returns a taskId immediately. When the task reaches a terminal state, download the audio from output[].url. In production, pass callback.url at the top level of the request body instead of polling.