Docs
Get an API key
Workflows›Write songs for MiniMax Music 3

Write songs for MiniMax Music 3

How to write the caption and lyrics MiniMax Music 3 sings best from, cast singers, control a song's length, and hear it as it renders.

View .md

MiniMax Music 3 makes a finished song with vocals, up to six minutes long, from two pieces of text:

Field What it is Limit
lyrics The words to sing, in tagged sections. Required. 12,000 characters
prompt The caption: how the song sounds, from tempo and genre to the singer and the mix. 6,000 characters

Together the two must fit in about 5,000 tokens, roughly 20,000 characters. Everything else is optional: duration caps the length, seed makes a take repeatable, and response_format picks the file type. Its model page has every field and the price.

A song is an async job: you create it, then listen to it as it renders, poll it, or get a webhook. The first audio arrives about 5 seconds in, and a song takes a little less time to render than it lasts: about two minutes for a three-minute song.

Make a song

This short song is capped at 30 seconds, so it renders in about 20.

Create a song and download it
# Create the song and wait up to 60 seconds for it (Prefer: wait); it answers 200 when the song is done, 202 if it is still rendering
curl -s https://api.vultrinference.com/v1/music \
  -H "Authorization: Bearer $VULTR_INFERENCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Prefer: wait=60" \
  -d '{
    "model": "minimax-music3",
    "prompt": "Global Metadata\nBasic Attributes: bpm is 96. key is G, and scale is major. Indie Folk / Acoustic Pop.\nVocal Details\nVocal Gender & Timbre: Singer A (Female). A warm, close alto.\nArrangement\nInstrument Lifecycle Description (Primary/Secondary Layering):\nPrimary: A fingerpicked acoustic guitar from the first bar.",
    "lyrics": "[Intro]\n\n[Verse]\nMorning light on the kitchen floor\nCoffee cups and an open door\n\n[Chorus]\nStay a while, stay a while\nThe day can wait for us\n\n[Outro]",
    "duration": 30,
    "seed": 7
  }' | tee song.json | jq '{id, status, warnings}'

# Download it once its status is completed
curl -s -o song.mp3 "https://api.vultrinference.com/v1/music/$(jq -r .id song.json)/content" \
  -H "Authorization: Bearer $VULTR_INFERENCE_API_KEY"

The rest of this page is about what to put in prompt and lyrics. Everything below was learned by rendering hundreds of songs.

The caption

MiniMax trained Music 3 on captions written one way, and the model sings best from that layout. There are three headings, each followed by its labelled fields, one field to a line, always in the same order, with no blank lines:

text
Global Metadata
Basic Attributes: bpm is 116. key is F, and scale is minor. Nu-Disco / Dark Funk-Pop.
Global Emotional Progression: Opens cool and watchful over a filtered groove, tightens through the verses, and breaks into a defiant, euphoric chorus. The bridge drops to a near-whisper before the last chorus lands harder than the first.
Application Scenarios & Imagery: Late-night city drives, the first peak hour in a club, the closing titles of a neon-lit thriller.
Sonics & Production Profile: A wide, polished mix with a tight, punchy low end and a glossy top. Bass and kick sit forward, side-chained so the pads breathe on every beat; the choruses are compressed into a wall of sound while the verses stay dry and close.
Vocal Details
Vocal Gender & Timbre: Singer A (Female). A smoky alto with a breathy low register and a bright, ringing upper range.
Vocal Style: Cool and rhythmic in the verses, half-spoken on the downbeats; full-voiced and belted in the choruses, with long held notes on the hook.
Harmony/Backing Vocals: Stacked octave doubles and a call-and-response backing line in the choruses; none in the verses.
Vocal FX: A short plate reverb, with quarter-note delay throws on the last word of each chorus line and light saturation in the bridge.
Arrangement
Instrument Lifecycle Description (Primary/Secondary Layering):
Primary: A slap-and-pick electric bass drives the song from the first bar to the last, with a muted funk guitar chopping sixteenths against it from the first verse.
Secondary: Warm analog string pads enter at the pre-chorus and swell through each chorus; a bright synth lead answers the vocal hook in the second chorus and carries the solo.
Groove & Foundation Progression: A four-on-the-floor kick with open hi-hats on the off-beats. The verses keep kick and bass alone, the choruses add claps on two and four and a tambourine, and the bridge drops to kick and bass before a snare roll rebuilds it.
Embellishments, Textures & Spatial FX: Filter sweeps into every chorus, a reverse cymbal before the bridge, and a final chorus that opens the low-pass filter all the way.

