Comfy-Org/ComfyUI · error · RuntimeError

Seedance session {session.session_id} completed without a gr

Error message

Seedance session {session.session_id} completed without a group_id

What it means

After Seedance H5 visual authentication polling reaches 'completed', the session response must carry a group_id used for subsequent authenticated calls. An empty group_id means the auth flow finished abnormally, so the node raises RuntimeError rather than proceeding with no credentials.

Source

Thrown at comfy_api_nodes/nodes_bytedance.py:312

    logger.warning("Seedance authentication required. Open link: %s", session.h5_link)

    h5_text = f"Open this link in your browser and complete face verification:\n\n{session.h5_link}"

    result = await poll_op(
        cls,
        ApiEndpoint(path=f"/proxy/seedance/visual-validate/sessions/{session.session_id}"),
        response_model=SeedanceGetVisualValidateSessionResponse,
        status_extractor=lambda r: r.status,
        completed_statuses=["completed"],
        failed_statuses=["failed"],
        poll_interval=_VERIFICATION_POLL_INTERVAL_SEC,
        max_poll_attempts=(_VERIFICATION_POLL_TIMEOUT_SEC // _VERIFICATION_POLL_INTERVAL_SEC) - 1,
        estimated_duration=_VERIFICATION_POLL_TIMEOUT_SEC - 1,
        extra_text=h5_text,
    )

    if not result.group_id:
        raise RuntimeError(f"Seedance session {session.session_id} completed without a group_id")

    logger.warning("Seedance authentication complete. New GroupId: %s", result.group_id)
    PromptServer.instance.send_progress_text(
        f"Authentication complete. New GroupId: {result.group_id}", cls.hidden.unique_id
    )
    return result.group_id


async def _resolve_group_id(cls: type[IO.ComfyNode], group_id: str) -> str:
    if group_id and group_id.strip():
        return group_id.strip()
    return await _obtain_group_id_via_h5_auth(cls)


async def _create_seedance_asset(
    cls: type[IO.ComfyNode],
    *,
    group_id: str,

View on GitHub (pinned to 1c6d8d45b3)

Solutions

  1. Re-run the node to restart the H5 authentication flow from scratch.
  2. Verify you completed the visual validation in the browser window the flow opened.
  3. If persistent, check for ComfyUI api-nodes updates - the response model (SeedanceGetVisualValidateSessionResponse) may need to match a changed backend contract.
  4. Workaround: supply group_id explicitly so _resolve_group_id short-circuits and skips H5 auth.

Example fix

// before
group_id = ''  # forces H5 auth that yields no group
// after
group_id = '<your-issued-group-id>'
Defensive patterns

Strategy: fallback

Validate before calling

if not group_id or not group_id.strip():
    raise UserError('No cached Seedance group_id - H5 auth will run; complete it in the opened browser.')

Try / catch

try:
    gid = await _resolve_group_id(cls, group_id)
except RuntimeError as e:
    if 'without a group_id' in str(e):
        gid = await _resolve_group_id(cls, '')  # restart auth flow once
    else:
        raise

Prevention

When it happens

Trigger: _obtain_group_id_via_h5_auth poll returns completed but result.group_id is falsy - backend changed response shape, auth completed without granting a group, or proxy returned an unexpected payload.

Common situations: Seedance API backend change altering the response schema; expired/invalid H5 auth session that 'completes' without issuing a group; first-time setup where the H5 QR/visual validation was not actually finished by the user.

Related errors


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