anycubic-cloud-api
Async Python client for the Anycubic Cloud API and its MQTT telemetry stream.
Extracted from the Home Assistant Anycubic integration so it can be versioned, tested and used independently.
Attribution
The bulk of this library is the work of @WaresWichall, from hass-anycubic_cloud — the Anycubic cloud API client, the MQTT layer and the printer data models all originated there, under GPL-3.0.
This package extracts that code so it can be versioned and tested on its own, and adds to it: the LAN Mode client, the filament-usage maths, tolerant parsing of partial reports, and the test suite. Those additions and modifications are by @Nino6689, from 2026 onwards.
It remains GPL-3.0-or-later, as it must.
Anycubic's certificates
This package ships Anycubic's own TLS certificates and client key, because their MQTT broker requires mutual TLS using that identity and there is no other way for a third-party client to reach it. They are Anycubic's property, not covered by this licence, and no ownership is claimed — see COPYRIGHT. They are a shared identity taken from Anycubic's own slicer rather than a per-user credential, and they came from the upstream project this is derived from.
The LAN Mode client needs none of this. If you only talk to the printer locally, no Anycubic credential is involved at any point.
Install
pip install anycubic-cloud-api
Use
import aiohttp
from anycubic_cloud_api import AnycubicMQTTAPI, AnycubicAuthMode
async with aiohttp.ClientSession() as session:
api = AnycubicMQTTAPI(session=session)
api.set_authentication(auth_token="eyJ...", auth_mode=AnycubicAuthMode.SLICER)
if await api.check_api_tokens():
for printer in await api.list_my_printers():
print(printer.name, printer.current_status)
Authentication
Anycubic's login is captcha- and 2FA-protected, so there is no automated sign-in: you supply a token obtained from the Anycubic slicer, website, or Android app. Slicer tokens are 90-day JWTs and additionally unlock the MQTT stream; web tokens are polling-only.
TLS
The MQTT broker requires mutual TLS using Anycubic's own certificates, which ship inside this package. The client verifies the broker against Anycubic's pinned root CA with hostname checking enabled. Two relaxations are unavoidable and forced by Anycubic's certificates:
- their client certificate is SHA-1 signed, so OpenSSL 3.x will not load it at the default security level
- their root CA omits the
keyUsageextension, which Python 3.13+ rejects as a trust anchor underVERIFY_X509_STRICT
Neither weakens chain or hostname verification.
Licence
GPL-3.0-or-later, matching the integration it came from.
Release files for anycubic-cloud-api 0.4.17
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| anycubic_cloud_api-0.4.17.tar.gz | 109.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| anycubic_cloud_api-0.4.17-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 212.5 kB
Release files / anycubic_cloud_api-0.4.17.tar.gz
| Download URL | anycubic_cloud_api-0.4.17.tar.gz |
|---|---|
| Size | 109.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b27d7d1b3e84ea099da89cfb1c7fd10da8fdb89815f067ed0bd70b020d799693
|
|
BLAKE2b-256 checksum How to use checksums |
99bb9e434894681d64d3f987d2bc22e5855b30a7f578762d9dd3a5a82e3a1cea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|
Release files / anycubic_cloud_api-0.4.17-py3-none-any.whl
| Download URL | anycubic_cloud_api-0.4.17-py3-none-any.whl |
|---|---|
| Size | 103.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b532890e904c53a6f67fb2b490f454e2bc4046fba727d758823004cc4a4b3680
|
|
BLAKE2b-256 checksum How to use checksums |
adf6380c0c947204f8b7ddb0f9bcfcefc060d068e7312da50fc232b40deb95f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|