Skip to main content

Code Maintainers Wanted

I no longer have a Kia or Hyundai so don’t maintain this like I used to. Others who are interested in jumping in are welcome to join the project! Even just pull requests are appreciated!

Introduction

This is a Kia UVO, Hyundai Bluelink, Genesis Connect(Canada Only) written in python. It is primary consumed by home assistant. If you are looking for a home assistant Kia / Hyundai implementation please look here: https://github.com/Hyundai-Kia-Connect/kia_uvo. Much of this base code came from reading bluelinky and contributions to the kia_uvo home assistant project.

Chat on discord:: Discord

API Usage

This package is designed to simplify the complexity of using multiple regions. It attempts to standardize the usage regardless of what brand or region the car is in. That isn’t always possible though, in particular some features differ from one to the next.

Europe Hyundai and Kia login logic is based on the bluelink-refresh-token project. Username/password login is supported directly for Kia, Hyundai, and Genesis (EU) — no browser or manual token extraction needed. The pycryptodome package (included as a dependency) is used for RSA password encryption during the EU login flow.

Python 3.12 or newer is required to use this package. Vehicle manager is the key class that is called to manage the vehicle lists. One vehicle manager should be used per login. Key data points required to instantiate vehicle manager are:

region: int
brand: int,
username: str
password: str
pin: str (required for CA, and potentially USA, otherwise pass a blank string)

Optional parameters are::
geocode_api_enable: bool
geocode_api_use_email: bool
geocode_provider: int
geocode_api_key: str
language: str

Key values for the int exist in the const.py file as:

REGIONS = {1: REGION_EUROPE, 2: REGION_CANADA, 3: REGION_USA, 4: REGION_CHINA, 5: REGION_AUSTRALIA, 6: REGION_INDIA, 7: REGION_NZ, 8: REGION_BRAZIL}
BRANDS = {1: BRAND_KIA, 2: BRAND_HYUNDAI, 3: BRAND_GENESIS}
GEO_LOCATION_PROVIDERS = {1: OPENSTREETMAP, 2: GOOGLE}

Once this is done you can now make the following calls against the vehicle manager:

#login

login(self)

#OTP Details

#Sent OTP
send_otp(self, method)

#Verify OTP
verify_otp(self, otp_code)

#Checks the token is still valid and updates it if not.  Should be called before anything else if the code has been running for any length of time.
check_and_refresh_token(self)

Ideal refresh command. Checks if the car has been updated since the time in seconds provided.  If so does a cached update. If not force calls the car.
check_and_force_update_vehicles(self, force_refresh_interval) # Interval in seconds - consider API Rate Limits https://github.com/Hacksore/bluelinky/wiki/API-Rate-Limits

Used to return a specific vehicle object:
get_vehicle(self, vehicle_id)

#Updates all cars with what is cached in the cloud:
update_all_vehicles_with_cached_state(self)

Updates a specific car with cached state:
update_vehicle_with_cached_state(self, vehicle_id)

Force refreshes all cars:
force_refresh_all_vehicles_states(self)

Force refreshes a single car:
force_refresh_vehicles_states(self, vehicle_id)

An example call would be:

from hyundai_kia_connect_api import *
vm = VehicleManager(region=2, brand=1, username="username@gmail.com", password="password", pin="1234")
vm.check_and_refresh_token()
vm.update_all_vehicles_with_cached_state()
print(vm.vehicles)

If geolocation is required you can also allow this by running:

vm = VehicleManager(region=2, brand=1, username="username@gmail.com", password="password", pin="1234", geocode_api_enable=True, geocode_api_use_email=True)

This will populate the address of the vehicle in the vehicle instance.

The Bluelink App is reset to English for users who have set another language in the Bluelink App in Europe when using hyundai_kia_connect_api. To avoid this, you can pass the optional parameter language (default is “en”) to the constructor of VehicleManager, e.g. for Dutch:

vm = VehicleManager(region=2, brand=1, username="username@gmail.com", password="password", pin="1234", language="nl")

Note: this is only implemented for Europe currently.

For a list of language codes, see here: https://www.science.co.il/language/Codes.php. Currently in Europe the Bluelink App shows the following languages:

