{"record":{"id":"e0a3a9c486f82cff","repo":"Comfy-Org/ComfyUI","slug":"seedance-session-session-session-id-completed-wi","errorCode":null,"errorMessage":"Seedance session {session.session_id} completed without a group_id","messagePattern":"Seedance session (.+?) completed without a group_id","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/nodes_bytedance.py","lineNumber":312,"sourceCode":"    logger.warning(\"Seedance authentication required. Open link: %s\", session.h5_link)\n\n    h5_text = f\"Open this link in your browser and complete face verification:\\n\\n{session.h5_link}\"\n\n    result = await poll_op(\n        cls,\n        ApiEndpoint(path=f\"/proxy/seedance/visual-validate/sessions/{session.session_id}\"),\n        response_model=SeedanceGetVisualValidateSessionResponse,\n        status_extractor=lambda r: r.status,\n        completed_statuses=[\"completed\"],\n        failed_statuses=[\"failed\"],\n        poll_interval=_VERIFICATION_POLL_INTERVAL_SEC,\n        max_poll_attempts=(_VERIFICATION_POLL_TIMEOUT_SEC // _VERIFICATION_POLL_INTERVAL_SEC) - 1,\n        estimated_duration=_VERIFICATION_POLL_TIMEOUT_SEC - 1,\n        extra_text=h5_text,\n    )\n\n    if not result.group_id:\n        raise RuntimeError(f\"Seedance session {session.session_id} completed without a group_id\")\n\n    logger.warning(\"Seedance authentication complete. New GroupId: %s\", result.group_id)\n    PromptServer.instance.send_progress_text(\n        f\"Authentication complete. New GroupId: {result.group_id}\", cls.hidden.unique_id\n    )\n    return result.group_id\n\n\nasync def _resolve_group_id(cls: type[IO.ComfyNode], group_id: str) -> str:\n    if group_id and group_id.strip():\n        return group_id.strip()\n    return await _obtain_group_id_via_h5_auth(cls)\n\n\nasync def _create_seedance_asset(\n    cls: type[IO.ComfyNode],\n    *,\n    group_id: str,","sourceCodeStart":294,"sourceCodeEnd":330,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/nodes_bytedance.py#L294-L330","documentation":"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.","triggerScenarios":"_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.","commonSituations":"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.","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."],"exampleFix":"// before\ngroup_id = ''  # forces H5 auth that yields no group\n// after\ngroup_id = '<your-issued-group-id>'","handlingStrategy":"fallback","validationCode":"if not group_id or not group_id.strip():\n    raise UserError('No cached Seedance group_id - H5 auth will run; complete it in the opened browser.')","typeGuard":null,"tryCatchPattern":"try:\n    gid = await _resolve_group_id(cls, group_id)\nexcept RuntimeError as e:\n    if 'without a group_id' in str(e):\n        gid = await _resolve_group_id(cls, '')  # restart auth flow once\n    else:\n        raise","preventionTips":["Cache and reuse an issued group_id so H5 auth rarely runs.","Keep api-nodes updated - the session response schema tracks the backend contract."],"tags":["comfyui","seedance","bytedance","auth","runtime-error","api-nodes"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}