What each field holds:

Field Write
Basic Attributes Always this sentence: bpm is N. key is K, and scale is major (or minor), then the genre and subgenres as Genre / Subgenre. Give one exact tempo and one key, not a range.
Global Emotional Progression How the feeling moves from the opening to the end.
Application Scenarios & Imagery Where the music would play: scenes, settings, moments. Not the story of the lyrics.
Sonics & Production Profile The mix: soundstage, frequency balance, dynamics, compression.
Vocal Gender & Timbre Who sings, as Singer A (Male), Singer B (Female), and each voice's timbre and register. See singers.
Vocal Style The delivery, and how it changes from section to section.
Harmony/Backing Vocals Harmonies and backing vocals, or that there are none.
Vocal FX The effects, named concretely: reverb, delay, doubling, saturation, or none.
Primary The instruments carrying the song, and what they do through it.
Secondary The supporting instruments: where each enters, changes and leaves.
Groove & Foundation Progression Drums and bass: the groove, and how it builds and drops through the sections.
Embellishments, Textures & Spatial FX Fills, transitions and effects, and where each one marks a change.

Primary and Secondary go under the Instrument Lifecycle Description (Primary/Secondary Layering): line, as in the example.

What makes a caption work:

  • Describe only the music. Leave out the story, the title and lines from the lyrics. The only scenery belongs under Application Scenarios.
  • Be concrete. The model follows named instruments, effects and section changes. A vague word becomes a default: when one writer asked every song for "restrained vocal effects", 128 of 140 songs came out with the same clean, dry voice. Ask for "a short plate reverb with delay throws" instead.
  • Fill every field with a sentence or a few. About 250 to 450 words across the whole caption is plenty.
  • Vary what you vary on purpose. Over many songs, a caption that repeats its singer, tempo and effects gives you the same song again with new words.

The layout is how the model was trained, not a rule the API enforces. A caption in free prose is accepted and still sounds like what it describes, but the layout gives the model every detail in the form it learned.

Start from MiniMax's style references

MiniMax publishes the references its own caption writer works from, in skills/music-caption-rewriter of the MiniMax-Music3 repository:

Part What it holds
A genre router 18 genre families, the words that point to each, and how to read a fusion
A family index each Compact style cards: genre, tempo and key, mood, lead singer and core instruments
1,000 captions Complete captions in the layout above, one per style card

The captions are the useful part. A caption written next to real examples of its genre names what the genre actually sounds like ("brushed snare on 2 and 4, ride kept low in the verses"), where one written from a short description falls back on phrases like "a driving rhythm". To use them:

  1. Find your genre's family in the router, and a second family only for an explicit fusion.
  2. In that family's index, pick two or three cards close to the song you want: the tempo, the mood and the lead singer.
  3. Read those captions in full, then write yours in the same layout, taking their concrete language for instruments, grooves and production. Write your own song, not a copy of one of theirs.

For a fusion, keep the first genre as the foundation and take only one dimension from the second, such as its instruments or its groove. A song built on the second genre's card sounds like the second genre.

The folder is also an agent skill: npx skills add MiniMax-AI/MiniMax-Music3 --skill music-caption-rewriter installs it into Claude Code, Codex or Cursor, which can then write captions this way for you. Its default asks for restrained vocal effects; over many songs that gives every song the same voice, so tell it which effects you want.

Tempo, key and time signature as fields

bpm, key (such as "F minor") and time_signature are also accepted as fields. Music 3 has no exact tempo or key control. These fields are hints, written into the caption as its Basic Attributes line, and the job's warnings says so with advisory_control. If your caption already has a Basic Attributes line, the fields are not applied and warnings says that instead. Either way the song lands near the tempo and key, not exactly on them, so it is simplest to write them in the caption yourself.

The lyrics

The lyrics are sections in order, each a tag in square brackets followed by its lines:

text
[Intro]

[Verse]
The streetlights hum a minor key
I count the blocks back home to you
The city never sleeps for free
And neither, darling, do we two

[Pre-Chorus]
Turn it up, turn it up

[Chorus]
Dance like the lights won't hold
Dance till the night runs cold
We were born for the after-hours
We were born, we were born to glow

[Instrumental]

[Outro]

The tags Music 3 knows:

Tag Use
[Intro], [Outro] The start and end. Usually instrumental: leave them without lines.
[Verse], [Pre-Chorus], [Chorus], [Post-Chorus], [Bridge] The sung sections. Each needs at least one line.
[Instrumental], [Solo] A break with no singing: no lines.

