sgl-project/sglang · error · ValueError
MiniMax H3 SGLang backend only supports output_mode='decoded
Error message
MiniMax H3 SGLang backend only supports output_mode='decoded_files', got {output_mode!r} What it means
The MiniMax H3 video adapter for SGLang validates the transport/delivery options of a video request before lowering it. Only output_mode='decoded_files' (or leaving it unset) is accepted because the backend always decodes generation results into files on disk. Any other output_mode (e.g. 'url', 'base64', 'tensor') is rejected with this ValueError.
Source
Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py:209
def validate_transport_options(
self,
request: VideoGenerationsRequest,
*,
model_path: str | None,
) -> None:
extras = request.model_extra or {}
self.validate_task_gate(extras.get("task"), provided="task" in extras)
del model_path
self._positive_finite_extra(request, "audio_flow_shift")
if _extra_value(request, "audio_guidance_scale") is not None:
raise ValueError(
"audio_guidance_scale is not supported: MiniMax H3 serves only "
"the CFG-distilled single-positive-branch checkpoint"
)
output_mode = _extra_value(request, "output_mode")
if output_mode not in (None, "decoded_files"):
raise ValueError(
"MiniMax H3 SGLang backend only supports "
f"output_mode='decoded_files', got {output_mode!r}"
)
if request.enable_frame_interpolation:
raise ValueError(
"MiniMax H3 does not support enable_frame_interpolation: the "
"accepted delivery contract is the canonical 24 fps output"
)
if request.enable_upscaling:
raise ValueError(
"MiniMax H3 does not support enable_upscaling: the accepted "
"delivery contract is the resolved target canvas"
)
def validate_sampling_params(self, sampling_params: SamplingParams) -> None:
"""Apply the HTTP task/delivery gate to offline requests as well."""
task = getattr(sampling_params, "task", None)View on GitHub (pinned to 0132848349)
Solutions
- Set output_mode='decoded_files' (or omit it) on the request
- Configure save_output=True and a valid output_path since decoded files must be persisted
- If you need URLs, generate them yourself from the decoded output files after the call returns
Example fix
// before
request.extra = {"output_mode": "url"}
adapter.lower_video_request_kwargs(request)
// after
request.extra = {"output_mode": "decoded_files"}
sampling_params.save_output = True
sampling_params.output_path = "/tmp/out.mp4" Defensive patterns
Strategy: validation
Validate before calling
mode = request.extra.get("output_mode") if request.extra else None
if mode not in (None, "decoded_files"):
raise ValueError(f"unsupported output_mode {mode!r}; use 'decoded_files'") Prevention
- Centralize MiniMax H3 request construction in one helper that pins output_mode
- Assert supported flags before submitting to the engine
When it happens
Trigger: Calling lower_video_request_kwargs (directly or via the HTTP/offline video generation entry point) with request extra fields containing output_mode set to anything other than None or 'decoded_files'.
Common situations: Porting a client from another video backend that returned URLs or in-memory bytes; copy-pasting generic video request kwargs where output_mode defaults to something like 'url'.
Related errors
- MiniMax H3 does not support enable_frame_interpolation: the
- MiniMax H3 does not support enable_upscaling: the accepted d
- MiniMax H3 video generation produced {len(output_paths)} out
- MiniMax-H3 quality="high" is validated only for the strict 4
- MiniMax-H3 adaln_t_table must have shape [N, D] with N >= 2,
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/a0f0fa88a481705a.
Report an issue: GitHub.