diff --git a/homeassistant/components/elevenlabs/__init__.py b/homeassistant/components/elevenlabs/__init__.py
index e8a378d56c61d2faed62de0caac1325e6b1608c4..e5807fec67c74ee7fe69b35f777a908638df2711 100644
--- a/homeassistant/components/elevenlabs/__init__.py
+++ b/homeassistant/components/elevenlabs/__init__.py
@@ -6,11 +6,16 @@ from dataclasses import dataclass
 
 from elevenlabs import AsyncElevenLabs, Model
 from elevenlabs.core import ApiError
+from httpx import ConnectError
 
 from homeassistant.config_entries import ConfigEntry
 from homeassistant.const import CONF_API_KEY, Platform
 from homeassistant.core import HomeAssistant
-from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryError
+from homeassistant.exceptions import (
+    ConfigEntryAuthFailed,
+    ConfigEntryError,
+    ConfigEntryNotReady,
+)
 from homeassistant.helpers.httpx_client import get_async_client
 
 from .const import CONF_MODEL
@@ -48,6 +53,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ElevenLabsConfigEntry) -
     model_id = entry.options[CONF_MODEL]
     try:
         model = await get_model_by_id(client, model_id)
+    except ConnectError as err:
+        raise ConfigEntryNotReady("Failed to connect") from err
     except ApiError as err:
         raise ConfigEntryAuthFailed("Auth failed") from err
 
diff --git a/tests/components/elevenlabs/conftest.py b/tests/components/elevenlabs/conftest.py
index d410f8bccddbb3d20573e2427511968f0542ef64..1c261e2947acfa54b45330384da5297c7000b50d 100644
--- a/tests/components/elevenlabs/conftest.py
+++ b/tests/components/elevenlabs/conftest.py
@@ -5,6 +5,7 @@ from unittest.mock import AsyncMock, patch
 
 from elevenlabs.core import ApiError
 from elevenlabs.types import GetVoicesResponse
+from httpx import ConnectError
 import pytest
 
 from homeassistant.components.elevenlabs.const import CONF_MODEL, CONF_VOICE
@@ -34,21 +35,55 @@ def _client_mock():
 @pytest.fixture
 def mock_async_client() -> Generator[AsyncMock]:
     """Override async ElevenLabs client."""
-    with patch(
-        "homeassistant.components.elevenlabs.config_flow.AsyncElevenLabs",
-        return_value=_client_mock(),
-    ) as mock_async_client:
+    with (
+        patch(
+            "homeassistant.components.elevenlabs.AsyncElevenLabs",
+            return_value=_client_mock(),
+        ) as mock_async_client,
+        patch(
+            "homeassistant.components.elevenlabs.config_flow.AsyncElevenLabs",
+            new=mock_async_client,
+        ),
+    ):
+        yield mock_async_client
+
+
+@pytest.fixture
+def mock_async_client_api_error() -> Generator[AsyncMock]:
+    """Override async ElevenLabs client with ApiError side effect."""
+    client_mock = _client_mock()
+    client_mock.models.get_all.side_effect = ApiError
+    client_mock.voices.get_all.side_effect = ApiError
+
+    with (
+        patch(
+            "homeassistant.components.elevenlabs.AsyncElevenLabs",
+            return_value=client_mock,
+        ) as mock_async_client,
+        patch(
+            "homeassistant.components.elevenlabs.config_flow.AsyncElevenLabs",
+            new=mock_async_client,
+        ),
+    ):
         yield mock_async_client
 
 
 @pytest.fixture
-def mock_async_client_fail() -> Generator[AsyncMock]:
+def mock_async_client_connect_error() -> Generator[AsyncMock]:
     """Override async ElevenLabs client."""
-    with patch(
-        "homeassistant.components.elevenlabs.config_flow.AsyncElevenLabs",
-        return_value=_client_mock(),
-    ) as mock_async_client:
-        mock_async_client.side_effect = ApiError
+    client_mock = _client_mock()
+    client_mock.models.get_all.side_effect = ConnectError("Unknown")
+    client_mock.voices.get_all.side_effect = ConnectError("Unknown")
+    with (
+        patch(
+            "homeassistant.components.elevenlabs.AsyncElevenLabs",
+            return_value=client_mock,
+        ) as mock_async_client,
+        patch(
+            "homeassistant.components.elevenlabs.config_flow.AsyncElevenLabs",
+            new=mock_async_client,
+        ),
+    ):
         yield mock_async_client
 
 
diff --git a/tests/components/elevenlabs/test_config_flow.py b/tests/components/elevenlabs/test_config_flow.py
index 95e7ab5214e0b3120494b9670729f44afd9a4c18..7eeb0a6eb469d207c82e47e3806b5281a4cee476 100644
--- a/tests/components/elevenlabs/test_config_flow.py
+++ b/tests/components/elevenlabs/test_config_flow.py
@@ -2,6 +2,8 @@
 
 from unittest.mock import AsyncMock
 
+import pytest
+
 from homeassistant.components.elevenlabs.const import (
     CONF_CONFIGURE_VOICE,
     CONF_MODEL,
@@ -56,7 +58,10 @@ async def test_user_step(
 
 
 async def test_invalid_api_key(
-    hass: HomeAssistant, mock_setup_entry: AsyncMock, mock_async_client_fail: AsyncMock
+    hass: HomeAssistant,
+    mock_setup_entry: AsyncMock,
+    mock_async_client_api_error: AsyncMock,
+    request: pytest.FixtureRequest,
 ) -> None:
     """Test user step with invalid api key."""
 
@@ -77,8 +82,8 @@ async def test_invalid_api_key(
 
     mock_setup_entry.assert_not_called()
 
-    # Reset the side effect
-    mock_async_client_fail.side_effect = None
+    # Use a working client
+    request.getfixturevalue("mock_async_client")
 
     result = await hass.config_entries.flow.async_configure(
         result["flow_id"],
diff --git a/tests/components/elevenlabs/test_setup.py b/tests/components/elevenlabs/test_setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..18b90ca35619a9746f80e36ca47894af4403f17c
--- /dev/null
+++ b/tests/components/elevenlabs/test_setup.py
@@ -0,0 +1,36 @@
+"""Tests for the ElevenLabs TTS entity."""
+
+from __future__ import annotations
+
+from unittest.mock import MagicMock
+
+from homeassistant.config_entries import ConfigEntryState
+from homeassistant.core import HomeAssistant
+
+from tests.common import MockConfigEntry
+
+
+async def test_setup(
+    hass: HomeAssistant,
+    mock_async_client: MagicMock,
+    mock_entry: MockConfigEntry,
+) -> None:
+    """Test entry setup without any exceptions."""
+    mock_entry.add_to_hass(hass)
+    await hass.config_entries.async_setup(mock_entry.entry_id)
+    assert mock_entry.state == ConfigEntryState.LOADED
+    # Unload
+    await hass.config_entries.async_unload(mock_entry.entry_id)
+    assert mock_entry.state == ConfigEntryState.NOT_LOADED
+
+
+async def test_setup_connect_error(
+    hass: HomeAssistant,
+    mock_async_client_connect_error: MagicMock,
+    mock_entry: MockConfigEntry,
+) -> None:
+    """Test entry setup with a connection error."""
+    mock_entry.add_to_hass(hass)
+    await hass.config_entries.async_setup(mock_entry.entry_id)
+    # Ensure is not ready
+    assert mock_entry.state == ConfigEntryState.SETUP_RETRY