- "en" English
- "de" German
- "fr" French
- "it" Italian
- "es" Spanish
- "sv" Swedish
- "nl" Dutch
- "no" Norwegian
- "cs" Czech
- "sk" Slovak
- "hu" Hungarian
- "da" Danish
- "pl" Polish
- "fi" Finnish
- "pt" Portuguese

In Europe and some other regions also trip info can be retrieved. For a month you can ask the days with trips. And you can ask for a specific day for all the trips of that specific day.:: - First call vm.update_month_trip_info(vehicle.id, yyyymm) before getting vehicle.month_trip_info for that month - First call vm.update_day_trip_info(vehicle.id, day.yyyymmdd) before getting vehicle.day_trip_info for that day

Example of getting trip info of the current month and day (vm is VehicleManager instance):

now = datetime.now()
yyyymm = now.strftime("%Y%m")
yyyymmdd = now.strftime("%Y%m%d")
vm.update_month_trip_info(vehicle.id, yyyymm)
if vehicle.month_trip_info is not None:
    for day in vehicle.month_trip_info.day_list:  # ordered on day
        if yyyymmdd == day.yyyymmdd:  # in example only interested in current day
            vm.update_day_trip_info(vehicle.id, day.yyyymmdd)
            if vehicle.day_trip_info is not None:
                for trip in reversed(vehicle.day_trip_info.trip_list):  # show oldest first
                    print(f"{day.yyyymmdd},{trip.hhmmss},{trip.drive_time},{trip.idle_time},{trip.distance},{trip.avg_speed},{trip.max_speed}")

CLI Usage

A tool bluelink is provided that enable querying the vehicles and save the state to a JSON file. Example usage:

bluelink --region Canada --brand Hyundai --username FOO --password BAR --pin 1234 info --json infos.json

