Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Wiki REST API Tools and Apps

This site may earn commission on affiliate links.

Wiki

Member
Mar 21, 2016
34
200
This is a simple user contributed list of tools and applications that implement the unofficial Tesla Model S REST API
Programming Libraries by Language - These toolkits should help developers get started in the language of their choice.
Python - PyTesla or Teslajson
JavaScript - TeslaMS and TeslaJS
Java - TeslaClient

C#/.Net - Teslalib
Ruby - tesla-api
PHP/MySQL - Tesla Mobile

Mobile Applications - Tesla provides official mobile apps for Android and Apple iOS

Windows Mobile - Tesla Connect, and Tesla Companion
Windows 10 Desktop/Phone/Xbox - Tesla Control
BlackBerry - Model S for Blackberry

Desktop Applications - Download and run these on your laptop, home, or office computer to check up on, and control your car without the need to use your phone

VisibleTesla - runs on any computer with Java
Tapp - MacOS Tesla Client

Basic Tools - Stuff to get computer literate non-programmers in control of their Tesla

cURL - Many operating systems come with this handle utility already installed. The REST API can be called using various "curl" commands from your computers command shell (terminal).

Example curl command to login to Tesla and get a cookie with your authentication token. Replace "USERNAME" and "PASSWORD" with your actual Tesla website login and password.

Code:
curl -c cookies.txt -d "user_session[email]=USERNAME&user_session[password]=PASSWORD" https://portal.vn.teslamotors.com/login
Example curl command to get the vehicle information (including "id" needed for all other commands)

Code:
curl -b cookies.txt https://portal.vn.teslamotors.com/vehicles
Example curl command to start charging (replace "ID" with the three to five digit "id" of your car, as returned by the previous command)

Code:
curl -b cookies.txt https://portal.vn.teslamotors.com/vehicles/ID/command/charge_start
Example curl command to check the current charge state

Code:
curl -b cookies.txt https://portal.vn.teslamotors.com/vehicles/ID/command/charge_state
Example curl command to get data from the Streaming API. Replace "USERNAME" with your actual Tesla website login (as in the REST API). Replace TOKEN with the first of the two tokens returned in the output of the previous curl command for vehicle information. Replace LONG_VEHICLE_ID with the 10 digit "vehicle_id" also returned with the vehicle information (note that this is different than the "id" used in the REST API calls).

Code:
curl -u USERNAME:TOKEN https://streaming.vn.teslamotors.com/stream/LONG_VEHICLE_ID/?values=speed,odometer,soc,elevation,est_heading,est_lat,est_lng,power,shift_state,range,est_range,heading
Streaming data will not return for up to 2 minutes if the car is not moving. When moving the data will return at 4 updates per second (i.e. samples every 250 milliseconds) and stop after two minutes. When the two minute long poll returns, you will need to poll again for another two minutes of streaming data. This is a normal "HTTP long polling" method of streaming data.

The first field returned is a timestamp in the form of number of seconds since the birthdate of Unix (midnight, January 1st, 1970).

Tokens rollover or expire every 15 minutes (at exactly the top of the hour :00, or 15, 30, and 45 past the hour). Since there are two tokens, the first one in the list will last for up to 30 minutes.

If no tokens are present, you will need to wake up the car using the REST API call for wake_up in order to get new tokens.Replace "ID" with the three digit "id" of your car as in the previous REST commands.

Code:
curl -b cookies.txt https://portal.vn.teslamotors.com/vehicles/ID/command/wake_up

Fiddler - The free web debugging proxy for any browser, system or platform
 
Last edited by a moderator:
  • Informative
Reactions: gpetti
I had a shower thought this morning. It makes us realize that we are asking for things more modern than are really available. Here it is:

Shower thought:

Elon Musk seems more modern than he is; he brings early 1980s solutions to a 1950s world. Grow up Elon!

People like Elon Musk & Donald Trump seem modern when they really aren’t as modern as they seem. Most of the world is stuck in the 1950’s, so when Trump comes along many decades more modern, or Musk comes with his early 1980’s solutions to everything, they seem really modern in comparison.

For instance, where is PGP, Bitcoin in Tesla, USA commerce? Why isn’t the API key in MyTesla a public-private key pair for each user with settable permissions? We've had that since late 1980's. Even the concept of users with permissions has been around since before the 1970's.
 
Is it possible to develop for Tesla when I don't have a car? I'd like to build the attached HVAC scheduler now but will not receiving my model 3 for a year.

bqXKn30
 
I wrote a Windows service a little while ago that reminds me to plug in if I forgot to plug in while at home after 9pm. You can configure it to your preferences.

fallen888/my-tesla

There's an Android app code in there too, but it's half baked and I abandoned the Xamarin version (in favor of pure Java version that I'm writing), so don't bother with that project. But the Windows service works - I've been using it for over a year.
 
  • Like
Reactions: bahree
Tried the first curl command:
Failed to connect to portal.vn.teslamotors.com port 443: Timed out
Is there an update to this old post? I'm looking for the ability to be notified when charger is not connected but I don't want to give up my login credentials to someone else's app