Skip to content

🚘 A Ruby gem and unofficial documentation of Tesla's JSON API for the Model S, 3, X, and Y.

License

Notifications You must be signed in to change notification settings

timdorr/tesla-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c90d995 Β· Dec 6, 2024
Mar 14, 2023
Dec 6, 2024
Jul 27, 2023
May 4, 2022
Nov 11, 2018
Dec 15, 2014
Feb 4, 2021
Dec 15, 2014
Apr 19, 2021
Apr 15, 2023
Jan 31, 2021
Nov 11, 2018
Sep 2, 2023
Nov 11, 2021
Nov 25, 2018
Aug 1, 2023
Aug 2, 2022
Jun 28, 2023

Repository files navigation

Referrals are back! Need a vehicle to test with? Get a Tesla with free supercharging

Do you work at Tesla? Get in contact! I'd love to help with making this API official.

Tesla JSON API

View Documentation

This is unofficial documentation of the Tesla JSON API used by the iOS and Android apps. The API provides functionality to monitor and control the Model S (and future Tesla vehicles) remotely. The project provides both a documentation of the API and a Ruby library for accessing it.

If any folks at Tesla are reading this, I'd love to help coordinate a developer program for your APIs. If there's any way I can be helpful, please feel free to get in contact. Also, I'd love to be in the beta firmware program πŸ˜‰

Ruby Gem Gem Version Build Status

This gem provides a basic wrapper around the API to easily query and command the car remotely. It also provides access to the streaming API and a means to process data coming from it.

Installation

Add this line to your application's Gemfile:

gem 'tesla_api'

Or install it yourself:

gem install tesla_api

Usage

Here's a quick example:

require 'tesla_api'

tesla_api = TeslaApi::Client.new(email: email, client_id: client_id, client_secret: client_secret)
tesla_api.login!(password)
# Or if you have an access token:
tesla_api = TeslaApi::Client.new(access_token: access_token)

model_s = tesla_api.vehicles.first # => <TeslaApi::Vehicle>

model_s.wake_up
vehicle_data = model_s.vehicle_data
model_s.auto_conditioning_start unless vehicle_data["climate_state"]["is_auto_conditioning_on"]

model_s.set_charge_limit(90)
model_s.charge_start

charge_state = vehicle_data["charge_state"]
puts "Your Model S is #{charge_state["charging_state"]} " +
     "with a SOC of #{charge_state["battery_level"]}% " +
     "and an estimate range of #{charge_state["est_battery_range"]} miles"

Copyright

Ruby portions are Copyright (c) 2014-Present Tim Dorr. Released under the terms of the MIT license. See LICENSE for details.