Environment variables BLUELINK_XXX can be used to provide a default value for the corresponding –xxx argument.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyundai_kia_connect_api-4.27.1.tar.gz (198.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyundai_kia_connect_api-4.27.1-py3-none-any.whl (122.2 kB view details)

Uploaded Python 3

File details

Details for the file hyundai_kia_connect_api-4.27.1.tar.gz.

File metadata

  • Download URL: hyundai_kia_connect_api-4.27.1.tar.gz
  • Upload date:
  • Size: 198.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hyundai_kia_connect_api-4.27.1.tar.gz
Algorithm Hash digest
SHA256 0c90ccb4bec1c95448384a1804a04d4fa4a9a5e61a399f2864c23d2aff35bcfb
MD5 af95cbf646fd768e6752285490426b30
BLAKE2b-256 905a555c250ac2ef08189100c30c0157a161f3ff0902083f23de9f28ac700cad

See more details on using hashes here.

File details

Details for the file hyundai_kia_connect_api-4.27.1-py3-none-any.whl.

File metadata

File hashes

Hashes for hyundai_kia_connect_api-4.27.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e4d96e51dec36c602154ab01b5c215385c92097f89c3376631fd23f9fe7a5c04
MD5 8ff420f1f386ac21a7d81d4a656b8615
BLAKE2b-256 f3bebe66400e521b87c50d142b68f0ef2a3f5b801733850b9e454e36076fccc2

See more details on using hashes here.

Release history Release notifications | RSS feed

4.29.1

2 files

4.29.0

2 files

4.28.0

2 files

4.27.3

2 files

4.27.2

2 files

This release

4.27.1 This release

2 files

4.27.0

2 files

4.26.5

2 files

4.26.4

2 files

4.26.3

2 files

4.26.2

2 files

4.26.1

2 files

4.26.0

2 files

4.25.6

2 files

4.25.5

2 files

4.25.4

2 files

4.25.3

2 files

4.25.2

2 files

4.25.1

2 files

4.25.0

2 files

4.24.2

2 files

4.24.1

2 files

4.24.0

2 files

4.23.3

2 files

4.23.2

2 files

4.23.1

2 files

4.23.0

2 files

4.22.1

2 files

4.22.0

2 files

4.21.0

2 files

4.20.0

2 files

4.19.1

2 files

4.19.0

2 files

4.18.1

2 files

4.18.0

2 files

4.17.0

2 files

4.16.0

2 files

4.15.3

2 files

4.15.2

2 files

4.15.1

2 files

4.15.0

2 files

4.14.1

2 files

4.14.0

2 files

4.13.0

2 files

4.12.1

2 files

4.12.0

2 files

4.11.1

2 files

4.11.0

2 files

4.10.4

2 files

4.10.3

2 files

4.10.2

2 files

4.10.1

2 files

4.10.0

2 files

4.9.0

2 files

4.8.4

2 files

4.8.3

2 files

4.8.2

2 files

4.8.1

2 files

4.8.0

2 files

4.7.3

2 files

4.7.2

2 files

4.7.1

2 files

4.7.0

2 files

4.6.1

2 files

4.6.0

2 files

4.5.2

2 files

4.5.1

2 files

4.5.0

2 files

4.4.0

2 files

4.3.13

2 files

4.3.12

2 files

4.3.11

2 files

4.3.10

2 files

4.3.9

2 files

4.3.8

2 files

4.3.7

2 files

4.3.6

2 files

4.3.5

2 files

4.3.4

2 files

4.3.3

2 files

4.3.2

2 files

4.3.1

2 files

4.3.0

2 files

4.2.0

2 files

4.1.0

2 files

4.0.2

2 files

3.52.3

2 files

3.52.2

2 files

3.52.1

2 files

3.52.0

2 files

3.51.5

2 files

3.51.4

2 files

3.51.3

2 files

3.51.2

2 files

3.51.1

2 files

3.51.0

2 files

3.50.0

2 files

3.49.4

2 files

3.49.3

2 files

3.49.2

2 files

3.49.1

2 files

3.49.0

2 files

3.48.1

2 files

3.48.0

2 files

3.47.0

2 files

3.46.1

2 files

3.46.0

2 files

3.45.6

2 files

3.45.5

2 files

3.45.4

2 files

3.45.3

2 files

3.45.2

2 files

3.45.1

2 files

3.45.0

2 files

3.44.7

2 files

3.44.6

2 files

3.44.5

2 files

3.44.4

2 files

3.44.3

2 files

3.44.1

2 files

3.44.0

2 files

3.43.6

2 files

3.43.5

2 files

3.43.4

2 files

3.43.3

2 files

3.43.2

2 files

3.43.1

2 files

3.43.0

2 files

3.42.13

2 files

3.42.12

2 files

3.42.11

2 files

3.42.4

2 files

3.42.2

2 files

3.42.1

2 files

3.42.0

2 files

3.41.5

2 files

3.41.4

2 files

3.41.3

2 files

3.41.2

2 files

3.41.1

2 files

3.41.0

2 files

3.40.6

2 files

3.40.5

2 files

3.40.4

2 files

3.40.3

2 files

3.40.2

2 files

3.40.1

2 files

3.40.0

2 files

3.39.0

2 files

3.38.1

2 files

3.38.0

2 files

3.37.0

2 files

3.36.0

2 files

3.35.12

2 files

3.35.11

2 files

3.35.10

2 files

3.35.9

2 files

3.35.8

2 files

3.35.7

2 files

3.35.6

2 files

3.35.5

2 files

3.35.4

2 files

3.35.3

2 files

3.35.2

2 files

3.35.1

2 files

3.35.0

2 files

3.34.4

2 files

3.34.3

2 files

3.34.2

2 files

3.34.1

2 files

3.34.0

2 files

3.33.5

2 files

3.33.4

2 files

3.33.3

2 files

3.33.2

2 files

3.33.1

2 files

3.33.0

2 files

3.32.16

2 files

3.32.15

2 files

3.32.14

2 files

3.32.13

2 files

3.32.12

2 files

3.32.11

2 files

3.32.10

2 files

3.32.9

2 files

3.32.8

2 files

3.32.7

2 files

3.32.6

2 files

3.32.5

2 files

3.32.4

2 files

3.32.3

2 files

3.32.2

2 files

3.32.1

2 files

3.32.0

2 files

3.31.0

2 files

3.30.3

2 files

3.30.2

2 files

3.30.1

2 files

3.30.0

2 files

3.29.2

2 files

3.29.1

2 files

3.27.0

2 files

3.26.0

2 files

3.25.0

2 files

3.24.3

2 files

3.24.2

2 files

3.24.1

2 files

3.24.0

2 files

3.23.9

2 files

3.23.8

2 files

3.23.7

2 files

3.23.6

2 files

3.23.5

2 files

3.23.4

2 files

3.23.3

2 files

3.23.2

2 files

3.23.1

2 files

3.23.0

2 files

3.22.10

2 files

3.22.9

2 files

3.22.8

2 files

3.22.7

2 files

3.22.6

2 files

3.22.3

2 files

3.22.2

2 files

3.22.1

2 files

3.22.0

2 files

3.21.1

2 files

3.21.0

2 files

3.20.7

2 files

3.20.6

2 files

3.20.5

2 files

3.20.3

2 files

3.20.2

2 files

3.19.1

2 files

3.19.0

2 files

3.18.0

2 files

3.17.10

2 files

3.17.9

2 files

3.17.8

2 files

3.17.7

2 files

3.17.6

2 files

3.17.5

2 files

3.17.4

2 files

3.17.3

2 files

3.17.2

2 files

3.17.1

2 files

3.17.0

2 files

3.16.0

2 files

3.15.1

2 files

3.15.0

2 files

3.14.3

2 files

3.14.2

2 files

3.14.1

2 files

3.14.0

2 files

3.13.2

2 files

3.13.1

2 files

3.13.0

2 files

3.12.0

2 files

3.11.4

2 files

3.11.3

2 files

3.11.2

2 files

3.11.1

2 files

3.11.0

2 files

3.10.12

2 files

3.10.11

2 files

3.10.10

2 files

3.10.9

2 files

3.10.8

2 files

3.10.7

2 files

3.10.6

2 files

3.10.5

2 files

3.10.4

2 files

3.10.3

2 files

3.10.2

2 files

3.10.1

2 files

3.10.0

2 files

3.9.1

2 files

3.9.0

2 files

3.8.6

2 files

3.8.5

2 files

3.8.4

2 files

3.8.3

2 files

3.8.2

2 files

3.8.1

2 files

3.8.0

2 files

3.7.0

2 files

3.6.0

2 files

3.5.0

2 files

3.4.0

2 files

3.3.13

2 files

3.3.12

2 files

3.3.11

2 files

3.3.10

2 files

3.3.9

2 files

3.3.8

2 files

3.3.7

2 files

3.3.6

2 files

3.3.5

2 files

3.3.4

2 files

3.3.3

2 files

3.3.2

2 files

3.3.1

2 files

3.3.0

2 files

3.2.0

2 files

3.1.10

2 files

3.1.9

2 files

3.1.8

2 files

3.1.7

2 files

3.1.6

2 files

3.1.3

2 files

3.1.2

2 files

3.1.1

2 files

3.1.0

2 files

3.0.0

2 files

2.4.4

2 files

2.4.3

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

2.3.3

2 files

2.3.2

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.53.2

2 files

1.53.1

2 files

1.53.0

2 files

1.52.13

2 files

1.52.12

2 files

1.52.11

2 files

1.52.10

2 files

1.52.9

2 files

1.52.8

2 files

1.52.7

2 files

1.52.6

2 files

1.52.5

2 files

1.52.4

2 files

1.52.3

2 files

1.52.2

2 files

1.52.1

2 files

1.52.0

2 files

1.51.1

2 files

1.51.0

2 files

1.50.3

2 files

1.47.3

2 files

1.47.2

2 files

1.47.1

2 files

1.47.0

2 files

1.46.0

2 files

1.45.6

2 files

1.45.5

2 files

1.45.4

2 files

1.45.3

2 files

1.45.2

2 files

1.45.1

2 files

1.45.0

2 files

1.44.4

2 files

1.44.3

2 files

1.44.2

2 files

1.44.1

2 files

1.44.0

2 files

1.43.3

2 files

1.43.2

2 files

1.43.1

2 files

1.43.0

2 files

1.42.5

2 files

1.42.4

2 files

1.42.3

2 files

1.42.2

2 files

1.42.1

2 files

1.42.0

2 files

1.41.4

2 files

1.41.3

2 files

1.41.2

2 files

1.41.1

2 files

1.41.0

2 files

1.40.13

2 files

1.40.12

2 files

1.40.11

2 files

1.40.10

2 files

1.40.9

2 files

1.40.8

2 files

1.40.7

2 files

1.40.6

2 files

1.40.5

2 files

1.40.4

2 files

1.40.3

2 files

1.40.2

2 files

1.40.1

2 files

1.40.0

2 files

1.39.7

2 files

1.39.6

2 files

1.39.5

2 files

1.39.4

2 files

1.39.3

2 files

1.39.2

2 files

1.39.1

2 files

1.39.0

2 files

1.38.0

2 files

1.37.10

2 files

1.37.9

2 files

1.37.8

2 files

1.37.7

2 files

1.37.6

2 files

1.37.5

2 files

1.37.4

2 files

1.37.3

2 files

1.37.2

2 files

1.37.1

2 files

1.37.0

2 files

1.36.12

2 files

1.36.11

2 files

1.36.10

2 files

1.36.9

2 files

1.36.8

2 files

1.36.7

2 files

1.36.6

2 files

1.36.5

2 files

1.36.4

2 files

1.36.3

2 files

1.36.2

2 files

1.36.1

2 files

1.36.0

2 files

1.35.5

2 files

1.35.4

2 files

1.35.3

2 files

1.35.2

2 files

1.35.1

2 files

1.35.0

2 files

1.34.9

2 files

1.34.8

2 files

1.34.7

2 files

1.34.6

2 files

1.34.5

2 files

1.34.4

2 files

1.34.3

2 files

1.34.2

2 files

1.34.1

2 files

1.34.0

2 files

1.33.0

2 files

1.32.0

2 files

1.31.0

2 files

1.30.0

2 files

1.29.3

2 files

1.29.2

2 files

1.29.1

2 files

1.29.0

2 files

1.28.5

2 files

1.28.4

2 files

1.28.3

2 files

1.28.2

2 files

1.28.1

2 files

1.28.0

2 files

1.27.1

2 files

1.27.0

2 files

1.26.5

2 files

1.26.4

2 files

1.26.3

2 files

1.26.2

2 files

1.26.1

2 files

1.26.0

2 files

1.25.0

2 files

1.24.0

2 files

1.23.1

2 files

1.23.0

2 files

1.22.9

2 files

1.22.8

2 files

1.22.7

2 files

1.22.6

2 files

1.22.5

2 files

1.22.4

2 files

1.22.3

2 files

1.22.2

2 files

1.22.1

2 files

1.22.0

2 files

1.21.7

2 files

1.21.6

2 files

1.21.5

2 files

1.21.4

2 files

1.21.3

2 files

1.21.2

2 files

1.21.1

2 files

1.21.0

2 files

1.20.0

2 files

1.19.10

2 files

1.19.9

2 files

1.19.8

2 files

1.19.7

2 files

1.19.6

2 files

1.19.5

2 files

1.19.4

2 files

1.19.3

2 files

1.19.2

2 files

1.19.1

2 files

1.19.0

2 files

1.18.18

2 files

1.18.17

2 files

1.18.16

2 files

1.18.15

2 files

1.18.14

2 files

1.18.13

2 files

1.18.12

2 files

1.18.11

2 files

1.18.10

2 files

1.18.8

2 files

1.18.7

2 files

1.17.3

2 files

1.17.1

2 files

1.14.4

2 files

1.14.3

2 files

1.14.2

2 files

1.14.1

2 files

1.14.0

2 files

1.12.1

2 files

1.12.0

2 files

1.11.0

2 files

1.10.4

2 files

1.10.2

2 files

1.10.1

2 files

1.8.2

2 files

1.8.1

2 files

1.8.0

2 files

1.7.4

2 files

1.7.3

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.0

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 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