NexBlue API
nexblue-api is the official asynchronous Python client for the NexBlue OpenAPI.
It is maintained by NexBlue and currently provides the communication layer used by
the NexBlue Home Assistant integration.
The package handles authentication, access-token refresh, charger discovery, charger telemetry, and start/stop charging commands. It is deliberately independent of Home Assistant so it can be reused by other Python applications.
Requirements
- Python 3.13 or later
- A NexBlue account with access to the NexBlue OpenAPI
Installing this library does not create, grant, or expand access to a NexBlue account or service.
Installation
pip install nexblue-api
Basic usage
Keep credentials outside source code. The example uses environment variables and a placeholder API base URL supplied by NexBlue.
import asyncio
import os
import aiohttp
from nexblue_api import NexBlueClient
async def main() -> None:
async with aiohttp.ClientSession() as session:
client = NexBlueClient(
session,
os.environ["NEXBLUE_API_BASE_URL"],
)
await client.async_login(
os.environ["NEXBLUE_USERNAME"],
os.environ["NEXBLUE_PASSWORD"],
)
for charger in await client.async_list_chargers():
status = await client.async_get_charger_status(charger.serial_number)
print(charger.serial_number, status.charging_state, status.power_kw)
asyncio.run(main())
Supported operations
- End-user login and refresh-token based access-token renewal
- Charger discovery
- Charger status and telemetry retrieval
- Start charging and stop charging commands
- Typed charger, status, and token models
- Safe exceptions for authentication, connection, rate-limit, offline-device, and rejected-command errors
Status values are normalized to the API's documented units: kW, kWh, A, and V. Charging commands can still be rejected by the API or charger, for example when the charger is offline or another user is controlling it.
Credential handling
Do not commit, log, or share usernames, passwords, access tokens, refresh tokens, or OAuth client credentials.
The client retains tokens only for its active lifetime. Applications that need to
restore a session should persist only the refresh token using their platform's
protected credential storage, then call async_refresh_access_token. Do not persist
an end-user password merely to perform automatic logins.
Successful login and refresh calls return a TokenBundle. Its account_id field is
the stable account subject provided by the access token when available. Applications
may use this value as a local, non-secret account identifier; they should not derive
identity from a username or log the access token itself.
This library does not embed NexBlue OAuth client credentials. Applications using an
external OAuth flow may provide an externally managed access token with
set_access_token.
Development
python -m pytest -q
python -m build
python -m twine check dist/*
Please report bugs through the repository issue tracker. Do not include credentials, tokens, full API responses, or personally identifiable charger information in issues.
License
Copyright 2026 NexBlue.
Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
Metadata
Release files for nexblue-api 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nexblue_api-0.1.3.tar.gz | 12.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nexblue_api-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.8 kB
Release files / nexblue_api-0.1.3.tar.gz
| Download URL | nexblue_api-0.1.3.tar.gz |
|---|---|
| Size | 12.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
958d7cf63c63a3d562727220e586a6c1b5e8277e000e859bfa023c3838c415c2
|
|
BLAKE2b-256 checksum How to use checksums |
bed9538835d301a3ce58d5bb74785f90a6eba465090faa5b0441bce59b3eaacd
|
| 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 Aug 26, 2026.
Transparency logRelease files / nexblue_api-0.1.3-py3-none-any.whl
| Download URL | nexblue_api-0.1.3-py3-none-any.whl |
|---|---|
| Size | 11.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
18af027b0245be785c9a8face798d5d3336829aff1196b13f1202ecc5fae9137
|
|
BLAKE2b-256 checksum How to use checksums |
65f47e121f1248f6a143c4a08d2776f1e8b03f8beb3ca341b5e1ec9a7b98497c
|
| 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 Aug 26, 2026.
Transparency log