mem0ai/mem0 · error · NetworkError
NET_CONNECT
NET_CONNECT
Error message
Connection failed: {str(e)} What it means
The client-side translation of httpx.ConnectError into NetworkError with error_code NET_CONNECT, produced by the api_error_handler decorator. It means the TCP/TLS connection to the Mem0 API could not be established at all; the message embeds httpx's original error string (e.g. DNS failure, connection refused).
Source
Thrown at mem0/client/utils.py:79
status_code=e.response.status_code,
response_text=response_text,
details=error_details,
debug_info=debug_info,
)
def _handle_request_error(e):
logger.error(f"Request error occurred: {e}")
if isinstance(e, httpx.TimeoutException):
raise NetworkError(
message=f"Request timed out: {str(e)}",
error_code="NET_TIMEOUT",
suggestion="Please check your internet connection and try again",
debug_info={"error_type": "timeout", "original_error": str(e)},
)
elif isinstance(e, httpx.ConnectError):
raise NetworkError(
message=f"Connection failed: {str(e)}",
error_code="NET_CONNECT",
suggestion="Please check your internet connection and try again",
debug_info={"error_type": "connection", "original_error": str(e)},
)
else:
raise NetworkError(
message=f"Network request failed: {str(e)}",
error_code="NET_GENERIC",
suggestion="Please check your internet connection and try again",
debug_info={"error_type": "request", "original_error": str(e)},
)
def api_error_handler(func):
"""Decorator to handle API errors consistently.
This decorator catches HTTP and request errors and converts them toView on GitHub (pinned to 001c235229)
Solutions
- Verify network egress to the API host (curl https://api.mem0.ai) from the same environment
- Fix any custom base_url typo or remove it to use the default
- Set HTTPS_PROXY/HTTP_PROXY if behind a corporate proxy
- If offline intentionally, switch to the open-source self-hosted Memory class instead of the hosted client
Example fix
# before client = MemoryClient(base_url="https://api.mem0.ai/", api_key=API_KEY) # blocked network # after export HTTPS_PROXY=http://proxy.corp:8080 client = MemoryClient(api_key=API_KEY)
Defensive patterns
Strategy: retry
Validate before calling
import socket
try:
socket.getaddrinfo("api.mem0.ai", 443)
except OSError as e:
raise RuntimeError(f"cannot reach api.mem0.ai: {e}; check DNS/proxy/egress") Type guard
def is_connect_error(err) -> bool:
return getattr(err, "error_code", None) == "NET_CONNECT" Try / catch
try:
client.get_all(user_id=uid)
except NetworkError as e:
if e.error_code == "NET_CONNECT":
logger.error("no route to API: %s", e.debug_info.get("original_error"))
raise SystemExit(2) # config/network problem; retrying won't help
raise Prevention
- Verify egress/DNS from the runtime environment before deploying (containers, CI, lambdas)
- Configure proxy env vars explicitly in proxy-bound environments
- Connection failures are not transient — fix the network instead of retrying blindly
When it happens
Trigger: Any decorated API call when DNS resolution fails, the host is unreachable, a proxy refuses the connection, or TLS handshake fails. Commonly '[Errno -2] Name or service not known' or 'Connection refused' inside the message.
Common situations: Typos or custom base_url overrides; running in sandboxes/containers without DNS or egress; corporate proxies requiring HTTP_PROXY/HTTPS_PROXY env vars; firewall blocking api.mem0.ai; offline development.
Related errors
- Invalid response format from ping endpoint
- LiteLLM failed: ${message}
- NET_TIMEOUT
- NET_GENERIC
- HTTP ${resp.status}: ${detail}
AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15).
Data as JSON: /api/errors/7fa99db74abd10e7.
Report an issue: GitHub.