AuroraPlus is a package to pull data from https://api.auroraenergy.com.au/api. To use the Aurora+ API you need a valid account with Aurora.
Requirements
- Install Python 3.9 (for all users)
pip install .
Usage
Obtain a token
The easieast way to obtain a new token is to use the auroraplus_get_token
script.
To do this more programatically, obtaining a token is an interactive process where the user needs to log on to the AuroraPlus web application.
>>> import auroraplus
>>> api = auroraplus.AuroraPlusApi()
>>> api.oauth_authorize()
'https://customers.auroraenergy.com.au/auroracustomers1p.onmicrosoft.com/b2c_1a_sign_in//oauth2/v2.0/authorize?response_type=code&client_id=2ff9da64-8629-4a92-a4b6-850a3f02053d&redirect_uri=https%3A%2F%2Fmy.auroraenergy.coom.au%2Flogin%2Fredirect&scope=openid+profile+offline_access&state=...&client_info=1'
Follow the URL above in a browser to authenticate with username+password and MFA. This will redirect to an error page (Cradle Mountain). Copy the full URL, of the error page and continue.
>>> api.oauth_redirect('https://my.auroraenergy.com.au/login/redirect?state=...')
{'id_token': 'ey...', 'access_token': 'ey...', 'token_type': 'bearer', ...}
The api object is now ready to use (start with api.get_info(). The token
returned in the last step can be saved for later use when re-initialising the
api object without having to follow the OAuth flow to obtain a new
authorisation.
Connect to Aurora+ API with a pre-issued token
import auroraplus
api = auroraplus.AuroraPlusApi(token={"access_token": "...", "token_type": "bearer"})
api.get_info()
For backward compatibility with users of the login/password method, the
access_token can be passed as the password if the user is empty.
import auroraplus
api = auroraplus.AuroraPlusApi(password=<ACCESS_TOKEN>)
api.get_info()
Get current account information
api.getcurrent()
getcurrent() gets the following data:
EstimatedBalance - This is shown in the Aurora+ app as 'Balance'
UsageDaysRemaining - This is shown in the Aurora+ app as 'Days Prepaid'
AverageDailyUsage
AmountOwed
ActualBalance
UnbilledAmount
BillTotalAmount
NumberOfUnpaidBills
BillOverDueAmount
Note: All data except EstimatedBalance is updated Daily.
If relevant, time-of-use tariffs can be found in the following attributes:
CurrentTimeOfUse
CurrentTimeOfUsePeriodEndDate
CurrentTimeOfUseType
An example getting specific data with getcurrent:
import auroraplus
api = auroraplus.AuroraPlusApi(token={"access_token": "...", "token_type": "bearer"})
api.get_info()
if (not api.Error):
api.getcurrent()
print(api.AmountOwed)
else:
print(api.Error)
Get summary usage information
api.getsummary()
Note: This returns two collections, DollarValueUsage and KilowattHourUsage.
An example getting specific data with getsummary:
import auroraplus
api = auroraplus.AuroraPlusApi(token={"access_token": "...", "token_type": "bearer"})
api.get_info()
if (not api.Error):
api.getsummary()
print(api.DollarValueUsage['T41'])
print(api.DollarValueUsage['T31'])
print(api.DollarValueUsage['Other'])
print(api.DollarValueUsage['Total'])
print(api.KilowattHourUsage['T41'])
print(api.KilowattHourUsage['T31'])
print(api.KilowattHourUsage['Total'])
else:
print(api.Error)
Note: Offpeak tarrifs not listed
Get usage data
The following returns all available data in json format for each timespan:
api.getday()
api.getweek()
api.getmonth()
api.getquarter()
api.getyear()
Full example:
api = auroraplus.AuroraPlusApi(token={"access_token": "...", "token_type": "bearer"})
api.get_info()
if (not api.Error):
api.getcurrent()
print(api.AmountOwed)
api.getday()
print(api.day)
api.getweek()
print(api.week)
api.getmonth()
print(api.month
api.getyear()
print(api.year)
else:
print(api.Error)
Get Power Hour
Information about upcoming Power Hour can be obtained with the getpowerhour method. It ppopulates a powerhour attribute.
import json
api = auroraplus.AuroraPlusApi(token={"access_token": "...", "token_type": "bearer"})
api.getcurrent()
api.getpowerhour()
print(json.dumps(api.powerhour, indent=2))
[
{
"EventName": "Grand Final Weekend",
"PowerHourEventId": 114,
"StartDateTime": "2026-08-25T09:32:42",
"OfferExpiryDateTime": "2026-09-27T12:55:00",
"TimeslotAccepted": {
"PowerHourTimeSlotId": 906,
"StartDateTime": "2026-09-25T13:00:00",
"EndDateTime": "2026-09-25T17:00:00",
"ExpiryDateTime": "2026-09-25T12:55:00"
},
"TimeslotAll": [
{
"PowerHourTimeSlotId": 901,
"StartDateTime": "2026-09-24T11:00:00",
"EndDateTime": "2026-09-24T15:00:00",
"ExpiryDateTime": "2026-09-24T10:55:00"
},
...
Development
Tests
Currently, tests only do a lint check.
pip install -e .[test]
pytest
Some errors can be fixed automatically with
ruff check --fix
Metadata
Release files for auroraplus 1.7.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 | Provenance | |
|---|---|---|---|---|
| auroraplus-1.7.0.tar.gz | 21.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auroraplus-1.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.6 kB
Release files / auroraplus-1.7.0.tar.gz
| Download URL | auroraplus-1.7.0.tar.gz |
|---|---|
| Size | 21.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f226afd96bc19acd2f64b109cb9c1db70b9f37a88b9937ead3df10716bb4ac1
|
|
BLAKE2b-256 checksum How to use checksums |
0265ff48f03ea4c1438dd1504d702170bcfbd35ce0ec4af28c269dfc590e6389
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 21, 2026.
Transparency logRelease files / auroraplus-1.7.0-py3-none-any.whl
| Download URL | auroraplus-1.7.0-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0852b35962b78dc376b7e30f19cd8e5d975933b51e9d88772f1de4c1fdbfee5d
|
|
BLAKE2b-256 checksum How to use checksums |
30396ff5914268b3337179372ae05192bbd41d505efcd3896b4d31f71c60abb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 21, 2026.
Transparency logSecurity for auroraplus 1.7.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for auroraplus-1.7.0.tar.gz
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 Oct 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.