Comfy-Org/ComfyUI · error · ValueError
sync.so generation completed but no output URL was returned.
Error message
sync.so generation completed but no output URL was returned.
What it means
Raised by the sync.so node when the generation status is COMPLETED but the response contains no outputUrl. The task claims success yet provides no downloadable artifact, so the node cannot fetch the video. It is the last guard after the FAILED/REJECTED branch.
Source
Thrown at comfy_api_nodes/nodes_sync_so.py:201
)
generation = await poll_op(
cls,
ApiEndpoint(path=f"/proxy/synclabs/v2/generate/{generation.id}"),
response_model=SyncGeneration,
status_extractor=lambda g: g.status,
completed_statuses=["COMPLETED", "FAILED", "REJECTED"],
failed_statuses=[],
queued_statuses=["PENDING"],
poll_interval=10.0,
)
if generation.status != "COMPLETED":
code = f" [{generation.errorCode}]" if generation.errorCode else ""
raise ValueError(
f"sync.so generation {generation.status.lower()}{code}: "
f"{generation.error or 'no error details provided'}"
)
if not generation.outputUrl:
raise ValueError("sync.so generation completed but no output URL was returned.")
return IO.NodeOutput(await download_url_to_video_output(generation.outputUrl))
class SyncTalkingImageNode(IO.ComfyNode):
@classmethod
def define_schema(cls) -> IO.Schema:
return IO.Schema(
node_id="SyncTalkingImageNode",
display_name="sync.so Talking Image",
category="partner/video/sync.so",
description=(
"Animate a still portrait into a talking video driven by speech audio, "
"using sync.so's sync-3 model. The output duration matches the audio. "
"Cost scales with output duration."
),
inputs=[
IO.Image.Input(
"image",View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Retry the generation — delayed artifact publication sometimes yields empty completions
- Check the sync.so dashboard for the generation id to see if an output exists under a different field
- Review sync.so API changelog for response schema changes
Defensive patterns
Strategy: retry
Try / catch
try:
out = await syncso_generate(...)
except ValueError as e:
if "no output URL" in str(e):
await asyncio.sleep(5)
out = await syncso_generate(...) # retry once
else:
raise Prevention
- Retry once on empty completions — artifact publication can lag
- Keep generation ids for sync.so dashboard verification
- Monitor sync.so API changelog for outputUrl schema changes
When it happens
Trigger: poll_op returns status COMPLETED with outputUrl None/empty/missing from the response body of /proxy/synclabs/v2/generate/{id}.
Common situations: sync.so API schema changes renaming the output field; transient server-side artifact publication delay; account-level restrictions producing empty completions.
Related errors
- Runway task succeeded but no video data found in response.
- Runway task succeeded but no image data found in response.
- sync.so generation {generation.status.lower()}{code}: {gener
- Empty response from Seed model.
- Gemini API returned no response candidates. If you are using
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/b408f1adcdaf1ac8.
Report an issue: GitHub.