tplink-deco-api
Python SDK for controlling TP-Link Deco mesh Wi-Fi routers via the internal HTTP API.
Installation
pip install tplink-deco-api
Usage
from tplink_deco_api import DecoClient
with DecoClient("192.168.68.1", "admin", "your-password") as deco:
for client in deco.get_client_list():
print(client.name, client.ip, client.connection_type)
Available methods
Session
| Method | Returns |
|---|---|
login() |
LoginResult |
logout() |
None |
is_authenticated() |
bool |
Typed queries
| Method | Returns |
|---|---|
get_device_list() |
list[Device] |
get_device_mode() |
DeviceMode |
get_wlan_config() |
WlanConfig |
get_performance() |
Performance |
get_client_list(deco_mac?) |
list[ClientDevice] |
get_client_totals(deco_mac?) |
NetworkTotals |
get_internet_status() |
InternetStatus |
get_wan_info(device_mac?) |
WanInfo |
get_dsl_status(device_mac?) |
DslStatus |
get_wireless_power(device_mac?) |
WirelessPower |
get_time_settings(device_mac?) |
TimeSettings |
get_log_types() |
list[LogType] |
Client management — deco.clients
| Method | Returns |
|---|---|
update(mac, name, client_type?) |
None |
remove(mac) |
None |
get_blocked() |
list[BlockedClient] |
block(mac, name, client_type) |
None |
unblock(mac) |
None |
update always sends the name: the firmware ignores an edit that does not
carry one, so pass the current name to change only the device type. remove
forgets an offline client; the router lists it again if it reconnects.
Fixed IPs — deco.address_reservations
| Method | Returns |
|---|---|
get_table() |
AddressReservationTable |
add(reservation) |
None |
modify(current, replacement) |
None |
remove(mac) |
None |
from tplink_deco_api import AddressReservation, DecoClient
with DecoClient("192.168.68.1", "admin", "your-password") as deco:
deco.address_reservations.add(AddressReservation("AA:BB:CC:DD:EE:FF", "192.168.68.50"))
deco.clients.update("AA:BB:CC:DD:EE:FF", "Living Room TV")
MAC addresses are accepted with : or - separators. Malformed MAC or IPv4
input raises ValueError before any request is sent.
Raw access
request(path, form, data) and request_list(path, form, data) send an
authenticated, encrypted request to any endpoint and return the decrypted
result (as an object or a list respectively). Use them for the endpoints
that have no typed wrapper yet — the full catalogue is documented in
docs/endpoints/.
Models
Every method returns typed dataclasses — no generic dictionaries.
client.mac # "AA:BB:CC:DD:EE:FF"
client.name # "MacBook Pro"
client.ip # "192.168.68.10"
client.connection_type # "band6"
client.online # True
device.device_model # "BE65"
device.software_ver # "1.2.10 Build 20251229"
wlan.band2_4.host.ssid # "My Network"
wlan.band2_4.guest.password # "guest-password"
perf.cpu_usage # 0.03
perf.mem_usage # 0.42
Requirements
- Python 3.14+
- TP-Link Deco router reachable on the local network
Support
This SDK is built and maintained on personal time, on hardware bought for the purpose. If it is useful to you, consider sponsoring the work — it keeps the devices, the testing and the releases coming.
License
Metadata
Release files for tplink-deco-api 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tplink_deco_api-2.0.0.tar.gz | 126.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tplink_deco_api-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 159.8 kB
Release files / tplink_deco_api-2.0.0.tar.gz
| Download URL | tplink_deco_api-2.0.0.tar.gz |
|---|---|
| Size | 126.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e8cdff5a07440a27e77f704b769f0eeeee385e6b6f49ccdc1f1abb28476e703a
|
|
BLAKE2b-256 checksum How to use checksums |
e63f455e9308f0e0bac0c6f85ad19010abd51b5889509221ba616d7bd0e654bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / tplink_deco_api-2.0.0-py3-none-any.whl
| Download URL | tplink_deco_api-2.0.0-py3-none-any.whl |
|---|---|
| Size | 33.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
27b06840ae604cb8df8f2c986191c8188b8a547cf4f56b6065b83b9739c814e6
|
|
BLAKE2b-256 checksum How to use checksums |
ea398aede12c9d90d0c9d84510aba9091af76fab31123b326d4e0ceddd6620eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|