Environment:Elevenlabs Elevenlabs python Python Httpx
| Knowledge Sources | |
|---|---|
| Domains | Infrastructure, API_Client |
| Last Updated | 2026-02-15 12:00 GMT |
Overview
Python 3.8+ environment with httpx, pydantic, and requests for the ElevenLabs REST API client.
Description
This environment provides the core runtime for all synchronous HTTP-based ElevenLabs SDK operations. It is built on httpx for HTTP transport, pydantic for data validation and serialization, and typing_extensions for backporting newer type hints to Python 3.8. The client wrapper uses httpx internally for all REST API calls including text-to-speech, voice management, speech-to-text (batch), and voice cloning endpoints.
Usage
Use this environment for any ElevenLabs SDK operation that communicates over HTTP REST. This includes client initialization via `ElevenLabs()`, voice search, text-to-speech conversion, batch speech-to-text, and instant voice cloning. It is the mandatory prerequisite for the sync and async HTTP client infrastructure.
System Requirements
| Category | Requirement | Notes |
|---|---|---|
| OS | Any (Windows, macOS, Linux) | Cross-platform support declared in pyproject.toml |
| Python | >= 3.8 | Classifiers list 3.8 through 3.12 |
| Network | Internet access to api.elevenlabs.io | Production, US, EU, and India region endpoints available |
Dependencies
Python Packages
- `httpx` >= 0.21.2
- `pydantic` >= 1.9.2
- `pydantic-core` >= 2.18.2
- `requests` >= 2.20
- `typing_extensions` >= 4.0.0
Credentials
The following environment variables must be set:
- `ELEVENLABS_API_KEY`: ElevenLabs API key. The client reads this via `os.getenv("ELEVENLABS_API_KEY")` if no `api_key` parameter is passed to the constructor.
Quick Install
# Install the ElevenLabs SDK (includes all HTTP dependencies)
pip install elevenlabs
# Or install core dependencies manually
pip install httpx>=0.21.2 pydantic>=1.9.2 pydantic-core>=2.18.2 requests>=2.20 typing_extensions>=4.0.0
Code Evidence
API key auto-detection from environment in `client.py:50`:
api_key: typing.Optional[str] = os.getenv("ELEVENLABS_API_KEY"),
Default timeout configuration in `client.py:51`:
timeout: typing.Optional[float] = 240,
Timeout defaulting logic in `base_client.py:91-92`:
_defaulted_timeout = (
timeout if timeout is not None else 240 if httpx_client is None else httpx_client.timeout.read
)
Region endpoint definitions in `environment.py:7-10`:
class ElevenLabsEnvironment(enum.Enum):
PRODUCTION = "https://api.elevenlabs.io"
PRODUCTION_US = "https://api.us.elevenlabs.io"
PRODUCTION_EU = "https://api.eu.residency.elevenlabs.io"
PRODUCTION_INDIA = "https://api.in.residency.elevenlabs.io"
Common Errors
| Error Message | Cause | Solution |
|---|---|---|
| `ELEVENLABS_API_KEY` not set and no `api_key` passed | Missing API credentials | Set `ELEVENLABS_API_KEY` environment variable or pass `api_key=` to `ElevenLabs()` |
| `httpx.TimeoutException` | Request exceeded 240s default timeout | Increase timeout: `ElevenLabs(timeout=600)` or pass custom `httpx_client` |
| `httpx.ConnectError` | Cannot reach api.elevenlabs.io | Check network connectivity and firewall rules |
Compatibility Notes
- Cross-platform: Works on Windows, macOS, and Linux per pyproject.toml classifiers.
- Python 3.8+: Uses `typing_extensions` for backporting features to Python 3.8.
- Custom httpx client: Users can pass a pre-configured `httpx.Client` or `httpx.AsyncClient` for custom proxy, SSL, or timeout settings.
- Regional endpoints: Supports Production (global), US, EU, and India residency endpoints via `ElevenLabsEnvironment`.
Related Pages
- Implementation:Elevenlabs_Elevenlabs_python_ElevenLabs_Init
- Implementation:Elevenlabs_Elevenlabs_python_VoicesClient_Search
- Implementation:Elevenlabs_Elevenlabs_python_TextToSpeechClient_Convert
- Implementation:Elevenlabs_Elevenlabs_python_IvcClient_Create
- Implementation:Elevenlabs_Elevenlabs_python_SpeechToTextClient_Convert