landbook-api
Unofficial Python client for the Landbook smart home cloud API (Netprisma/Landecia), reverse-engineered from the Landbook iOS app. Covers:
- REST: email/password login, token refresh, device discovery, TSL (Thing Specification Language) model fetch, device attribute reads.
- MQTT: a persistent WebSocket/TLS pub-sub connection for real-time device control and state (
LandbookMQTTClient).
This library powers the landbook-ha Home Assistant integration, but has no dependency on Home Assistant and can be used standalone.
Installation
pip install landbook-api
Usage
from landbook_api import login, get_device_list, get_tsl, LandbookMQTTClient
bearer_token, uid, refresh_token = login("you@example.com", "your-password", region="us")
devices = get_device_list(bearer_token, region="us")
pk = devices[0]["productKey"]
dk = devices[0]["deviceKey"]
properties = get_tsl(bearer_token, pk, region="us")
client = LandbookMQTTClient(uid, bearer_token)
client.connect()
def on_message(topic_suffix: str, payload: dict) -> None:
print(topic_suffix, payload)
device_id = f"qd{pk}{dk}"
client.subscribe_device(device_id, on_message)
client.send_read(device_id, pk, dk, [p["code"] for p in properties])
Async equivalents (async_login, async_get_device_list, async_get_tsl, async_refresh_token, async_get_device_attributes) are also exported — each wraps the sync call in a thread executor.
Supported Regions
| Region | API |
|---|---|
| United States | iot-api.quectelus.com |
| Europe | iot-api.quecteleu.com |
| China | iot-gateway.quectel.com |
Pass region="us", "eu", or "cn" to any call (defaults to "us"). EU and CN are untested — reports welcome via issues.
Session Tokens
login() returns a (bearer_token, uid, refresh_token) tuple. The access token (bearer_token) is valid for 2 hours; the refresh token is valid for 30 days and must be used to obtain a new pair via refresh_token() before the access token expires. Both values should be persisted by the caller — this library does not manage token storage.
Development
pip install -e ".[test]"
pytest
Disclaimer
This is an unofficial, reverse-engineered client with no affiliation to Landbook, Netprisma, or Landecia. It may break if the upstream API changes.
Release files for landbook-api 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| landbook_api-0.3.1.tar.gz | 21.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| landbook_api-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.4 kB
Release files / landbook_api-0.3.1.tar.gz
| Download URL | landbook_api-0.3.1.tar.gz |
|---|---|
| Size | 21.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c9f89f095b101235c4f9b6df9afefd35d6b3c43ce62e7afd9be0ba7c2fb198d1
|
|
BLAKE2b-256 checksum How to use checksums |
739046f5da95db669558a5efcb4c71f9aba281970005e51ab4997a4598939611
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / landbook_api-0.3.1-py3-none-any.whl
| Download URL | landbook_api-0.3.1-py3-none-any.whl |
|---|---|
| Size | 10.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1149cd2782fe4b8997271023313cad8bf72f7e546acadcf770e9b42f66784699
|
|
BLAKE2b-256 checksum How to use checksums |
3e9addd778119090b666f9602cfa97d74a4184de74e4e1ae0e717efee4f7d564
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency log