Tesla Fleet API
Use when integrating with Tesla's official Fleet API to read vehicle/energy device data or issue remote commands (e.g. start HVAC preconditioning, wake vehic...
Use when integrating with Tesla's official Fleet API to read vehicle/energy device data or issue remote commands (e.g. start HVAC preconditioning, wake vehic...
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Control Tesla vehicles via the official Fleet API.
| Script | Purpose |
|---|---|
| Vehicle commands (climate, charging, locks, etc.) |
| Read vehicle data (battery, climate, location, etc.) |
| List vehicles + refresh cache |
| Authentication and configuration |
| OAuth helper with local callback server |
| Start the signing proxy (for vehicle commands) |
| Stop the signing proxy |
Setup is documented in
:SETUP.md
State directory:
{workspace}/tesla-fleet-api/
config.json (provider creds + non-token config)auth.json (tokens)vehicles.json (cached vehicle list)places.json (named locations)proxy/ (TLS material for signing proxy)No
.env file loading — credentials in config.json or environment variables.
Execute commands on your Tesla. Vehicle is auto-selected if you only have one.
command.py [VEHICLE] <command> [options]
VEHICLE - Vehicle name or VIN (optional if single vehicle)command.py honkcommand.py flash honk (vehicle "flash", command "honk")command.py climate start command.py climate stop command.py flash climate start # specific vehicle
command.py climate temps <driver_temp> [passenger_temp] command.py climate temps 21 # both seats 21°C command.py climate temps 22 20 # driver 22°C, passenger 20°C
command.py climate keeper <mode>
Modes:
off, keep, dog, camp
command.py seat-heater --level <level> [--position <position>] command.py seat-heater -l <level> [-p <position>]
Levels:
| Value | Name |
|---|---|
| 0 | off |
| 1 | low |
| 2 | medium |
| 3 | high |
Positions:
| Value | Names |
|---|---|
| 0 | , , |
| 1 | , , |
| 2 | , |
| 3 | |
| 4 | , |
| 5 | , |
| 6 | |
| 7 | |
| 8 | |
Examples:
command.py seat-heater -l high # driver (default) command.py seat-heater -l medium -p passenger command.py seat-heater --level low --position rear_left command.py seat-heater -l 2 -p 4 # medium, rear center command.py seat-heater -l off -p driver # turn off
command.py seat-cooler --level <level> [--position <position>] command.py seat-cooler -l <level> [-p <position>]
Same levels and positions as seat heater.
Examples:
command.py seat-cooler -l medium -p driver command.py seat-cooler -l high -p passenger
command.py seat-climate [--position <position>] <mode> command.py seat-climate [-p <position>] <mode>
Modes:
auto, on, off
Examples:
command.py seat-climate auto # driver auto command.py seat-climate -p passenger auto command.py seat-climate -p driver off # disable auto
command.py steering-heater <on|off>
Examples:
command.py steering-heater on command.py steering-heater off
Modern API for scheduling departure preconditioning (replaces deprecated
set_scheduled_departure).
command.py precondition add --time <HH:MM> [--days <days>] [--id <id>] [--one-time] [--disabled] command.py precondition add -t <HH:MM> [-d <days>] [--id <id>]
Days options:
| Value | Description |
|---|---|
| Every day (default) |
| Monday through Friday |
| Saturday and Sunday |
| Specific days (comma-separated) |
Day names:
sun, mon, tue, wed, thu, fri, sat (or full names)
Examples:
command.py precondition add -t 08:00 # every day at 8am command.py precondition add -t 08:00 -d weekdays # Mon-Fri command.py precondition add -t 07:30 -d mon,wed,fri command.py precondition add -t 09:00 --one-time # one-time only command.py precondition add -t 08:30 --id 123 # modify existing schedule command.py precondition add -t 08:00 --disabled # create but disabled
command.py precondition remove --id <id>
Examples:
command.py precondition remove --id 123 command.py precondition remove --id 1
command.py charge start command.py charge stop
command.py charge limit <percent>
Percent must be 50-100.
Examples:
command.py charge limit 80 command.py charge limit 90 command.py flash charge limit 70 # specific vehicle
command.py lock # lock all doors command.py unlock # unlock all doors command.py honk # honk the horn command.py flash # flash the lights command.py wake # wake vehicle from sleep
With vehicle name:
command.py flash wake # wake vehicle named "flash" command.py flash flash # flash lights on vehicle "flash"
Fetch vehicle data with human-readable output by default.
vehicle_data.py [VEHICLE] [flags] [--json]
VEHICLE - Vehicle name or VIN (optional if single vehicle)--json = raw JSON output| Flag | Long | Data |
|---|---|---|
| | Battery level, charge limit, charging status |
| | Interior/exterior temp, HVAC status |
| | Gear, speed, power, heading |
| | GPS coordinates |
| | Locks, doors, windows, odometer, software |
| | GUI settings (units, 24h time) |
| Vehicle config (model, color, wheels) |
# All data vehicle_data.py vehicle_data.py flashSpecific data
vehicle_data.py -c # charge only vehicle_data.py -c -t # charge + climate vehicle_data.py flash -c -l # charge + location
Raw JSON
vehicle_data.py --json vehicle_data.py -c --json
🚗 My Tesla (online) VIN: 5YJ... (redacted)⚡ Charge State ──────────────────────────────────────── Battery: [███████████████░░░░░] 78% Limit: 80% State: Charging Power: 11 kW (16A × 234V × 3φ) Added: 37.2 kWh Remaining: 10m Range: 438 km (272 mi) Cable: IEC
🌡️ Climate State ──────────────────────────────────────── Inside: 11.9°C Outside: 6.0°C Set to: 20.5°C Climate: Off
Manage OAuth tokens and configuration.
auth.py <command> [options]
auth.py login
Interactive: generates auth URL, prompts for code, exchanges for tokens.
auth.py exchange <code>
Exchange authorization code for tokens (non-interactive).
auth.py refresh
Refresh access token. Note: refresh tokens rotate - the new one is saved automatically.
auth.py register --domain <domain>
Register your app domain with Tesla (required for signed commands).
After registration, enroll your virtual key:
https://tesla.com/_ak/<domain>
auth.py config
Display current configuration (secrets redacted).
auth.py config set [options]
Options:
--client-id <id>--client-secret <secret>--redirect-uri <uri>--audience <url>--base-url <url>--ca-cert <path>--domain <domain>Examples:
# Initial setup auth.py config set \ --client-id "abc123" \ --client-secret "secret" \ --redirect-uri "http://localhost:18080/callback"Configure proxy
auth.py config set
--base-url "https://localhost:4443"
--ca-cert "/path/to/tls-cert.pem"
List vehicles with human-readable output.
python3 scripts/tesla_fleet.py vehicles python3 scripts/tesla_fleet.py vehicles --json
🚗 Name: My Tesla 🔖 VIN: 5YJ... (redacted) 🟢 Status: Online 👤 Access: Owner
All setup + configuration is documented in SETUP.md.
| Region | Audience URL |
|---|---|
| Europe | |
| North America | |
| China | |
OAuth token endpoint (all regions):
https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token
Wake the vehicle first:
command.py wake
Ensure the signing proxy is running and configured. See SETUP.md § Proxy Setup.
auth.py refresh
Specify vehicle by name or VIN:
command.py flash climate start command.py 5YJ... honk
climate start|stop climate temps <driver> [passenger] climate keeper off|keep|dog|campseat-heater -l <level> [-p <position>] seat-cooler -l <level> [-p <position>] seat-climate [-p <position>] auto|on|off
steering-heater on|off
precondition add -t <HH:MM> [-d <days>] [--id <id>] [--one-time] precondition remove --id <id>
charge start|stop charge limit <percent>
lock unlock honk flash wake
[VEHICLE] [-c] [-t] [-d] [-l] [-s] [-g] [--config-data] [--json]
login exchange <code> refresh register --domain <domain> config config set [--client-id] [--client-secret] [--redirect-uri] [--audience] [--base-url] [--ca-cert] [--domain]
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.