Toyota Connected Services Europe Python module
⚠️ This is still in beta ⚠️ Only EU is supported, other regions are not possible so far.
Summary
Description
Python 3 package to communicate with Toyota Connected Europe Services. This is an unofficial package and Toyota can change their API at any point without warning.
Installation
This package can be installed through pip.
pip install pytoyoda
Docs
https://pytoyoda.github.io/pytoyoda/pytoyoda.html
Usage
For a quick start on how to use the package take a look at the simple_client_example.py file contained in the report. You can also use and execute this file directly by using the following commands:
python -m venv pytoyoda
source pytoyoda/bin/activate
python -m pip install "pytoyoda@git+https://github.com/pytoyoda/pytoyoda@main"
curl -LO https://raw.githubusercontent.com/pytoyoda/pytoyoda/main/sandbox/simple_client_example.py
# Create a credentials.json file with {"username":"your@mail.tld","password":"yourpassword"}
python simple_client_example.py
Please note that the simple_client_example.py file is only to be regarded as a playground and is intended to provide an initial insight into the possibilities. It is not an officially supported interface of the pytoyoda API!
For an overview of the current official interfaces, please take a look at our documentation.
Known issues
- Statistical endpoint will return
Noneif no trip have been performed in the requested timeframe. This problem will often happen at the start of each week, month or year. Also daily stats will of course also be unavailable if no trip have been performed. - Currently, it is only possible to get various vehicle information. Functions for controlling and setting vehicle properties have not yet been implemented.
GET /v1/global/remote/status(used byVehicle.lock_status) returns429 APIGW-403 "Unauthorized"frequently, often without obvious correlation to call rate. Empirically, issuingPOST /v1/global/remote/refresh-statusfirst - the same wake the Toyota Android app uses - improves the success rate of subsequent GETs and gives fresheroccurrence_datepayloads, suggesting at least some of the 429s come from a stale or empty server-side cache rather than rate-limiting. Other 429s appear to be unrelated to cache state and happen seemingly at random; pytoyoda retries those with exponential backoff. CallVehicle.refresh_status()first, then pollVehicle.update(only=["status"])untillock_status.last_updatedadvances.
Contributing
This python module uses poetry (>= 2.0.0) and pre-commit.
To start contributing, fork this repository and run poetry install. Then create a new branch. Before making a PR, please run pre-commit poetry run pre-commit run --all-files and make sure that all tests passes locally first by running pytest tests/.
Note
This is a friendly community fork of the original project by @DurgNomis-drol, to ease up on maintenance and the bus factor for this project.
Credits
Special thanks go @DurgNomis-drol for starting this project! A huge thanks go to @calmjm for making tojota.
Release files for pytoyoda 5.2.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 | |
|---|---|---|---|
| pytoyoda-5.2.1.tar.gz | 55.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytoyoda-5.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 126.1 kB
Release files / pytoyoda-5.2.1.tar.gz
| Download URL | pytoyoda-5.2.1.tar.gz |
|---|---|
| Size | 55.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f1a04fc6f7f96bde07c89c2ed84e5d71ce3f66ea8e5c76bf181b75cfc3318f6e
|
|
BLAKE2b-256 checksum How to use checksums |
77cfd0d4b1184df474ec3962783938cde4e9801d09d2fb9cc7e25eb762cef58c
|
| 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 / pytoyoda-5.2.1-py3-none-any.whl
| Download URL | pytoyoda-5.2.1-py3-none-any.whl |
|---|---|
| Size | 70.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a26c3abd87bc2214ba818804e00a33d03e2cf007fecd0b6a0600c167c76ca0d4
|
|
BLAKE2b-256 checksum How to use checksums |
14ad4635bb28075071382e601f1c0ae4bd7bf4d097869a17b38ad9a7e7c41472
|
| 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