sgl-project/sglang · error · ValueError
target.duration_seconds is required when multiple audio-bear
Error message
target.duration_seconds is required when multiple audio-bearing references are provided
What it means
When target.duration_seconds is omitted, MiniMax-H3 requires exactly one audio-bearing reference to derive duration from. Multiple audio/video/video_audio conditions make the duration source ambiguous, so validation fails closed and demands an explicit duration.
Source
Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/request_validation.py:349
raise ValueError(
f"conditions[{index}]: video references are not supported "
f"in v1 for task {profile.task!r} (image/audio only)"
)
if normalized_target.get("duration_seconds") is None:
# Only reachable for duration_from_audio_reference profiles.
duration_sources = [
cond
for cond in normalized_conditions
if cond["type"] in ("audio", "video", "video_audio")
]
if not duration_sources:
raise ValueError(
"target.duration_seconds is required, or exactly one "
"audio reference to derive duration from (including "
f"video/video_audio soundtracks; task {profile.task!r})"
)
if len(duration_sources) > 1:
raise ValueError(
"target.duration_seconds is required when multiple "
"audio-bearing references are provided"
)
canonical: dict[str, Any] = {
"schema": MINIMAX_H3_REQUEST_SCHEMA,
"task": task_name,
"prompt": prompt_text,
"conditions": normalized_conditions,
"target": normalized_target,
}
normalized_flow_shift = _optional_positive_finite_float(flow_shift, "flow_shift")
normalized_audio_flow_shift = _optional_positive_finite_float(
audio_flow_shift, "audio_flow_shift"
)
if normalized_flow_shift is not None:
canonical["flow_shift"] = normalized_flow_shift
if normalized_audio_flow_shift is not None:View on GitHub (pinned to 0132848349)
Solutions
- Set target.duration_seconds explicitly to disambiguate
- Or reduce to exactly one audio-bearing condition
Example fix
// before
{"conditions":[{"type":"audio","uri":"a.wav"},{"type":"audio","uri":"b.wav"}],"target":{}}
// after
{"conditions":[{"type":"audio","uri":"a.wav"},{"type":"audio","uri":"b.wav"}],"target":{"duration_seconds":10}} Defensive patterns
Strategy: validation
Validate before calling
def duration_ok(target, conditions):
if target.get("duration_seconds") is not None: return True
n = sum(c.get("type") in ("audio","video","video_audio") for c in conditions)
return n == 1 Type guard
null
Try / catch
null
Prevention
- Pin duration_seconds whenever supplying multiple audio-bearing references
When it happens
Trigger: Calling minimax_h3_validate_canonical_request with target.duration_seconds unset and two or more conditions whose type is 'audio', 'video', or 'video_audio'.
Common situations: Supplying a reference video plus a separate audio track; combining two audio references for style prompting without pinning duration.
Related errors
- target.duration_seconds is required, or exactly one audio re
- MiniMax H3 media material has no positive duration
- MiniMax H3 request task must be a non-empty string
- MiniMax H3 requires num_inference_steps >= 2 because its vid
- quality must be one of {list(QUALITY_LEVELS)}, got {quality!
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/a41ca2aeae765780.
Report an issue: GitHub.