Star Atlas of the Buried Library · Fantasy instrumental: low strings, woodwinds and celesta trace discovery beneath a forgotten library.
MiniMax Music 2.6 Text to Audio API
minimax/music-2.6MiniMax Music 2.6 Text to Audio turns style prompts into songs and instrumentals, with custom lyrics or automatic lyric generation. Guide the arrangement through genre, instruments and section tags to develop a track around your musical idea.
Birds Return to Reed Bay
Original Mandarin folk: intimate vocals and fingerpicked guitar opening into a spacious chorus.
Examples
Music generation interface
Start a music generation request
Submit a style prompt and lyrics, then use the returned task_id to retrieve the completed audio.
Configure authentication
Use your Vidgo API key as a Bearer credential and submit the request as JSON.
- Submission endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authentication
- Authorization: Bearer <VIDGO_API_KEY>
Submit your music request
This example supplies a style prompt and custom lyrics. Replace them with your musical direction and words.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "minimax/music-2.6",
"input": {
"prompt": "Mandarin indie folk song, 82 BPM, 4/4, D major. A wetland observer watches migrating birds return to a reed-lined bay after winter. Warm intimate female alto, natural breaths, clear Mandarin diction, understated emotion rather than theatrical belting. Fingerpicked acoustic guitar and a close dry vocal begin alone; cello enters in the pre-chorus; restrained brushed drums and rounded bass support a spacious melodic chorus. Bridge briefly strips back to voice and cello, then a final fuller chorus opens like wings over water. Soft resolved guitar outro, no abrupt cutoff. Keep the supplied Chinese lyrics and section order. Organic recording, clear vocal above the instruments, warm separated low end.",
"lyrics": "[Verse]\n我把脚步放轻在木桥上\n昨夜的薄霜还留在草尖\n空了一个冬天的芦苇湾\n有一声鸣叫越过了水面\n\n[Pre Chorus]\n合上那本写满日期的手册\n抬头看见风有了形状\n\n[Chorus]\n你们回来了 掠过这片湾\n把长长的远方折成一双翅膀\n我站在岸边 不急着呼喊\n让春天先落在安静的水上\n\n[Bridge]\n去年弯下的苇秆又慢慢站起\n小小的倒影接住整片天\n我在空白一页写下今天\n有些等待终于不必计算\n\n[Chorus]\n你们回来了 掠过这片湾\n把长长的远方折成一双翅膀\n我站在岸边 不急着呼喊\n让春天先落在安静的水上\n\n[Outro]\n木桥轻轻响 风吹过衣裳\n芦苇湾留住了第一缕暖阳",
"is_instrumental": false,
"lyrics_optimizer": false,
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
}
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Check the task status
Insert the returned task_id into the status URL to check that task’s progress.
Status endpoint
GET https://api.vidgo.ai/api/generate/status/{task_id}Use the same Bearer credential to check the task. Read files when finished, or error_message when failed.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "EQD72RVTY9MDSV76",
"status": "running",
"created_time": "2026-09-27T16:25:19"
}
}{
"code": 200,
"data": {
"task_id": "EQD72RVTY9MDSV76",
"status": "finished",
"files": [
{
"file_url": "https://cdn.vidgo.ai/apis/models/minimax/music-2.6/v1/01/output.mp3",
"file_type": "audio"
}
],
"created_time": "2026-09-27T16:25:19",
"error_message": null,
"progress": 100
}
}Retrieve the audio file
When status is finished, read URLs from files entries whose file_type is audio to play or download the music.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "minimax/music-2.6",
"input": {
"prompt": "Mandarin indie folk song, 82 BPM, 4/4, D major. A wetland observer watches migrating birds return to a reed-lined bay after winter. Warm intimate female alto, natural breaths, clear Mandarin diction, understated emotion rather than theatrical belting. Fingerpicked acoustic guitar and a close dry vocal begin alone; cello enters in the pre-chorus; restrained brushed drums and rounded bass support a spacious melodic chorus. Bridge briefly strips back to voice and cello, then a final fuller chorus opens like wings over water. Soft resolved guitar outro, no abrupt cutoff. Keep the supplied Chinese lyrics and section order. Organic recording, clear vocal above the instruments, warm separated low end.",
"lyrics": "[Verse]\n我把脚步放轻在木桥上\n昨夜的薄霜还留在草尖\n空了一个冬天的芦苇湾\n有一声鸣叫越过了水面\n\n[Pre Chorus]\n合上那本写满日期的手册\n抬头看见风有了形状\n\n[Chorus]\n你们回来了 掠过这片湾\n把长长的远方折成一双翅膀\n我站在岸边 不急着呼喊\n让春天先落在安静的水上\n\n[Bridge]\n去年弯下的苇秆又慢慢站起\n小小的倒影接住整片天\n我在空白一页写下今天\n有些等待终于不必计算\n\n[Chorus]\n你们回来了 掠过这片湾\n把长长的远方折成一双翅膀\n我站在岸边 不急着呼喊\n让春天先落在安静的水上\n\n[Outro]\n木桥轻轻响 风吹过衣裳\n芦苇湾留住了第一缕暖阳",
"is_instrumental": false,
"lyrics_optimizer": false,
"audio_setting": {
"sample_rate": 44100,
"bitrate": 256000,
"format": "mp3"
}
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneRequest parameters
Set model to minimax/music-2.6 and put music parameters inside input. Add an optional HTTP(S) callback_url at the request root.
| Field | Type | Requirement | Default | Description |
|---|---|---|---|---|
| input.prompt | string | Required | 10–2000 characters describing genre, mood, instrumentation, tempo or vocal direction. | |
| input.lyrics | string | Conditional | Up to 3500 characters. Supply lyrics when both is_instrumental and lyrics_optimizer are false. For instrumental music, leave lyrics empty. | |
| input.lyrics_optimizer | boolean | Optional | false | When true and lyrics is empty, generates lyrics from prompt. Set false for instrumental music. |
| input.is_instrumental | boolean | Optional | false | Set true for instrumental music, with empty lyrics and lyrics_optimizer set to false. |
| input.audio_setting | object | Optional | Audio output settings containing sample_rate, bitrate and format. | |
| input.audio_setting.sample_rate | integer | Optional | 44100 | Sample rate in Hz. 16000, 24000, 32000, 44100 |
| input.audio_setting.bitrate | integer | Optional | 256000 | Bitrate in bits per second. 32000, 64000, 128000, 256000 |
| input.audio_setting.format | string | Optional | mp3 | Audio file format. mp3, wav, pcm |
Response fields
A successful response uses code 0 or 200 with the task object in data. On completion, read the audio files from data.files.
| Field | Type | Description |
|---|---|---|
| task_id | string | Task identifier for subsequent status checks. |
| status | string | Current task status; see Task states for its values. |
| files | object[] | List of files returned on completion. |
| files[].file_url | string | Audio file URL for playback or download. |
| files[].file_type | string | Music results use the file type audio. |
| progress | number | Task progress when included in the response. |
| error_message | string | null | Error details when a task fails. |
Task states
Save the task_id returned on submission and use it to check generation progress.
not_startedThe task is queued and waiting to begin.
runningMusic generation is in progress. Keep checking the same task.
finishedGeneration is complete. Read the audio file URLs from files.
failedThe task failed. Read error_message and review the input.
Status checks and error handling
- Check your music parametersCheck prompt and lyrics lengths, boolean values and audio settings. For instrumentals, keep lyrics empty and lyrics_optimizer false.
- Keep checking the existing taskKeep checking while the task is not_started or running. If playground checks pause, use Resume status checks.
- Handle the returned errorFor request errors, inspect the HTTP status and response message. For a failed task, read error_message and review the input before retrying.
Interface specifications
| Item | Value | Description |
|---|---|---|
| Model | minimax/music-2.6 | Use this model value when submitting a request. |
| Audio settings | 44100 Hz / 256000 bit/s / mp3 | Default output settings. |
| Output | audio | Read audio URLs from data.files when the task finishes. |
Related audio models
MiniMax Music 2.6 Text to Audio API frequently asked questions
What is the MiniMax Music 2.6 Text to Audio API?
MiniMax Music 2.6 Text to Audio is a MiniMax model that turns style prompts and lyrics into songs or instrumentals. It combines vocals and accompaniment with options for custom lyrics, automatic lyrics and instrumental composition. Prompts guide genre, tempo and instrumentation, while lyric section tags organize verses, choruses and bridges. You can call it programmatically or try it in the Playground tab.
How do I create instrumentals with MiniMax Music 2.6?
Enable Is Instrumental, leave Lyrics empty and turn Lyrics Optimizer off. Describe instruments, genre and emotional progression in Prompt, such as a piano theme, a string bed or gradually building drums.
How does MiniMax Music 2.6 generate lyrics automatically?
Enable Lyrics Optimizer, leave Lyrics empty and keep Is Instrumental off. Describe the song’s theme, narrative perspective and vocal style in Prompt to guide automatic lyric generation.
How do I use custom lyrics in MiniMax Music 2.6?
Enter up to 3500 characters in Lyrics and turn Lyrics Optimizer and Is Instrumental off. Describe genre and vocal delivery separately in Prompt to keep the words and musical direction clear.
How do section tags work in MiniMax Music 2.6?
Place [Verse], [Chorus] or [Bridge] before lyric sections and separate them with line breaks. Tags organize the song structure; the prompt describes the instruments and emotional changes you want across sections.
How do I specify BPM in MiniMax Music 2.6?
Write the target BPM in Prompt, such as “90 BPM, acoustic guitar folk,” alongside genre and rhythmic feel. Use BPM as part of the musical direction, then review the track and refine the tempo description.
How do I guide instrumentation in MiniMax Music 2.6?
Name the main instruments and their roles in Prompt, such as a piano melody, supporting strings and driving drums. Describe arrangement changes, such as a sparse intro and a more layered chorus.
Which output specifications does MiniMax Music 2.6 offer?
Choose mp3, wav or pcm, with sample rates up to 44100 Hz and bitrates up to 256000 bit/s. The default is mp3 at 44100 Hz and 256000 bit/s. See Parameters for the full options; MP3 and WAV can be previewed on the page.
