calesthio/OpenMontage · error · ValueError

callback_url must be an http(s) URL

Error message

callback_url must be an http(s) URL

What it means

Error "callback_url must be an http(s) URL" thrown in calesthio/OpenMontage.

Source

Thrown at tools/video/seedance_ark.py:1210

    @staticmethod
    def _is_remote_or_asset(value: str) -> bool:
        return value.startswith(("https://", "http://", "asset://"))

    def _validate_remote_refs(self, refs: list[Any], label: str) -> None:
        for ref in refs:
            value = str(ref)
            if not value.startswith(("https://", "http://", "asset://")):
                raise ValueError(
                    f"{label} must be a public/signed URL or asset:// ID; "
                    "Ark does not document video Base64 or local paths"
                )

    def _validate_optional_parameters(self, payload: dict[str, Any]) -> None:
        callback = payload.get("callback_url")
        if callback is not None and not str(callback).startswith(
            ("https://", "http://")
        ):
            raise ValueError("callback_url must be an http(s) URL")
        expires = payload.get("execution_expires_after")
        if expires is not None and not 3600 <= int(expires) <= 259200:
            raise ValueError("execution_expires_after must be between 3600 and 259200")
        priority = payload.get("priority")
        if priority is not None and not 0 <= int(priority) <= 9:
            raise ValueError("priority must be between 0 and 9")
        safety = payload.get("safety_identifier")
        if safety is not None and len(str(safety)) > 64:
            raise ValueError("safety_identifier must be at most 64 characters")

    def _validate_request_size(self, payload: dict[str, Any]) -> None:
        # Base64 dominates request size; summing encoded media is a conservative
        # lower-cost check that avoids building a second complete JSON string.
        encoded_bytes = 0
        for item in payload["content"]:
            media = (
                item.get("image_url")
                or item.get("audio_url")

View on GitHub (pinned to 95e1c3d0ab)

Solutions

  1. Set callback_url to a full http(s) URL including the scheme, e.g. https://example.com/hook.
  2. Omit callback_url entirely if you do not need completion callbacks.

When it happens

Trigger: callback_url passed to Seedance Ark is not an http(s) URL.

Common situations: See trigger scenarios.


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