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
- 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.
- Retry the whole generation — artifact-publication races usually resolve on a fresh task.
- Check for OpenMontage updates handling the new TokenHub response shape.
- 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
- Retry completed-without-url once before escalating — often a publication race.
- Report recurring shape drift with the embedded response payload.
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
- TokenHub task {task_id} returned unknown status: {status}
- TokenHub submit returned no task id: {data}
- TokenHub task {task_id} did not finish within {timeout_secon
- TokenHub submit returned no task id: {data}
- TokenHub task {task_id} failed: {error_msg}
AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15).
Data as JSON: /api/errors/efe510a31f39c5db.
Report an issue: GitHub.