sgl-project/sglang · error · ValueError
{cpath}.start_time_seconds is only allowed for video or vide
Error message
{cpath}.start_time_seconds is only allowed for video or video_audio references What it means
Raised by MiniMax-H3 request validation when a condition supplies `start_time_seconds` but its `type` is not 'video' or 'video_audio'. The field denotes a temporal offset into a video reference, so it is meaningless for image/audio-only conditions and the normalizer rejects it to keep the canonical request unambiguous.
Source
Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/request_validation.py:242
)
if resolved in seen_frame_indices:
raise ValueError(
f"{cpath}.frame_index resolves to {resolved}, already "
f"bound by conditions[{seen_frame_indices[resolved]}]"
)
seen_frame_indices[resolved] = index
# Preserve the request-level semantic index. In particular, -1 is
# the canonical last-frame sentinel; the resolved pixel frame is
# carried separately by MiniMaxH3ResolvedPlan.
entry["frame_index"] = frame_index
elif cond.get("frame_index") is not None:
raise ValueError(f"{cpath}.frame_index is not allowed for role={role!r}")
start_time_seconds = _optional_nonnegative_finite_float(
cond.get("start_time_seconds"), f"{cpath}.start_time_seconds"
)
if start_time_seconds is not None:
if cond_type not in {"video", "video_audio"}:
raise ValueError(
f"{cpath}.start_time_seconds is only allowed for video "
"or video_audio references"
)
entry["start_time_seconds"] = start_time_seconds
normalized.append(entry)
return normalized
def _validate_keyframe_conditions(
conditions: Sequence[Mapping[str, Any]], *, task: str
) -> None:
"""Enforce the shared first/last-frame contract after schema validation."""
keyframes = [
condition
for condition in conditions
if condition["role"] == MINIMAX_H3_CONDITION_ROLE_KEYFRAME
]View on GitHub (pinned to 0132848349)
Solutions
- Remove start_time_seconds from image/audio conditions; it only applies to video/video_audio references
- If you meant to seek into a video, set the condition type to 'video' or 'video_audio'
- Re-run validation to confirm the canonical request builds
Example fix
// before
{"role":"reference","type":"image","uri":"...","start_time_seconds":2.0}
// after
{"role":"reference","type":"image","uri":"..."} Defensive patterns
Strategy: validation
Validate before calling
def ok(c):
if c.get("start_time_seconds") is not None and c.get("type") not in {"video","video_audio"}:
return False
return True Type guard
null
Try / catch
null
Prevention
- Build conditions from typed helpers that only attach start_time_seconds for video types
When it happens
Trigger: Calling minimax_h3_validate_canonical_request (directly or via build_request_extra) with a conditions[] entry that has start_time_seconds set while cond_type is 'image', 'audio', or any non-video type.
Common situations: Copy-pasting a video condition template and changing type to 'image' without removing start_time_seconds; or treating start_time_seconds as a generic scheduling timestamp for audio conditions.
Related errors
- MiniMax H3 video material has no usable frame rate
- hybrid ref2va layout only supports first/last keyframe ancho
- reference video has no frames: {video_path}
- MiniMax H3 request task must be a non-empty string
- MiniMax H3 requires num_inference_steps >= 2 because its vid
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/61436fb549bb944f.
Report an issue: GitHub.