Telemetry

Using the Tesla Fleet Telemetry

Teslemetry allows you to configure Tesla Fleet Telemetry for each supported vehicle. This data can be accessed using Server Sent Events (SSE) or Webhooks.

Setup

  • Login to the Teslemetry console
  • Select a vehicle, and follow the instructions to install the virtual key if its missing
  • Open the Telemetry Configuration card
  • Select at least one field

Changes save automatically as you edit the configuration - there is no separate Start or Update button. Teslemetry warns you if a configuration has not reached the vehicle yet; this usually resolves itself within a few minutes.

Limitations

Fleet Telemetry is the modern way to access data from Tesla vehicles, but there are a number of limitations imposed by Tesla:

  • Requires the Teslemetry virtual key to be installed (excluding legacy vehicles)
  • Is not supported on pre 2018 Model S/X vehicles with MCU 1.
  • Can only have a maximum of 3 third party Fleet Telemetry services active at a time. If a vehicle already has 3 connections from other services, one must be removed before Teslemetry can configure telemetry for it.
  • Modern vehicles must be running version 2023.20 or newer.
  • Legacy vehicles must be running version 2025.20 or newer.
  • Has limits on how frequently certain fields can be streamed.

Teslemetry also enforces some limitations on a field by field basis to avoid extraordinary cost. These limits are shown as validation errors on the console and enforced by the API servers. The limits and defaults can be viewed at api.teslemetry.com/fields.json.

Legacy Vehicles

Model S and Model X vehicles manufactured before 2021 with MCU 2 can use Fleet Telemetry starting with firmware 2025.20. The virtual key is not required, however you do need to enable data streaming in your vehicle:

Open Settings > Safety > Allow Third-Party App Data Streaming

Webhooks

Login to the Teslemetry console, and click the "Telemetry" button on a vehicle to config webhooks. Each webhook configuration requires a URL, a format, and optionally an Authorization header.

Webhook URLs must be reachable from Teslemetry's servers. Local-only names such as localhost, .local mDNS names, and private or reserved IP addresses are rejected. https:// is recommended; http:// is allowed, but the console warns that delivery is unencrypted.

A webhook that fails on every delivery attempt for a continuous 7-day streak is automatically disabled - the console shows this as Disabled alongside when the failures started. A single successful delivery resets the streak, so an occasional or transient failure never counts towards disabling a webhook. The console's Webhooks table shows each webhook's current health (Healthy, Failing, or Disabled) so you can catch a problem before the 7-day window elapses.

The three formats you can select in the console are:

Tesla / Raw format
{
 "data": [
  {
   "key": "Location",
   "value": {
    "locationValue": {
     "latitude": 30.2226645,
     "longitude": -97.6213806
    }
   }
  },{
   "key": "VehicleSpeed",
   "value": {
    "stringValue": "34.797"
   }
  }
 ],
 "createdAt": "2024-02-24T04:58:44.983607402Z",
 "vin": "LRW3..."
}
Teslemetry format
{
 "data": {
  "Location": {
   "latitude": 30.2226645,
   "longitude": -97.6213806
  },
  "VehicleSpeed": "34.797"
 },
 "createdAt": "2024-02-24T04:58:44.983607402Z",
 "vin": "LRW3..."
}
Splunk format
{
 "time": 1708737795.9836073,
 "host": "na1.teslemetry.com",
 "source": "LRW3...",
 "event": {
  "Location": {
   "latitude": 30.2226645,
   "longitude": -97.6213806
  },
  "VehicleSpeed": "34.797"
 }
}

A webhook can deliver these per-vehicle event topics:

TopicDescription
dataTelemetry data updates
stateVehicle state changes (online, asleep, driving)
vehicle_dataFull vehicle data responses
alertsAlert notifications
errorsError events from the vehicle
connectivityConnection status changes

Server Sent Events

After streaming has been configured and started, you can stream telemetry events in realtime by connecting with your access token. Optionally include a VIN to listen for a single vehicle, or leave it out to listen to all your vehicles. Server Side Events use the Teslemetry format shown above. Teslemetry provides an open source Python 3 library.

SSE supports every webhook topic above, plus:

TopicDescription
configTelemetry configuration changes (live-only, no connect-time snapshot)
live_status, site_info, tariff_content_v2, energy_totalsEnergy site topics
creditsAccount-level command credit usage - not tied to a single vehicle, and not deliverable via webhook

Use the topics query parameter to select which of these you receive; omit it to receive every applicable topic for the id(s) you're subscribed to.

Curl Example
curl --header "Authorization: Bearer {token}" 'https://api.teslemetry.com/sse/{vin}'
Browser Example (potentiallyless secure)
https://api.teslemetry.com/sse/{vin}?token={token}
Python Example
import asyncio, aiohttp, teslemetry_stream
async def main():
  async with aiohttp.ClientSession() as session:
    stream = teslemetry_stream.TeslemetryStream(
      access_token="{token}",
      vin="{vin}",
      session=session,
    )

    async def callback(event):
        print(event)

    asyncio.create_task(stream.listen(callback))

    await asyncio.sleep(60)
    await stream.close()
    
asyncio.run(main())