{"record":{"id":"d9e1e32576239c38","repo":"Comfy-Org/ComfyUI","slug":"the-remote-service-appears-unreachable-at-this-tim","errorCode":null,"errorMessage":"The remote service appears unreachable at this time.","messagePattern":"The remote service appears unreachable at this time\\.","errorType":"exception","errorClass":"ApiServerError","httpStatus":null,"severity":"error","filePath":"comfy_api_nodes/util/download_helpers.py","lineNumber":198,"sourceCode":"            raise ProcessingInterrupted(\"Task cancelled\") from None\n        except (ClientError, OSError) as e:\n            if attempt <= max_retries:\n                request_logger.log_request_response(\n                    operation_id=op_id,\n                    request_method=\"GET\",\n                    request_url=url,\n                    error_message=f\"{type(e).__name__}: {str(e)} (will retry)\",\n                )\n                await sleep_with_interrupt(delay, cls, None, None, None)\n                delay *= retry_backoff\n                continue\n\n            diag = await _diagnose_connectivity()\n            if not diag[\"internet_accessible\"]:\n                raise LocalNetworkError(\n                    \"Unable to connect to the network. Please check your internet connection and try again.\"\n                ) from e\n            raise ApiServerError(\"The remote service appears unreachable at this time.\") from e\n        finally:\n            if stop_evt is not None:\n                stop_evt.set()\n            if monitor_task:\n                monitor_task.cancel()\n                with contextlib.suppress(Exception):\n                    await monitor_task\n            if req_task and not req_task.done():\n                req_task.cancel()\n                with contextlib.suppress(Exception):\n                    await req_task\n            if session:\n                with contextlib.suppress(Exception):\n                    await session.close()\n            if fhandle:\n                with contextlib.suppress(Exception):\n                    fhandle.flush()\n                    fhandle.close()","sourceCodeStart":180,"sourceCodeEnd":216,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy_api_nodes/util/download_helpers.py#L180-L216","documentation":"Companion to 775: the request failed with ClientError/OSError after retries, but connectivity diagnosis shows the local network IS working — so the remote API endpoint itself is unreachable. Raised as ApiServerError pointing at the service, not the user's machine.","triggerScenarios":"The local internet probe succeeds but the specific API host cannot be reached: provider outage, regional CDN issue, host blocked by a firewall rule, stale/hardcoded endpoint, or the service hostname no longer resolving to a live server.","commonSituations":"Provider-side outage (check status page); DNS entry for the API removed after a shutdown; a firewall allowlist that does not include the media host; asymmetric routing via VPN.","solutions":["Open the API host directly in a browser or with curl from the same machine to confirm reachability.","Check the provider's status page / support channels for an outage.","Update ComfyUI — endpoint hostnames occasionally migrate.","If behind a firewall, allow egress to the API's media domain."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"import socket\n\ntry:\n    socket.getaddrinfo(api_host, 443)\nexcept socket.gaierror:\n    raise RuntimeError(f'Cannot resolve API host {api_host}; endpoint may have moved')","typeGuard":null,"tryCatchPattern":"try:\n    await download(url, ...)\nexcept ApiServerError:\n    await asyncio.sleep(60)\n    return await download(url, ...)  # provider outages are usually transient","preventionTips":["Watch the provider's status page when ApiServerError appears repeatedly.","Keep ComfyUI updated so API endpoints match current hostnames.","Firewall rules must allow the provider's media domains, not just the main API host."],"tags":["network","api-server-error","outage","download"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}