The API rewrites common spellings to the model's own, so [pre chorus] becomes [Pre-Chorus], and [Inst] or [Interlude] becomes [Instrumental]. Other tags are passed through as written and work as loose instructions; MiniMax's own examples use some, such as [bass-quartet-rumbles-in]. The model treats them as suggestions, not commands.

What makes lyrics work:

  • Every word is sung. Music 3 sings exactly what it is given. A singer's name in front of a line (Mara: I held the iron cold) is sung too, and the rest of the line is crushed to fit around it. Leave out names, labels, stage directions and notes in parentheses. Who sings what goes in the caption.
  • Write the whole song. Give at least four sections, in the order they are sung. A full song usually has ten to twelve.
  • Don't count on repeats inside a section. A line written three times in a row may be sung once. To repeat a hook, repeat its section: a second [Chorus] with the same lines.
  • There is no instrumental-only song. Music 3 always sings, and lyrics is required; instrumental: true is refused with a 400. For instrumental passages, use [Intro], [Instrumental], [Solo] and [Outro] with no lines.

Singers

One lead singer is the default. For a duet:

  • Cast two leads, at most three. Music 3 keeps two voices apart reliably, sometimes three. A song that cast nine characters, each described in prose, came out with one singer.
  • Name them the way the model learned: Singer A (Male), Singer B (Female), each with a contrasting timbre and register in Vocal Gender & Timbre. Character names mean nothing to the model as voices.
  • Trade whole sections, not lines. In Vocal Style, say which sections each singer has alone and which they share, and give each a section of their own before a shared one.
  • For a man and a woman, let the man open. In a test of the same duet both ways round, every song the male singer opened switched singers as cast (8 of 8); when the female singer opened, he came in only 1 time in 4.
  • Voice tags in the lyrics don't help. Adding [male vocal], [female vocal] or [duet] after the section tags made no difference anyone could hear. The caption decides who sings.

Length

duration is a ceiling, not a target: 30 to 360 seconds, 300 by default. The lyrics set how long the song actually is, and a song with few sections ends early. With the default ceiling, songs in our testing came out like this:

Lyrics Sections Song
A few lines 3 or 4 under a minute
750 to 1,000 characters about 10 about 3 minutes
1,000 to 1,500 characters about 11 3 to 3.5 minutes
1,500 to 2,000 characters about 11 3.5 to 4 minutes
about 2,750 characters about 26 about 4.5 minutes
4,000 characters or more 35 or more 6 minutes

More sections make a song longer than more words in the same sections. For a long song, raise duration to 360 and write more sections. Six minutes is the most the model renders: lyrics that would run longer are cut, and their last lines are not sung.

You pay for the audio produced: each song is rounded up to a whole second and never billed past the duration you asked for. Asking for a long ceiling costs nothing extra if the song ends sooner.

Takes and seeds

The same request with the same seed makes the same song, so a seed lets you keep a take you like and change only one thing, such as a line of lyrics or the Vocal FX. Change the seed, or leave it out, for a new take. Music 3 makes one song per request (n is 1); for several candidates, send several requests, each billed on its own.

Hear it as it renders

While a song renders, its job has a stream_url, and GET /v1/music/{id}/stream plays the song as a WAV from its first second. That makes it cheap to judge a take: listen to the opening, and if it is not right, cancel the job with DELETE /v1/music/{id}. A cancelled song is not billed. Async jobs has the details.

The finished song comes from GET /v1/music/{id}/content, as mp3 (the default, 256 kbps), wav, flac, opus, aac or raw pcm, at 32 kHz in stereo. It is kept for 7 days.

When something sounds wrong

You hear Why Do
A name or a stage direction sung Everything in lyrics is sung Keep only the sung words in the lyrics; put who sings what in the caption
One singer where you cast several Too many singers, or singers named by character Cast two leads as Singer A and Singer B, trading whole sections
Every song has the same voice The caption's vocal fields are vague or identical from song to song Name the timbre, delivery and effects concretely, and vary them
A song ends well before duration Length comes from the lyrics; duration only caps it Write more sections
The last lines of a long song are missing The lyrics run past six minutes Cut sections, or split the song in two
A repeated line is sung once Repeats inside one section may be merged Repeat the section instead
The tempo or key is a little off Tempo and key are hints to this model Expected; for a near match, state one exact bpm and key in Basic Attributes
A 400 naming instrumental, language or input_references Music 3 does not take these fields Leave them out; see errors

Credit

MiniMax Music 3's license asks that the model's name be shown with it. attribution in GET /v1/music/models gives the name to use: MiniMax-Music3.