calesthio/OpenMontage · error · RuntimeError
Jimeng submit returned no task_id: {data}
Error message
Jimeng submit returned no task_id: {data} What it means
Raised when the Jimeng (Volcengine CVSync2AsyncSubmitTask) submit call succeeds at the HTTP and code level but the response's data.task_id is missing. The async flow needs the task_id to poll CVSync2AsyncGetResult; without it the tool raises RuntimeError with the full response body so you can see what came back instead.
Source
Thrown at tools/video/jimeng_video.py:290
"seed": int(inputs.get("seed", -1)),
}
if operation == "image_to_video" and inputs.get("image_url"):
payload["image_urls"] = [inputs["image_url"]]
return payload
def _submit_task(self, payload: dict[str, Any], *, ak: str, sk: str) -> str:
import requests
query = {"Action": "CVSync2AsyncSubmitTask", "Version": _API_VERSION}
body = json.dumps(payload, ensure_ascii=False).encode("utf-8")
headers = self._sign("POST", "/", query, {}, body, ak, sk)
url = f"https://{_HOST}/?{urllib.parse.urlencode(sorted(query.items()))}"
resp = requests.post(url, data=body, headers=headers, timeout=30)
data = self._json_or_raise(resp)
self._check_code(resp.status_code, data)
task_id = data.get("data", {}).get("task_id")
if not task_id:
raise RuntimeError(f"Jimeng submit returned no task_id: {data}")
return task_id
def _poll_task(
self, task_id: str, *, ak: str, sk: str,
poll_interval: float, timeout_seconds: int,
) -> str:
import requests
query = {"Action": "CVSync2AsyncGetResult", "Version": _API_VERSION}
body = json.dumps({
"req_key": _REQ_KEY_VIDEO,
"task_id": task_id,
"req_json": json.dumps({"return_url": True}),
}, ensure_ascii=False).encode("utf-8")
deadline = time.time() + timeout_seconds
while time.time() < deadline:
time.sleep(poll_interval)View on GitHub (pinned to 95e1c3d0ab)
Solutions
- Inspect the {data} in the error message to see the actual envelope and any status/message fields inside data.
- Verify the Volcengine account has Jimeng video generation enabled and is not out of quota.
- Confirm access key / secret key pair is valid and the system clock is in sync (signature includes timestamps).
- Update OpenMontage or check Jimeng docs if the response contract (data.task_id) changed.
Defensive patterns
Strategy: try-catch
Validate before calling
import os
for var in ("JIMENG_ACCESS_KEY", "JIMENG_SECRET_KEY"):
if not os.environ.get(var):
raise RuntimeError(f"{var} not set — Jimeng submit will fail") Try / catch
try:
result = jimeng_video(inputs)
except RuntimeError as e:
if "no task_id" in str(e):
# inspect embedded body; do not blind-retry a contract/auth problem
raise ProviderContractError(str(e)) from e
raise Prevention
- Verify Volcengine credentials and Jimeng entitlement before running pipelines.
- Keep system clock synced — Jimeng signatures include timestamps.
- Capture the response body from the exception for support tickets.
When it happens
Trigger: POST to CVSync2AsyncSubmitTask returns JSON without data.task_id — e.g. req_key not matching a valid video capability, signature/canonical-request issues that pass code checks but route wrong, or an API revision changing the response envelope.
Common situations: Invalid or outdated _REQ_KEY_VIDEO after Jimeng API updates; a signing bug (HMAC of body/query) causing a structured-but-empty data object; account not entitled to the video generation capability, returning an error shape the code check does not recognize.
Related errors
- TokenHub submit returned no task id: {data}
- Jimeng task done but no video_url: {data}
- Doubao submit succeeded but did not return data.task_id
- Files API response missing uri: {file_info}
- No prompt_id in response: {data}
AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15).
Data as JSON: /api/errors/45ac6a1dadb3b95a.
Report an issue: GitHub.