Skip to main content

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)

Source distribution for nexblue-api 0.1.3
File Size Uploaded
nexblue_api-0.1.3.tar.gz 12.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nexblue-api 0.1.3
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page