MiniMax
MiniMax Music 3
minimax-music-3
Just input lyrics and a music description to generate a stereo song up to about 5 minutes long, complete with vocals and full song structure—ideal for quickly producing song demos and custom soundtracks.
Try minimax-music-3
Input
Showcases
View all showcasesOutput
audioPricing
minimax-music-3 per second
| Unit Price | $0.0026 |
|---|
Positioning Overview
minimax-music-3 is a text-to-music model released by MiniMax, available through the unified HiAPI.ai interface. By inputting lyrics and a music description, it generates a fully formed song with vocal performance and complete arrangement, supporting section structures such as intro, verse, chorus, bridge, and outro, with each generation controllable to within a few minutes. It is suitable for developers and content teams that need to produce song demos in bulk, create custom background music, or turn existing lyrics into audio.
Key Highlights
- Dual input control via lyrics and description — lyrics are annotated line by line with section tags, while the description text can specify genre, BPM, key, and vocal style, so structure and style are controlled separately.
- Complete song form rather than a music snippet — the generated result includes a systematic section arrangement from intro to outro, paired with vocal performance, and can serve directly as a prototype of a finished song.
- Layered architecture balances structure and vocal detail — the global layer handles long-range song-form progression, while the local layer handles frame-level acoustic detail, making section transitions in long audio more stable.
- Duration upper bound settable in seconds — the duration parameter supports 1 to 300 seconds, and the model may finish early, making it easy to control output according to the length of your material.
Capabilities
Structured song-form generation: automatically arranges intro, verse, pre-chorus, chorus, bridge, instrumental section, and outro; writing tags per line in the lyrics specifies section assignment, and unannotated lines are discarded, so lyrics need to be formatted in advance.
Conditional control of musical attributes: the prompt can describe genre, BPM, key, emotional progression, instrumentation, and vocal details; the more specific the description, the more precise the style control, making it suitable for batch creation that requires a stable stylistic identity.
Duration upper-bound setting: duration sets the upper limit of generation length in seconds, defaulting to 60 seconds with a range of 1 to 300 seconds; the model may end early, making it convenient to match output to the length of a video or podcast segment.
Reproducible generation: a seed parameter is provided, and the same input with a fixed seed can reproduce the same result; if omitted, a random seed is used, which is suitable for comparing different descriptions or for version management.
Fixed audio output specification: output is 32 kHz, 16-bit stereo WAV, which can go directly into editing or mixing workflows without additional transcoding.
Use Cases
- Musicians quickly producing song demos — input complete lyrics and a style description to get a prototype of a finished song with vocals and arrangement, used to show direction to a team or client.
- Custom scoring for video and game teams — generate background music based on BPM and emotional description, set the duration to match the footage length, and place it directly into editing or game audio tracks.
- Turning existing lyrics into songs — organize written lyrics with section tags, input them, and pair them with a style description to turn them into a listenable vocal version.
- Batch exploration by genre and mood — use a fixed seed with multiple description sets to compare generation results across genres and keys, quickly screening usable material.
Limitations and Selection Advice
Fidelity to non-Western music styles is limited, and strongly stylized prompts may deviate from expectations; the model card does not state multilingual singing capability, so non-English lyrics should be validated on a short sample first. A single generation is capped at about 5 minutes, and output is fixed as 32 kHz, 16-bit stereo WAV with no other sample rate or encoding options. If you need longer complete works or strict multilingual singing, validate the effect on a short segment first before deciding whether to adopt it.
What's new
View changelog →- New model New model: minimax-music-3
Create a generation task
https://api.hiapi.ai/v1/tasks Headers
AuthorizationstringRequiredAccount API key. Required on every request. Example: Bearer YOUR_HIAPI_API_KEY. Get your API key
Content-TypestringOptionalThe request body is always parsed as JSON; when sent, only application/json (optionally with charset) is accepted — any other value returns 415. Example: application/json.
Idempotency-KeystringOptionalIdempotency key, up to 255 bytes. Retries with the same key from the same account create the task only once; replays return the original taskId.
On network timeouts or client retries, the same key creates the task only once — no double charges (scope: the API key's account). Use a business-unique identifier as the key (e.g. "order-42"); replays return the original taskId, and keys expire 24 hours after the first request. See the Unified Async API overview for the full scenario matrix.
Body
modelstringRequiredCurrent fixed value: minimax-music-3
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for minimax-music-3 and route default — see the parameter table below.
seedintegerOptionalRandom seed for reproducible results; use an integer, a random seed is used when omitted.
lyricsstringRequiredLyrics text to be sung; structural tags such as [intro], [verse], [chorus], etc. must each occupy their own line; body text on the same line as a tag will be discarded.
promptstringRequiredMusic description used to specify style, mood, vocals, instrumentation, and arrangement; for precise control, it can include genre, BPM, key, mood progression, vocal details, and section-by-section arrangement.
durationnumberOptionalDefault: 60min 1max 300Maximum duration of the generated audio in seconds; the model may end early. Default is 60 seconds.
callbackobjectOptional
Terminal-state notification config. When omitted, no callback is delivered — poll the task yourself. See the callback note below.
Provide callback.url when creating a task and HiAPI POSTs to your service once the task reaches a terminal state — no polling needed. The callback payload mirrors the task detail structure; signature verification, delivery retries and idempotency are documented on the Unified Async API overview page.
urlstringRequiredRequired when callback is present. A POST is sent to this URL once the task reaches a terminal state; must be a valid http(s) URL.
whenstringOptionalDefault: "final"Only final is supported today — notified on both success and fail.
finalstoragestringOptionalDefault: "temp"Artifact storage tier: temp (default, retained about 7 days) or persistent (long-term, billed by size). Insufficient balance or exceeding the storage cap silently downgrades to temp; the effective tier is shown in the task detail response.
temppersistentRequest examples
# Submit an async task; returns a taskId immediately (no waiting for generation)
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax-music-3",
"input": {
"lyrics": "…",
"prompt": "…",
"duration": 60
}
}' const res = await fetch("https://api.hiapi.ai/v1/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HIAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "minimax-music-3",
input: {
"lyrics": "…",
"prompt": "…",
"duration": 60
}
}),
});
const task = await res.json();
// { code: 200, message: "success", data: { taskId } } import os, requests
res = requests.post(
"https://api.hiapi.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"},
json={
"model": "minimax-music-3",
"input": {
"lyrics": "…",
"prompt": "…",
"duration": 60
}
},
)
print(res.json()) # { code, message, data: { taskId } } 200 OK
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR"
}
} 400 Bad Request
{
"code": 400,
"message": "invalid request",
"data": null,
"error_code": "INVALID_REQUEST"
} Get task detail
https://api.hiapi.ai/v1/tasks/:id Response fields
taskIdstringRequiredTask ID, always prefixed with tk-hiapi-.
modelstringRequiredResolved full model name. Tasks submitted with the route parameter return base@route (e.g. gpt-image-2/text-to-image@ext); otherwise identical to the name passed at creation.
routestringOptionalPresent only when the task was submitted with an explicit route parameter; echoes the submitted value.
statusstringRequiredTask status.
queued Queued, not started yet.
handling Being processed.
archiving Processing finished, artifacts being prepared.
success Terminal: completed, artifacts available (output returned).
fail Terminal: failed (error returned).
After submission, check status: success and fail are terminal, everything else is non-terminal. Poll every 1–3 seconds until terminal. On success, download artifacts from output[].url and transfer them before expireAt; pass storage: "persistent" at creation time when long-term retention is needed.
creatednumberRequiredTask creation time (Unix seconds).
completednumberRequiredUnix seconds when the task reached a terminal state; fixed to 0 while not terminal.
outputarrayOptional
Present only when status == success. Artifact list — always an array; a single task may return multiple types at once (e.g. video + first_frame).
Array [ object ]
Array items
urlstringRequiredArtifact URL, directly downloadable.
typestringRequiredCurrent possible values: video, image, audio, first_frame, last_frame, thumbnail; more may be added later.
expireAtnumberRequiredUnix seconds until which the artifact remains accessible; download or transfer before it expires.
errorobjectOptional
Present only when status == fail.
codestringRequiredBusiness error code.
messagestringRequiredError description.
Response examples
Success
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR",
"model": "happyhorse-1-0",
"status": "success",
"created": 1777282033,
"completed": 1777282099,
"output": [
{
"url": "https://cdn.hiapi.ai/tasks/.../video.mp4",
"type": "video",
"expireAt": 1777886899
}
]
}
} Processing (non-terminal)
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "archiving",
"created": 1777282033,
"completed": 0
}
} Failed
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "fail",
"created": 1777282033,
"completed": 1777282099,
"error": {
"code": "TASK_FAILED",
"message": "task failed"
}
}
} Articles
View all articles →Related Models
View all models →Same Type
-
Qwen Audio 3.0 TTS Alibaba $0.030 /1,000 characters -
Mirelo SFX 2.0 Mirelo AI $0.021 /second -
Lyria 3 Pro Google $0.140 /song -
Lyria 3.5 Google $0.090 /song -
ElevenLabs ElevenLabs $0.0029 /second -
Mureka 9.5 Mureka $0.322 per request -
MiniMax Music 1.5 MiniMax $0.070 /song -
Gemini 3.1 Flash TTS Google -- -
MiniMax Music 2.6 MiniMax $0.210 /song



