Comfy-Org/ComfyUI · error · RuntimeError

Krea 2 job {job.job_id} completed without any image URLs.

Error message

Krea 2 job {job.job_id} completed without any image URLs.

What it means

Raised after a Krea 2 job finishes polling but its result contains no image URLs. The job reached a terminal status, yet job.result is null or job.result.urls is empty, so there is nothing to download and convert to an image tensor.

Source

Thrown at comfy_api_nodes/nodes_krea.py:224

            data=KreaGenerateImageRequest(
                prompt=prompt,
                aspect_ratio=model["aspect_ratio"],
                resolution=model["resolution"],
                seed=seed,
                creativity=model["creativity"],
                moodboards=moodboards,
                image_style_references=image_style_references,
            ),
        )
        job = await poll_op(
            cls,
            ApiEndpoint(path=f"/proxy/krea/jobs/{initial.job_id}", method="GET"),
            response_model=KreaJob,
            status_extractor=lambda r: r.status,
            queued_statuses=_KREA_QUEUED_STATUSES,
        )
        if not job.result or not job.result.urls:
            raise RuntimeError(f"Krea 2 job {job.job_id} completed without any image URLs.")
        image = await download_url_to_image_tensor(job.result.urls[0])
        return IO.NodeOutput(image)


class Krea2StyleReferenceNode(IO.ComfyNode):

    @classmethod
    def define_schema(cls) -> IO.Schema:
        return IO.Schema(
            node_id="Krea2StyleReferenceNode",
            display_name="Krea 2 Style Reference",
            category="partner/image/Krea",
            description=(
                "Add an image style reference to a Krea 2 generation. Chain multiple Krea 2 "
                "Style Reference nodes (max 10) and feed the final `style_reference` output "
                "into Krea 2 Image. Each image is uploaded to ComfyAPI storage and passed as URL."
            ),
            inputs=[

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Re-run the node once — transient Krea-side failures are common.
  2. Soften or shorten the prompt if content policy is suspected.
  3. Check the Krea service status / try the same generation on krea.ai to confirm the account and prompt work.
  4. If it persists for all prompts, update comfy_api_nodes in case the KreaJob model no longer matches the live API shape.
Defensive patterns

Strategy: retry

Type guard

def krea_job_has_output(job: KreaJob) -> bool:
    return bool(job.result and job.result.urls)

Try / catch

last: Exception | None = None
for attempt in range(2):
    try:
        return await krea_execute(...)
    except RuntimeError as e:
        if "without any image URLs" in str(e):
            last = e
            continue  # transient Krea-side empty result; retry once
        raise
raise last

Prevention

When it happens

Trigger: poll_op on /proxy/krea/jobs/<job_id> completing with a KreaJob whose status is terminal but result.urls missing/empty — server-side generation failure reported as done, content-policy kill, or a response-shape change dropping urls.

Common situations: Prompt rejected by Krea's safety filter after job acceptance; transient Krea infrastructure failure that ends jobs without output; API version change renaming the urls field (would need a comfy_api_nodes update).

Related errors


AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14). Data as JSON: /api/errors/3dcf3c3b3f927c04. Report an issue: GitHub.