{"record":{"id":"6d25b25fa2d561d3","repo":"calesthio/OpenMontage","slug":"label-must-be-a-public-signed-url-or-asset-id","errorCode":null,"errorMessage":"{label} must be a public/signed URL or asset:// ID; Ark does not document video Base64 or local paths","messagePattern":"(.+?) must be a public/signed URL or asset:// ID; Ark does not document video Base64 or local paths","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"tools/video/seedance_ark.py","lineNumber":1200,"sourceCode":"            )\n            duration = float(proc.stdout.strip()) if proc.returncode == 0 else 0\n        except (OSError, ValueError, subprocess.SubprocessError) as exc:\n            raise ValueError(f\"failed to probe local reference audio: {path}\") from exc\n        if not 2 <= duration <= max_seconds:\n            raise ValueError(\n                f\"each local reference audio clip must be 2 to {max_seconds} seconds\"\n            )\n        return duration\n\n    @staticmethod\n    def _is_remote_or_asset(value: str) -> bool:\n        return value.startswith((\"https://\", \"http://\", \"asset://\"))\n\n    def _validate_remote_refs(self, refs: list[Any], label: str) -> None:\n        for ref in refs:\n            value = str(ref)\n            if not value.startswith((\"https://\", \"http://\", \"asset://\")):\n                raise ValueError(\n                    f\"{label} must be a public/signed URL or asset:// ID; \"\n                    \"Ark does not document video Base64 or local paths\"\n                )\n\n    def _validate_optional_parameters(self, payload: dict[str, Any]) -> None:\n        callback = payload.get(\"callback_url\")\n        if callback is not None and not str(callback).startswith(\n            (\"https://\", \"http://\")\n        ):\n            raise ValueError(\"callback_url must be an http(s) URL\")\n        expires = payload.get(\"execution_expires_after\")\n        if expires is not None and not 3600 <= int(expires) <= 259200:\n            raise ValueError(\"execution_expires_after must be between 3600 and 259200\")\n        priority = payload.get(\"priority\")\n        if priority is not None and not 0 <= int(priority) <= 9:\n            raise ValueError(\"priority must be between 0 and 9\")\n        safety = payload.get(\"safety_identifier\")\n        if safety is not None and len(str(safety)) > 64:","sourceCodeStart":1182,"sourceCodeEnd":1218,"githubUrl":"https://github.com/calesthio/OpenMontage/blob/95e1c3d0ab93482159818560f6a8c8e866b9139f/tools/video/seedance_ark.py#L1182-L1218","documentation":"Error \"{label} must be a public/signed URL or asset:// ID; Ark does not document video Base64 or local paths\" thrown in calesthio/OpenMontage.","triggerScenarios":"A reference video is supplied as a local path or Base64 blob; Ark only documents public/signed URLs or asset:// IDs for video.","commonSituations":"See trigger scenarios.","solutions":["Provide the video as a public/signed HTTPS URL or an asset:// ID.","Ark does not support video Base64 or local paths — upload the video first, then reference it."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"95e1c3d0ab93482159818560f6a8c8e866b9139f","analyzedAt":"2026-08-15T06:31:20.014Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}