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
- Re-run the node to restart the H5 authentication flow from scratch.
- Verify you completed the visual validation in the browser window the flow opened.
- If persistent, check for ComfyUI api-nodes updates - the response model (SeedanceGetVisualValidateSessionResponse) may need to match a changed backend contract.
- 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
- Cache and reuse an issued group_id so H5 auth rarely runs.
- Keep api-nodes updated - the session response schema tracks the backend contract.
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
- Reference asset {i} (Id={asset_id}) is not Active (Status={r
- Reference video {index} is too small: {w}x{h} = {pixels:,} t
- Reference video {index} is too large: {w}x{h} = {pixels:,} t
- ByteDance request failed. Code: {response.error['code']}, me
- Minimum supported duration for Seedance 1.5 Pro is 4 seconds
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/e0a3a9c486f82cff.
Report an issue: GitHub.