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 Configurationcard - 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:
{
"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..."
}
{
"data": {
"Location": {
"latitude": 30.2226645,
"longitude": -97.6213806
},
"VehicleSpeed": "34.797"
},
"createdAt": "2024-02-24T04:58:44.983607402Z",
"vin": "LRW3..."
}
{
"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:
| Topic | Description |
|---|---|
| data | Telemetry data updates |
| state | Vehicle state changes (online, asleep, driving) |
| vehicle_data | Full vehicle data responses |
| alerts | Alert notifications |
| errors | Error events from the vehicle |
| connectivity | Connection 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:
| Topic | Description |
|---|---|
| config | Telemetry configuration changes (live-only, no connect-time snapshot) |
| live_status, site_info, tariff_content_v2, energy_totals | Energy site topics |
| credits | Account-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 --header "Authorization: Bearer {token}" 'https://api.teslemetry.com/sse/{vin}'
https://api.teslemetry.com/sse/{vin}?token={token}
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())