calesthio/OpenMontage · error · ValueError

image_to_video requires reference_image_url or reference_ima

Error message

image_to_video requires reference_image_url or reference_image_path

What it means

Error "image_to_video requires reference_image_url or reference_image_path" thrown in calesthio/OpenMontage.

Source

Thrown at tools/video/kling_official_video.py:314

            return self._build_turbo_request(inputs, operation)
        if api_family == "omni":
            return self._build_omni_request(inputs, operation)
        return self._build_classic_request(inputs, operation)

    def _build_classic_request(self, inputs: dict[str, Any], operation: str) -> dict[str, Any]:
        if operation == "text_to_video":
            payload = self._base_classic_payload(inputs)
            payload["prompt"] = self._prompt(inputs)
            if inputs.get("negative_prompt"):
                payload["negative_prompt"] = inputs["negative_prompt"]
            if inputs.get("aspect_ratio"):
                payload["aspect_ratio"] = inputs.get("aspect_ratio", "16:9")
            self._copy_multi_shot_fields(inputs, payload)
            path = "/v1/videos/text2video"
        elif operation == "image_to_video":
            image = normalize_image_input(inputs.get("reference_image_url"), inputs.get("reference_image_path"))
            if not image:
                raise ValueError("image_to_video requires reference_image_url or reference_image_path")
            payload = self._base_classic_payload(inputs)
            payload["image"] = image
            if inputs.get("prompt"):
                payload["prompt"] = inputs["prompt"]
            if inputs.get("negative_prompt"):
                payload["negative_prompt"] = inputs["negative_prompt"]
            tail = normalize_image_input(inputs.get("reference_tail_image_url"), inputs.get("reference_tail_image_path"))
            if tail:
                payload["image_tail"] = tail
            if inputs.get("element_list"):
                payload["element_list"] = normalize_element_list(inputs.get("element_list"))
            self._copy_multi_shot_fields(inputs, payload)
            path = "/v1/videos/image2video"
        else:
            raise ValueError(f"Unsupported classic video operation: {operation}")
        return {
            "protocol": "classic",
            "path": path,

View on GitHub (pinned to 95e1c3d0ab)

Solutions

  1. Pass reference_image_url (a public URL) or reference_image_path (a local file) with the image_to_video call.
  2. For the classic API family a local path is acceptable; the file will be uploaded as part of the request.

When it happens

Trigger: kling_official_video image_to_video is called without reference_image_url or reference_image_path, so no first-frame image can be supplied.

Common situations: See trigger scenarios.


AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15). Data as JSON: /api/errors/469f8b0dd7d86c20. Report an issue: GitHub.