openclaw - 💡(How to fix) Fix [bug] MiniMax music_generation provider: durationSeconds is not passed to API, silently produces default-length tracks [2 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

The MiniMax music_generation provider in extensions/minimax/music-generation-provider.ts does not pass the requested durationSeconds parameter to the MiniMax API. Instead, it appends a natural-language hint to the prompt text:

// extensions/minimax/music-generation-provider.ts, buildPrompt()
if (typeof req.durationSeconds === "number" && Number.isFinite(req.durationSeconds)) {
  parts.push(`Target duration: about ${Math.max(1, Math.round(req.durationSeconds))} seconds.`);
}

The JSON body sent to /v1/music_generation only includes model, prompt, is_instrumental, lyrics/lyrics_optimizer, output_format, and audio_setting — no duration field. The MiniMax API ignores the prompt-embedded duration hint and returns tracks at its default length (typically 90-120s).

This makes durationSeconds effectively non-functional for the MiniMax music provider, even though the capability advertises it (capabilities: ... duration, format ... from music_generate action=list).

Root Cause

The MiniMax music_generation provider in extensions/minimax/music-generation-provider.ts does not pass the requested durationSeconds parameter to the MiniMax API. Instead, it appends a natural-language hint to the prompt text:

// extensions/minimax/music-generation-provider.ts, buildPrompt()
if (typeof req.durationSeconds === "number" && Number.isFinite(req.durationSeconds)) {
  parts.push(`Target duration: about ${Math.max(1, Math.round(req.durationSeconds))} seconds.`);
}

The JSON body sent to /v1/music_generation only includes model, prompt, is_instrumental, lyrics/lyrics_optimizer, output_format, and audio_setting — no duration field. The MiniMax API ignores the prompt-embedded duration hint and returns tracks at its default length (typically 90-120s).

This makes durationSeconds effectively non-functional for the MiniMax music provider, even though the capability advertises it (capabilities: ... duration, format ... from music_generate action=list).

Fix Action

Fixed

Code Example

// extensions/minimax/music-generation-provider.ts, buildPrompt()
if (typeof req.durationSeconds === "number" && Number.isFinite(req.durationSeconds)) {
  parts.push(`Target duration: about ${Math.max(1, Math.round(req.durationSeconds))} seconds.`);
}

---

music_generate({
  model: "minimax/music-2.6",
  durationSeconds: 240,
  instrumental: true,
  prompt: "..."
})

---

const body = {
  model,
  prompt: req.prompt.trim(),  // drop the duration-hint append from buildPrompt
  ...(req.instrumental === true ? { is_instrumental: true } : {}),
  ...(lyrics ? { lyrics } : req.instrumental === true ? {} : { lyrics_optimizer: true }),
  ...(typeof req.durationSeconds === "number" && Number.isFinite(req.durationSeconds)
    ? { duration: Math.round(req.durationSeconds) }  // <— add this
    : {}),
  output_format: "url",
  audio_setting: {
    sample_rate: 44_100,
    bitrate: 256_000,
    format: "mp3",
  },
};
RAW_BUFFERClick to expand / collapse

Summary

The MiniMax music_generation provider in extensions/minimax/music-generation-provider.ts does not pass the requested durationSeconds parameter to the MiniMax API. Instead, it appends a natural-language hint to the prompt text:

// extensions/minimax/music-generation-provider.ts, buildPrompt()
if (typeof req.durationSeconds === "number" && Number.isFinite(req.durationSeconds)) {
  parts.push(`Target duration: about ${Math.max(1, Math.round(req.durationSeconds))} seconds.`);
}

The JSON body sent to /v1/music_generation only includes model, prompt, is_instrumental, lyrics/lyrics_optimizer, output_format, and audio_setting — no duration field. The MiniMax API ignores the prompt-embedded duration hint and returns tracks at its default length (typically 90-120s).

This makes durationSeconds effectively non-functional for the MiniMax music provider, even though the capability advertises it (capabilities: ... duration, format ... from music_generate action=list).

Reproduction

music_generate({
  model: "minimax/music-2.6",
  durationSeconds: 240,
  instrumental: true,
  prompt: "..."
})

Expected: ~240 second track. Actual: ~109 second track (MiniMax default).

Impact

Any caller depending on duration control via MiniMax silently gets short tracks. For NOVA's daily music pipeline, this defeats the entire reason for routing to MiniMax instead of Google Lyria — both effectively cap at ~2-3 minutes with no caller control.

Proposed Fix

The MiniMax music_generation API (per https://platform.minimax.io/docs) accepts an explicit duration parameter in the JSON request body. The provider should pass durationSeconds through as a structured field instead of (or in addition to) the prompt hint. Suggested change in music-generation-provider.ts:

const body = {
  model,
  prompt: req.prompt.trim(),  // drop the duration-hint append from buildPrompt
  ...(req.instrumental === true ? { is_instrumental: true } : {}),
  ...(lyrics ? { lyrics } : req.instrumental === true ? {} : { lyrics_optimizer: true }),
  ...(typeof req.durationSeconds === "number" && Number.isFinite(req.durationSeconds)
    ? { duration: Math.round(req.durationSeconds) }  // <— add this
    : {}),
  output_format: "url",
  audio_setting: {
    sample_rate: 44_100,
    bitrate: 256_000,
    format: "mp3",
  },
};

Exact field name (duration vs duration_seconds vs length_seconds) should be confirmed against MiniMax's current API spec — their docs are the authoritative source.

Related

  • Issue #84506 (async-task polling refactor for the same provider)

Environment

  • OpenClaw: nova-openclaw fork, current main as of 2026-05-20
  • Provider: extensions/minimax/music-generation-provider.ts
  • Model: minimax/music-2.6

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [bug] MiniMax music_generation provider: durationSeconds is not passed to API, silently produces default-length tracks [2 pull requests]