calesthio/OpenMontage · error · RuntimeError

TokenHub task {task_id} completed but no data.url: {data}

Error message

TokenHub task {task_id} completed but no data.url: {data}

What it means

Raised when TokenHub reports status='completed' for a video task but data.url is missing. The tool treats 'completed' as terminal and expects the downloadable video URL at data.url; a completion without a URL is a contract violation (or a partial success with the result stored elsewhere), so it raises with the full poll response embedded.

Source

Thrown at tools/video/hunyuan_cloud_video.py:472

        while time.time() < deadline:
            time.sleep(poll_interval)

            resp = requests.post(
                url,
                json={"model": model, "id": task_id},
                headers=self._auth_headers(api_key),
                timeout=30,
            )
            data = self._json_or_raise(resp)
            self._check_response(data)

            status = data.get("status", "")

            if status == "completed":
                result_data = data.get("data") or {}
                video_url = result_data.get("url")
                if not video_url:
                    raise RuntimeError(
                        f"TokenHub task {task_id} completed but no data.url: {data}"
                    )
                return video_url

            if status == "failed":
                error_info = data.get("error") or {}
                error_msg = error_info.get("message", "unknown error")
                raise RuntimeError(
                    f"TokenHub task {task_id} failed: {error_msg}"
                )

            # queued / running / in_progress — continue polling
            if status not in ("queued", "running", "in_progress"):
                raise RuntimeError(
                    f"TokenHub task {task_id} returned unknown status: {status}"
                )

        raise TimeoutError(

View on GitHub (pinned to 95e1c3d0ab)

Solutions

  1. Inspect the {data} payload in the error to find where the URL actually is; if it is consistently under another key, the tool needs a patch.
  2. Retry the whole generation — artifact-publication races usually resolve on a fresh task.
  3. Check for OpenMontage updates handling the new TokenHub response shape.
  4. Verify with TokenHub docs/support whether 'completed' can omit url by design for your model.
Defensive patterns

Strategy: try-catch

Try / catch

try:
    result = hunyuan_cloud_video(inputs)
except RuntimeError as e:
    if "no data.url" in str(e):
        result = hunyuan_cloud_video(inputs)  # one retry: publication race
    else:
        raise

Prevention

When it happens

Trigger: Poll GET returns status 'completed' while data is null/{} or lacks 'url' — e.g. result delivered under a different key (video_url, output), a CDN upload step failed after render, or the response envelope changed.

Common situations: TokenHub schema drift renaming the result field; transient server issue where completion is marked but artifact publication lags; a model variant returning results in a nested structure.

Related errors


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