An open API service indexing awesome lists of open source software.

https://github.com/fulviofreitas/eero-api

Python API client for Eero mesh routers
https://github.com/fulviofreitas/eero-api

api-client async asyncio eero home-automation iot mesh-network networking pydantic python python3 smart-home wifi

Last synced: 2 months ago
JSON representation

Python API client for Eero mesh routers

Awesome Lists containing this project

README

          

# ๐Ÿ Eero API

**Your async Python toolkit for Eero mesh networks**

[![Python 3.12+](https://img.shields.io/badge/python-3.12+-3776ab?style=for-the-badge&logo=python&logoColor=white)](https://python.org)
[![PyPI](https://img.shields.io/pypi/v/eero-api?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/eero-api/)
[![License](https://img.shields.io/badge/license-MIT-22c55e?style=for-the-badge)](LICENSE)

---

_A modern, async-first Python SDK for the Eero mesh WiFi API._
_Raw JSON responses, system keyring integration, and smart caching._

[Get Started](#-quick-start) ยท [Documentation](#-docs) ยท [Ecosystem](#-ecosystem) ยท [License](#-license)

---

## โšก Why Eero API?

- ๐Ÿš€ **Async-first** โ€” Non-blocking, blazing fast
- ๐Ÿ” **Secure** โ€” System keyring for credentials
- ๐Ÿ“ฆ **Raw JSON** โ€” Direct API responses, no transformations
- โšก **Smart caching** โ€” Snappy responses

## ๐Ÿ“ฆ Install

```bash
pip install eero-api
# or with uv
uv add eero-api
```

## ๐Ÿš€ Quick Start

```python
import asyncio
from eero import EeroClient

async def main():
async with EeroClient() as client:
if not client.is_authenticated:
await client.login("you@example.com")
await client.verify(input("Code: "))

# All methods return raw JSON responses
response = await client.get_networks()
networks = response.get("data", {}).get("networks", [])

for network in networks:
print(f"๐Ÿ“ถ {network['name']}: {network.get('status')}")

asyncio.run(main())
```

> ๐Ÿ’ก Credentials are auto-saved to your system keyring

## ๐Ÿ“„ Raw Response Format

All API methods return the exact JSON from Eero's API:

```python
{
"meta": {"code": 200, "server_time": "..."},
"data": {
# Endpoint-specific payload
}
}
```

See [MIGRATION.md](MIGRATION.md) for details on the raw response architecture.

## ๐Ÿ“š Docs

| Guide | What's inside |
|-------|---------------|
| **[๐Ÿ“– Python API](../../wiki/Python-API)** | Full API reference |
| **[โš™๏ธ Configuration](../../wiki/Configuration)** | Auth & settings |
| **[๐Ÿ”ง Troubleshooting](../../wiki/Troubleshooting)** | Common fixes |
| **[๐Ÿ”„ Migration Guide](MIGRATION.md)** | v1.x โ†’ v2.0 migration |
| **[๐Ÿ  Wiki Home](../../wiki)** | All documentation |

## ๐Ÿ”— Ecosystem

| Project | Description |
|---------|-------------|
| **[๐Ÿ–ฅ๏ธ eero-cli](https://github.com/fulviofreitas/eero-cli)** | Terminal interface for Eero networks |
| **[๐Ÿ›œ eero-ui](https://github.com/fulviofreitas/eero-ui)** | Svelte dashboard for network management |
| **[๐Ÿ“Š eero-prometheus-exporter](https://github.com/fulviofreitas/eero-prometheus-exporter)** | Prometheus metrics for monitoring |

## โš ๏ธ Important Notes

> **Unofficial Project**: This library uses reverse-engineered APIs and is not affiliated with or endorsed by Eero.

> **Amazon Login Limitation**: If your Eero account uses Amazon for login, this library may not work directly due to API limitations. **Workaround**: Have someone in your household create a standard Eero account (with email/password) and invite them as an admin to your network. Then use those credentials to authenticate.

## ๐Ÿ“„ License

[MIT](LICENSE) โ€” Use it, fork it, build cool stuff ๐ŸŽ‰

---

## ๐Ÿ“Š Repository Metrics

![Repository Metrics](./metrics.repository.svg)