-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfleet-telemetry
402 lines (402 loc) · 49.4 KB
/
fleet-telemetry
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
<!DOCTYPE html>
<html>
<head>
<meta name="generator" content="HTML Tidy for HTML5 for Linux version 5.6.0">
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<meta name="generator" content="Gatsby 5.13.7">
<style data-href="/docs/styles.507ed2af9a7f5975158a.css" data-identity="gatsby-global-css">
.center{margin-left:auto;margin-right:auto}.nav-header{padding-bottom:8px}.horizontal-padding{padding:0 48px}table{width:100%}td{vertical-align:baseline}th{text-align:left}.back-to-top{inset:auto var(--tds-size--3x) var(--tds-size--3x) auto;opacity:0;pointer-events:none;position:fixed;transition:.33s ease}.back-to-top.show{opacity:1;pointer-events:inherit}@media (--tds-desktop-up){.back-to-top{inset:auto var(--tds-size--6x) var(--tds-size--6x) auto}}.show-on-hover-wrapper{display:inline}.tds-card-body{max-width:100%}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:inherit!important}.header-search{display:flex;justify-content:flex-end;margin-inline-end:var(--tds-size--half);max-width:100%;width:260px}.header-search .tds-tooltip-wrapper{justify-content:end}.aside{height:100vh;max-width:400px;overflow-y:auto;padding:16px;width:100%}:is(ul,ol,p) code{border:0;padding:0 .414em}.divider{padding:var(--tds-size--3x) 0}.divider .divider-element{align-self:stretch;background:var(--tds-color-grey-70);height:1px}.tds-mobile-nav-item{padding:16px 12px!important}.tds-modal-header{align-items:center!important}.tds-site-nav-items.tds-align--end{padding-right:var(--tds-size--6x)!important}@media (max-width:599px){.tds--hideon-phone-only{display:none!important}}@media (max-width:600px) and (max-width:899px){.tds--showon-tablet-portrait-only{display:none!important}}@media (max-width:600px){.tds--showon-tablet-portrait-up{display:none!important}}@media (max-width:900px) and (max-width:1199px){.tds--showon-tablet-landscape-only{display:none!important}}@media (max-width:900px){.tds--showon-tablet-landscape-up{display:none!important}}@media (max-width:1200px) and (max-width:1799px){.tds--showon-desktop-only{display:none!important}}@media (max-width:1200px){.tds--showon-desktop-up{display:none!important}}@media (max-width:1800px){.tds--showon-desktop-large-up{display:none!important}}@media (max-width:1200px){.tds-page-layout--content-level-aside{grid-template-areas:"title title title title title title title title title title title title" "open open open open open open open open open open open open" "main main main main main main main main main main main main"!important}}.parameter{margin-bottom:16px}.parameter-head{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.parameter-chips{display:flex}.parameter-chips span:not(:first-child){margin-left:8px}.standout{padding-bottom:24px;padding-top:16px;text-align:center}.standout img{max-width:600px}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:0 0;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#b3d4fc;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:hsla(0,0%,100%,.5);color:#9a6e3a}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
</style>
<link rel="stylesheet" data-testid="tds-css" href="https://digitalassets.tesla.com/tesla-design-system/raw/upload/design-system/9.2.0/index.css" data-gatsby-head="true">
<link rel="icon" type="image/x-icon" href="/docs/favicon.ico" data-gatsby-head="true">
<title data-gatsby-head="true">Fleet Telemetry | Tesla Fleet API</title>
</head>
<body>
<div id="___gatsby">
<link rel="stylesheet" data-testid="tds-css" href="https://digitalassets.tesla.com/tesla-design-system/raw/upload/design-system/9.2.0/index.css">
<div style="outline:0" tabindex="-1" id="gatsby-focus-wrapper">
<header class="tds-site-header" id="tds-site-header">
<div class="tds-animate--backdrop-backdrop"></div>
<h1 class="tds-site-logo tds-align--start"><a aria-label="Tesla Logo" class="tds-site-logo-link" href="/"><svg class="tds-icon tds-icon-logo-wordmark tds-site-logo-icon" viewbox="0 0 342 35" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M0 .1a9.7 9.7 0 0 0 7 7h11l.5.1v27.6h6.8V7.3L26 7h11a9.8 9.8 0 0 0 7-7H0zm238.6 0h-6.8v34.8H263a9.7 9.7 0 0 0 6-6.8h-30.3V0zm-52.3 6.8c3.6-1 6.6-3.8 7.4-6.9l-38.1.1v20.6h31.1v7.2h-24.4a13.6 13.6 0 0 0-8.7 7h39.9v-21h-31.2v-7zm116.2 28h6.7v-14h24.6v14h6.7v-21h-38zM85.3 7h26a9.6 9.6 0 0 0 7.1-7H78.3a9.6 9.6 0 0 0 7 7m0 13.8h26a9.6 9.6 0 0 0 7.1-7H78.3a9.6 9.6 0 0 0 7 7m0 14.1h26a9.6 9.6 0 0 0 7.1-7H78.3a9.6 9.6 0 0 0 7 7M308.5 7h26a9.6 9.6 0 0 0 7-7h-40a9.6 9.6 0 0 0 7 7"></path>
</svg></a><a class="tds-app-title"><span class="tds-app-title-text">Developer</span></a><a class="tds-skip-to-content tds--is_visually_hidden" href="#main-content" id="top-of-page">Skip to main content</a></h1>
<ol class="tds-site-nav-items tds-align--center tds--showon-desktop-up">
<li><a id="nav-fleet-api" href="/docs/fleet-api/getting-started/what-is-fleet-api" class="tds-site-nav-item tds--highlighted tds-animate--backdrop">Documentation</a></li>
<li><a id="nav-charging" href="/docs/charging/roaming" class="tds-site-nav-item tds-animate--backdrop">Charging</a></li>
</ol>
<ol class="tds-site-nav-items tds-align--end tds--showon-desktop-up">
<li>
<div class="header-search">
<div class="header-search-inner">
<div class="tds-tooltip-wrapper">
<div class="tds-form-input tds-form-input--default tds-form-input--collapsed">
<div class="tds-form-input-leading"><svg class="tds-icon tds-icon-search" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="m20.267 19.207-4.818-4.818A6.97 6.97 0 0 0 17 10a7 7 0 1 0-7 7 6.97 6.97 0 0 0 4.389-1.55l4.818 4.817a.75.75 0 0 0 1.06 0 .75.75 0 0 0 0-1.06M4.5 10c0-3.033 2.467-5.5 5.5-5.5s5.5 2.467 5.5 5.5-2.467 5.5-5.5 5.5-5.5-2.467-5.5-5.5"></path>
</svg></div>
<input aria-expanded="false" autocomplete="off" role="combobox" class="tds-form-input-search" id="search" type="search" placeholder="Search">
<div class="tds-form-input-trailing tds-form-input-search-clear"><button class="tds-icon-btn tds-icon-btn--medium" type="button" tabindex="-1"><svg class="tds-icon tds-icon-close-small tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M12.243 11.182a.75.75 0 1 1-1.06 1.06L8 9.062l-3.182 3.182a.75.75 0 0 1-1.06 0 .75.75 0 0 1 0-1.06L6.938 8 3.757 4.818a.75.75 0 1 1 1.06-1.06L8 6.938l3.182-3.182a.75.75 0 1 1 1.06 1.06L9.062 8z"></path>
</svg></button></div>
</div>
<div class="tds-tooltip tds-tooltip--orientation-down tds-tooltip--width-full tds-tooltip--closed tds-dropdown" role="tooltip">
<ul aria-label="Select an option" aria-multiselectable="false" class="tds-listbox" id="search-listbox" role="listbox" tabindex="0"></ul>
</div>
</div>
</div>
</div>
</li>
<li><a href="/dashboard"><button class="tds-icon-btn" type="button"><svg class="tds-icon tds-icon-person" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2M6.858 18.752c.605-1.868 2.722-3.24 5.142-3.24s4.537 1.372 5.142 3.24C15.712 19.844 13.933 20.5 12 20.5s-3.712-.656-5.142-1.748m11.469-1.095c-1.02-2.165-3.483-3.645-6.327-3.645s-5.307 1.48-6.327 3.645A8.46 8.46 0 0 1 3.5 12c0-4.687 3.813-8.5 8.5-8.5s8.5 3.813 8.5 8.5a8.46 8.46 0 0 1-2.173 5.657M12 6a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7m0 5.5c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2"></path>
</svg></button></a></li>
</ol>
<ol class="tds-site-nav-items tds-align--end tds--hideon-desktop-up">
<li><button type="button" class="tds-site-nav-item tds--highlighted">Menu</button></li>
</ol>
</header>
<div class="tds--hideon-desktop-up">
<dialog aria-hidden="true" class="tds-modal tds-modal--sheet-right tds-site-header-modal tds-modal--sheet-small tds-scrim--white">
<div class="tds-modal-header"><button aria-label="Close Modal" class="tds-modal-close" type="button"><svg class="tds-icon tds-icon-close tds-modal-close-icon" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M18.53 17.47a.75.75 0 1 1-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 0 1-1.06 0 .75.75 0 0 1 0-1.06L10.94 12 5.47 6.53a.75.75 0 1 1 1.06-1.06L12 10.94l5.47-5.47a.75.75 0 1 1 1.06 1.06L13.06 12z"></path>
</svg></button></div>
<section class="tds-modal-content">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><button type="button" class="tds-site-nav-item tds-mobile-nav-item"><span>Getting Started</span><svg class="tds-icon tds-icon-chevron-small-90 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M4.975 2.75a.748.748 0 0 1 1.281-.53l5.25 5.264a.75.75 0 0 1 0 1.06L6.283 13.78a.75.75 0 1 1-1.062-1.06l4.695-4.706L5.194 3.28a.75.75 0 0 1-.219-.53"></path>
</svg></button></li>
<li><a href="/docs/fleet-api/billing-and-limits" class="tds-site-nav-item tds-mobile-nav-item">Billing and Limits</a></li>
<li><button type="button" class="tds-site-nav-item tds-mobile-nav-item"><span>Authentication</span><svg class="tds-icon tds-icon-chevron-small-90 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M4.975 2.75a.748.748 0 0 1 1.281-.53l5.25 5.264a.75.75 0 0 1 0 1.06L6.283 13.78a.75.75 0 1 1-1.062-1.06l4.695-4.706L5.194 3.28a.75.75 0 0 1-.219-.53"></path>
</svg></button></li>
<li><button type="button" class="tds-site-nav-item tds-mobile-nav-item"><span>Endpoints</span><svg class="tds-icon tds-icon-chevron-small-90 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M4.975 2.75a.748.748 0 0 1 1.281-.53l5.25 5.264a.75.75 0 0 1 0 1.06L6.283 13.78a.75.75 0 1 1-1.062-1.06l4.695-4.706L5.194 3.28a.75.75 0 0 1-.219-.53"></path>
</svg></button></li>
<li><a href="/docs/fleet-api/fleet-telemetry" class="tds-site-nav-item tds-mobile-nav-item">Fleet Telemetry</a></li>
<li><button type="button" class="tds-site-nav-item tds-mobile-nav-item"><span>Virtual Keys</span><svg class="tds-icon tds-icon-chevron-small-90 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M4.975 2.75a.748.748 0 0 1 1.281-.53l5.25 5.264a.75.75 0 0 1 0 1.06L6.283 13.78a.75.75 0 1 1-1.062-1.06l4.695-4.706L5.194 3.28a.75.75 0 0 1-.219-.53"></path>
</svg></button></li>
<li><a href="/docs/fleet-api/announcements" class="tds-site-nav-item tds-mobile-nav-item">Announcements</a></li>
<li><button type="button" class="tds-site-nav-item tds-mobile-nav-item"><span>Support</span><svg class="tds-icon tds-icon-chevron-small-90 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M4.975 2.75a.748.748 0 0 1 1.281-.53l5.25 5.264a.75.75 0 0 1 0 1.06L6.283 13.78a.75.75 0 1 1-1.062-1.06l4.695-4.706L5.194 3.28a.75.75 0 0 1-.219-.53"></path>
</svg></button></li>
<li><a href="/teslaaccount" class="tds-site-nav-item tds-mobile-nav-item"><span class="tds-site-nav-item-leading"><svg class="tds-icon tds-icon-person" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2M6.858 18.752c.605-1.868 2.722-3.24 5.142-3.24s4.537 1.372 5.142 3.24C15.712 19.844 13.933 20.5 12 20.5s-3.712-.656-5.142-1.748m11.469-1.095c-1.02-2.165-3.483-3.645-6.327-3.645s-5.307 1.48-6.327 3.645A8.46 8.46 0 0 1 3.5 12c0-4.687 3.813-8.5 8.5-8.5s8.5 3.813 8.5 8.5a8.46 8.46 0 0 1-2.173 5.657M12 6a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7m0 5.5c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2"></path>
</svg><span>Sign In</span></span></a></li>
</ol>
</section>
</dialog>
<div class="tds-modal-backdrop"></div>
</div>
<div class="tds-page-layout tds-page-layout--content-level-aside tds-page-layout--narrow-main">
<main class="tds-page-main" style="padding:16px;width:100%;max-width:800px;margin-left:auto;margin-right:auto">
<h1>Fleet Telemetry</h1>
<p>Fleet Telemetry is the most efficient and effective way of gathering any type of data from vehicles. It allows vehicles to stream data directly to a server, eliminating the need to poll the <a class="tds-link" href="/docs/fleet-api/endpoints/vehicle-endpoints#vehicle-data">vehicle_data</a> endpoint. This prevents unnecessary vehicle wakes and battery drain. Fleet Telemetry is not fully equivalent to the vehicle data endpoint but provides important data in an efficient and economical manner. See <a class="tds-link" href="/docs/fleet-api/billing-and-limits#cost-optimization-case-studies">Cost Optimization Case Studies</a> for details of the cost savings available by using Fleet Telemetry.</p>
<div style="display:flex;justify-content:space-between;align-items:flex-end" class="show-on-hover-wrapper">
<h2 id="server-setup">Server Setup</h2>
<div class="show-on-hover"><button class="tds-icon-btn header-link" type="button"><svg class="tds-icon tds-icon-link" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M22.013 12c0 2.757-2.243 5-5 5h-3.276a.75.75 0 0 1 0-1.5h3.276c1.93 0 3.5-1.57 3.5-3.5s-1.57-3.5-3.5-3.5h-3.276a.75.75 0 0 1 0-1.5h3.276c2.757 0 5 2.243 5 5m-11.75 3.5H6.987c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5h3.276a.75.75 0 0 0 0-1.5H6.987c-2.757 0-5 2.243-5 5s2.243 5 5 5h3.276a.75.75 0 0 0 0-1.5M6.993 12c0 .414.336.75.75.75h8.5a.75.75 0 0 0 0-1.5h-8.5a.75.75 0 0 0-.75.75"></path>
</svg></button></div>
</div>
<p>The Fleet Telemetry server must be running on a server exposed to the public internet. The <a class="tds-link" href="https://github.com/teslamotors/fleet-telemetry" target="_blank">GitHub repository</a> has source code and examples of running the server.</p>
<div style="display:flex;justify-content:space-between;align-items:flex-end" class="show-on-hover-wrapper">
<h2 id="vehicle-setup">Vehicle Setup</h2>
<div class="show-on-hover"><button class="tds-icon-btn header-link" type="button"><svg class="tds-icon tds-icon-link" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M22.013 12c0 2.757-2.243 5-5 5h-3.276a.75.75 0 0 1 0-1.5h3.276c1.93 0 3.5-1.57 3.5-3.5s-1.57-3.5-3.5-3.5h-3.276a.75.75 0 0 1 0-1.5h3.276c2.757 0 5 2.243 5 5m-11.75 3.5H6.987c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5h3.276a.75.75 0 0 0 0-1.5H6.987c-2.757 0-5 2.243-5 5s2.243 5 5 5h3.276a.75.75 0 0 0 0-1.5M6.993 12c0 .414.336.75.75.75h8.5a.75.75 0 0 0 0-1.5h-8.5a.75.75 0 0 0-.75.75"></path>
</svg></button></div>
</div>
<p>To configure a vehicle, confirm all pre-requisites are met. Then, send a <a class="tds-link" href="/docs/fleet-api/endpoints/vehicle-endpoints#fleet-telemetry-config-create">configure Fleet Telemetry</a> request through the <a class="tds-link" href="https://github.com/teslamotors/vehicle-command" target="_blank">vehicle-command</a> HTTP proxy. The proxy will sign the configuration using the configured private key and forward the request to Fleet API.</p>
<div style="display:flex;justify-content:space-between;align-items:flex-end" class="show-on-hover-wrapper">
<h3 id="prerequisites">Prerequisites</h3>
<div class="show-on-hover"><button class="tds-icon-btn header-link" type="button"><svg class="tds-icon tds-icon-link" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M22.013 12c0 2.757-2.243 5-5 5h-3.276a.75.75 0 0 1 0-1.5h3.276c1.93 0 3.5-1.57 3.5-3.5s-1.57-3.5-3.5-3.5h-3.276a.75.75 0 0 1 0-1.5h3.276c2.757 0 5 2.243 5 5m-11.75 3.5H6.987c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5h3.276a.75.75 0 0 0 0-1.5H6.987c-2.757 0-5 2.243-5 5s2.243 5 5 5h3.276a.75.75 0 0 0 0-1.5M6.993 12c0 .414.336.75.75.75h8.5a.75.75 0 0 0 0-1.5h-8.5a.75.75 0 0 0-.75.75"></path>
</svg></button></div>
</div>
<p>For a vehicle to be able to stream data, a few conditions must be met:</p>
<ul class="tds-list tds-list--unordered">
<li>The vehicle must not be a pre-2021 Model S or Model X.</li>
<li>Vehicles must be running firmware version 2024.26 or later.
<ul class="tds-list tds-list--unordered">
<li>Applications configured with the legacy certificate signing process require 2023.20.6 or later.</li>
</ul>
</li>
<li>The <a class="tds-link" href="/docs/fleet-api/virtual-keys/developer-guide">virtual key</a> is paired with the vehicle.</li>
</ul>
<h4 id="pairing-a-key">Pairing a Key</h4>
<p>To pair a key to the vehicle, direct the user to:</p>
<pre><code>https://tesla.com/_ak/developer-domain.com
</code></pre>
<p>This will allow the user to add the key to their vehicle through the Tesla mobile app.</p>
<p><strong>Troubleshooting:</strong></p>
<ul class="tds-list tds-list--unordered">
<li>If receiving a message stating the user has not granted this third party app access, ensure the user is logged into the Tesla app with the same email used when authorizing the third party application.</li>
<li>If receiving a message stating the application has not registered with Tesla, ensure the <a class="tds-link" href="/docs/fleet-api/endpoints/partner-endpoints#register">register endpoint</a> has been called for the region the user is located in.</li>
</ul>
<div style="display:flex;justify-content:space-between;align-items:flex-end" class="show-on-hover-wrapper">
<h3 id="configuring-a-vehicle">Configuring a Vehicle</h3>
<div class="show-on-hover"><button class="tds-icon-btn header-link" type="button"><svg class="tds-icon tds-icon-link" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M22.013 12c0 2.757-2.243 5-5 5h-3.276a.75.75 0 0 1 0-1.5h3.276c1.93 0 3.5-1.57 3.5-3.5s-1.57-3.5-3.5-3.5h-3.276a.75.75 0 0 1 0-1.5h3.276c2.757 0 5 2.243 5 5m-11.75 3.5H6.987c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5h3.276a.75.75 0 0 0 0-1.5H6.987c-2.757 0-5 2.243-5 5s2.243 5 5 5h3.276a.75.75 0 0 0 0-1.5M6.993 12c0 .414.336.75.75.75h8.5a.75.75 0 0 0 0-1.5h-8.5a.75.75 0 0 0-.75.75"></path>
</svg></button></div>
</div>
<p>Once all pre-requisites are met, use the <a class="tds-link" href="/docs/fleet-api/endpoints/vehicle-endpoints#fleet-telemetry-config-create">Fleet Telemetry configure</a> endpoint to send the desired configuration to the vehicle. Configurations are signed and cannot be edited by Tesla. If a required authorization scope is revoked, making a configuration invalid, the configuration will be removed from the vehicle.</p>
<p>A full list of fields are available in the open source repository's <a class="tds-link" href="https://github.com/teslamotors/fleet-telemetry/blob/main/protos/vehicle_data.proto" target="_blank">vehicle_data.proto</a> file. Documentation improvements for available fields are coming soon.</p>
<a target="_blank" rel="noreferrer noopener" class="tds-btn tds-btn--secondary" style="margin-top:16px" href="/docs/fleet-api/endpoints/vehicle-endpoints#fleet-telemetry-config-create">Configure Vehicle Endpoint</a>
<div style="display:flex;justify-content:space-between;align-items:flex-end" class="show-on-hover-wrapper">
<h2 id="system-behavior">System Behavior</h2>
<div class="show-on-hover"><button class="tds-icon-btn header-link" type="button"><svg class="tds-icon tds-icon-link" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M22.013 12c0 2.757-2.243 5-5 5h-3.276a.75.75 0 0 1 0-1.5h3.276c1.93 0 3.5-1.57 3.5-3.5s-1.57-3.5-3.5-3.5h-3.276a.75.75 0 0 1 0-1.5h3.276c2.757 0 5 2.243 5 5m-11.75 3.5H6.987c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5h3.276a.75.75 0 0 0 0-1.5H6.987c-2.757 0-5 2.243-5 5s2.243 5 5 5h3.276a.75.75 0 0 0 0-1.5M6.993 12c0 .414.336.75.75.75h8.5a.75.75 0 0 0 0-1.5h-8.5a.75.75 0 0 0-.75.75"></path>
</svg></button></div>
</div>
<p>Fleet Telemetry consists of two event loops:</p>
<ol class="tds-list tds-list--ordered">
<li>The event collector gathers data in 500 millisecond buckets. Once 500 milliseconds has elapsed, all fields that have emitted values are delivered to the remote server.</li>
<li>Each field's value is only sent to the event collector once two conditions are met: interval_seconds has elapsed since the field was last emitted and the field's value has changed.</li>
</ol>
<p><strong>System state transitions:</strong></p>
<p>Assume the "<strong>VehicleSpeed</strong>" field is being streamed with <code>interval_seconds</code> set to <code>1</code>.</p>
<div class="tds-table-wrapper">
<table class="tds-table" style="margin-top:16px;margin-bottom:16px">
<thead class="tds-table-head">
<tr class="tds-table-row">
<th>Time</th>
<th>Event</th>
<th>Action</th>
</tr>
</thead>
<tbody class="tds-table-body">
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">0ms</td>
<td style="--columnHeader:"undefined:"">Process starts.</td>
<td style="--columnHeader:"undefined:"">Begin listening for field changes. All fields are received shortly after startup. In this case, speed is received at 100ms.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">100ms</td>
<td style="--columnHeader:"undefined:"">Receive speed of 0mph.</td>
<td style="--columnHeader:"undefined:"">Immediately push to event collector since no value has been seen previously.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">500ms</td>
<td style="--columnHeader:"undefined:"">Event collector loop triggers.</td>
<td style="--columnHeader:"undefined:"">Vehicle speed is sent from event collector to remote server.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">600ms</td>
<td style="--columnHeader:"undefined:"">Speed changes to 1mph.</td>
<td style="--columnHeader:"undefined:"">The value is not pushed to event collector since interval_seconds has not elapsed.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">1000ms</td>
<td style="--columnHeader:"undefined:"">Event collector loop triggers.</td>
<td style="--columnHeader:"undefined:"">No data is sent to remote server since no updated fields received.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">1100ms</td>
<td style="--columnHeader:"undefined:"">Speed changes to 2mph.</td>
<td style="--columnHeader:"undefined:"">The value is not pushed to event collector since interval_seconds has not elapsed. The previous value of 1mph is discarded.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">1300ms</td>
<td style="--columnHeader:"undefined:"">interval_seconds has elapsed.</td>
<td style="--columnHeader:"undefined:"">Immediately push data to event collector since speed has changed since last publish (from 0mph to 2mph).</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">1500ms</td>
<td style="--columnHeader:"undefined:"">Event collector loop triggers.</td>
<td style="--columnHeader:"undefined:"">Speed of 2mph is sent.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">2000ms</td>
<td style="--columnHeader:"undefined:"">Event collector loop triggers.</td>
<td style="--columnHeader:"undefined:"">No data is sent to remote server since no updated fields received.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">2300ms</td>
<td style="--columnHeader:"undefined:"">interval_seconds has elapsed.</td>
<td style="--columnHeader:"undefined:"">Nothing is pushed to the event collector since speed has not changed.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">2400ms</td>
<td style="--columnHeader:"undefined:"">Speed changes to 3mph.</td>
<td style="--columnHeader:"undefined:"">Immediately push to the event collector since interval_seconds has already elapsed.</td>
</tr>
<tr class="tds-table-row">
<td style="--columnHeader:"undefined:"">2500ms</td>
<td style="--columnHeader:"undefined:"">Event collector loop triggers.</td>
<td style="--columnHeader:"undefined:"">Speed of 3mph is sent.</td>
</tr>
</tbody>
</table>
</div>
<p><strong>Failure handling</strong>:</p>
<ul class="tds-list tds-list--unordered">
<li>Loss of connectivity: the vehicle will buffer 5000 messages which is at least 2,500 seconds of data. Once reconnected, all messages will be delivered.</li>
<li>Server disconnect: the vehicle will buffer messages, as described above. It will attempt to reconnect in an exponential backoff with a maximum retry delay of 30 seconds.</li>
<li>A vehicle's connectivity state can be monitored through Fleet Telemetry <a class="tds-link" href="https://github.com/teslamotors/fleet-telemetry?tab=readme-ov-file#detecting-vehicle-connectivity-changes" target="_blank">connectivity events</a>.</li>
</ul>
<div style="display:flex;justify-content:space-between;align-items:flex-end" class="show-on-hover-wrapper">
<h2 id="example-configuration-pricing-analysis">Example Configuration Pricing Analysis</h2>
<div class="show-on-hover"><button class="tds-icon-btn header-link" type="button"><svg class="tds-icon tds-icon-link" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M22.013 12c0 2.757-2.243 5-5 5h-3.276a.75.75 0 0 1 0-1.5h3.276c1.93 0 3.5-1.57 3.5-3.5s-1.57-3.5-3.5-3.5h-3.276a.75.75 0 0 1 0-1.5h3.276c2.757 0 5 2.243 5 5m-11.75 3.5H6.987c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5h3.276a.75.75 0 0 0 0-1.5H6.987c-2.757 0-5 2.243-5 5s2.243 5 5 5h3.276a.75.75 0 0 0 0-1.5M6.993 12c0 .414.336.75.75.75h8.5a.75.75 0 0 0 0-1.5h-8.5a.75.75 0 0 0-.75.75"></path>
</svg></button></div>
</div>
<p>This is a sample configuration which collects data from the most commonly used fields when building applications.</p>
<pre class="prismjs" style="background-color:var(--tds-theme-background-container);padding:0;width:100%"><code class="language-json" style="color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none"><span class="token punctuation">{</span><span>
</span><span> </span><span class="token property">"fields"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span>
</span><span> </span><span class="token property">"VehicleSpeed"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">10</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"Location"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">10</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"Soc"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">60</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"DoorState"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"Odometer"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">60</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"Locked"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"EstBatteryRange"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">60</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"ChargeAmps"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"DetailedChargeState"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"VehicleName"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsPressureFl"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsPressureFr"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsPressureRl"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsPressureRr"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsLastSeenPressureTimeFl"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsLastSeenPressureTimeFr"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsLastSeenPressureTimeRl"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span class="token punctuation">,</span><span>
</span><span> </span><span class="token property">"TpmsLastSeenPressureTimeRr"</span><span class="token operator">:</span><span> </span><span class="token punctuation">{</span><span> </span><span class="token property">"interval_seconds"</span><span class="token operator">:</span><span> </span><span class="token number">1</span><span> </span><span class="token punctuation">}</span><span>
</span><span> </span><span class="token punctuation">}</span><span>
</span><span class="token punctuation">}</span></code></pre>
<p>During regular driving, a small subset of the desired fields are regularly streamed thanks to change based streaming <a class="tds-link" href="#data-collection-interval">described above</a>.</p>
<ul class="tds-list tds-list--unordered">
<li>VehicleSpeed: 6 signals per minute</li>
<li>Location: 6 signals per minute</li>
<li>Soc: 1 signal per minute</li>
<li>Odometer: 1 signal per minute</li>
<li>EstBatteryRange: 1 signal per minute</li>
<li>Remaining fields: not streamed regularly</li>
</ul>
<p>This results in approximately 15 signals streamed per minute of driving, yielding a cost of $0.0001/minute or $0.006/hour.</p>
<p>The other fields are streamed on vehicle startup and infrequently as the value changes. For this estimation, generously assume each field is streamed 3 extra times per hour. This results in <code>18 * 3 = 54</code> additional signals, yielding a cost of $0.00036/hour.</p>
<p>For this basic configuration, an hour of driving would cost about $0.00636.</p>
</main>
<div class="back-to-top">
<div class="tds-tooltip-wrapper tds-tooltip-wrapper--inline"><button aria-label="Back to Top" class="tds-icon-btn tds--highlighted" type="button" tabindex="-1"><svg class="tds-icon tds-icon-arrow-small-0 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M12.78 7.53a.747.747 0 0 1-1.06 0L8.747 4.56l.003 8.69a.75.75 0 0 1-1.5 0l-.003-8.69L4.28 7.523a.75.75 0 1 1-1.06-1.06L7.467 2.22a.75.75 0 0 1 1.06 0l4.253 4.25a.75.75 0 0 1 0 1.06"></path>
</svg></button>
<div class="tds-tooltip tds-density--dense tds-tooltip--closed" role="tooltip">Back to Top</div>
</div>
</div>
<aside class="tds-page-aside tds--showon-desktop-up content--end-space" style="min-width:200px">
<div class="tds-sticky--top aside">
<nav class="tds-sidenav">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><button type="button" class="tds-site-nav-item"><span>Getting Started</span><svg class="tds-icon tds-icon-chevron-small-180 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M13.25 4.975a.748.748 0 0 1 .53 1.281l-5.264 5.25a.75.75 0 0 1-1.06 0L2.22 6.283a.75.75 0 1 1 1.06-1.062l4.706 4.695 4.734-4.722a.75.75 0 0 1 .53-.219"></path>
</svg></button>
<div class="tds-sidenav-group">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><a href="/docs/fleet-api/getting-started/what-is-fleet-api" class="tds-site-nav-item">What is Fleet API?</a></li>
<li><a href="/docs/fleet-api/getting-started/base-urls" class="tds-site-nav-item">Base URLs by Region</a></li>
<li><a href="/docs/fleet-api/getting-started/best-practices" class="tds-site-nav-item">Best Practices</a></li>
<li><a href="/docs/fleet-api/getting-started/conventions" class="tds-site-nav-item">Conventions</a></li>
<li><a href="/docs/fleet-api/getting-started/legal" class="tds-site-nav-item">Legal</a></li>
</ol>
</div>
</li>
<li><a href="/docs/fleet-api/billing-and-limits" class="tds-site-nav-item">Billing and Limits</a></li>
<li><button type="button" class="tds-site-nav-item"><span>Authentication</span><svg class="tds-icon tds-icon-chevron-small-180 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M13.25 4.975a.748.748 0 0 1 .53 1.281l-5.264 5.25a.75.75 0 0 1-1.06 0L2.22 6.283a.75.75 0 1 1 1.06-1.062l4.706 4.695 4.734-4.722a.75.75 0 0 1 .53-.219"></path>
</svg></button>
<div class="tds-sidenav-group">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><a href="/docs/fleet-api/authentication/overview" class="tds-site-nav-item">Overview</a></li>
<li><a href="/docs/fleet-api/authentication/partner-tokens" class="tds-site-nav-item">Partner Tokens</a></li>
<li><a href="/docs/fleet-api/authentication/third-party-tokens" class="tds-site-nav-item">Third Party Tokens</a></li>
<li><a href="/docs/fleet-api/authentication/third-party-business-tokens" class="tds-site-nav-item">Third Party Business Tokens</a></li>
</ol>
</div>
</li>
<li><button type="button" class="tds-site-nav-item"><span>Endpoints</span><svg class="tds-icon tds-icon-chevron-small-180 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M13.25 4.975a.748.748 0 0 1 .53 1.281l-5.264 5.25a.75.75 0 0 1-1.06 0L2.22 6.283a.75.75 0 1 1 1.06-1.062l4.706 4.695 4.734-4.722a.75.75 0 0 1 .53-.219"></path>
</svg></button>
<div class="tds-sidenav-group">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><a href="/docs/fleet-api/endpoints/charging-endpoints" class="tds-site-nav-item">Charging Endpoints</a></li>
<li><a href="/docs/fleet-api/endpoints/energy" class="tds-site-nav-item">Energy Endpoints</a></li>
<li><a href="/docs/fleet-api/endpoints/partner-endpoints" class="tds-site-nav-item">Partner Endpoints</a></li>
<li><a href="/docs/fleet-api/endpoints/user-endpoints" class="tds-site-nav-item">User Endpoints</a></li>
<li><a href="/docs/fleet-api/endpoints/vehicle-commands" class="tds-site-nav-item">Vehicle Commands</a></li>
<li><a href="/docs/fleet-api/endpoints/vehicle-endpoints" class="tds-site-nav-item">Vehicle Endpoints</a></li>
</ol>
</div>
</li>
<li><a href="/docs/fleet-api/fleet-telemetry" class="tds-site-nav-item tds--highlighted">Fleet Telemetry</a></li>
<li><button type="button" class="tds-site-nav-item"><span>Virtual Keys</span><svg class="tds-icon tds-icon-chevron-small-180 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M13.25 4.975a.748.748 0 0 1 .53 1.281l-5.264 5.25a.75.75 0 0 1-1.06 0L2.22 6.283a.75.75 0 1 1 1.06-1.062l4.706 4.695 4.734-4.722a.75.75 0 0 1 .53-.219"></path>
</svg></button>
<div class="tds-sidenav-group">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><a href="/docs/fleet-api/virtual-keys/overview" class="tds-site-nav-item">Understanding Virtual Keys</a></li>
<li><a href="/docs/fleet-api/virtual-keys/developer-guide" class="tds-site-nav-item">Developer Guide</a></li>
</ol>
</div>
</li>
<li><a href="/docs/fleet-api/announcements" class="tds-site-nav-item">Announcements</a></li>
<li><button type="button" class="tds-site-nav-item"><span>Support</span><svg class="tds-icon tds-icon-chevron-small-180 tds-icon--small" viewbox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path fill="currentColor" d="M13.25 4.975a.748.748 0 0 1 .53 1.281l-5.264 5.25a.75.75 0 0 1-1.06 0L2.22 6.283a.75.75 0 1 1 1.06-1.062l4.706 4.695 4.734-4.722a.75.75 0 0 1 .53-.219"></path>
</svg></button>
<div class="tds-sidenav-group">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><a href="/docs/fleet-api/support/faq" class="tds-site-nav-item">Frequently Asked Questions</a></li>
<li><a href="/docs/fleet-api/support/contact" class="tds-site-nav-item">Contact Us</a></li>
</ol>
</div>
</li>
</ol>
</nav>
</div>
</aside>
<aside class="tds-page-open tds--showon-desktop-up">
<div class="tds-sticky--top aside">
<div>
<h6 class="nav-header">On this page</h6>
<nav class="tds-sidenav tds-density--dense">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><a href="#server-setup" class="tds-site-nav-item">Server Setup</a></li>
<li><a href="#vehicle-setup" class="tds-site-nav-item">Vehicle Setup</a>
<div class="tds-sidenav-group tds-sidenav-group--always-expanded">
<ol class="tds-site-nav-items tds-site-nav-items--vertical">
<li><a href="#prerequisites" class="tds-site-nav-item">Prerequisites</a></li>
<li><a href="#configuring-a-vehicle" class="tds-site-nav-item">Configuring a Vehicle</a></li>
</ol>
</div>
</li>
<li><a href="#system-behavior" class="tds-site-nav-item">System Behavior</a></li>
<li><a href="#example-configuration-pricing-analysis" class="tds-site-nav-item">Example Configuration Pricing Analysis</a></li>
</ol>
</nav>
</div>
</div>
</aside>
</div>
<footer class="tds-site-footer">
<nav class="tds-footer-nav">
<ul class="tds-list tds-list--horizontal">
<li class="tds-footer-item">Tesla © 2025</li>
<li class="tds-footer-item"><a class="tds-link tds-link--secondary" href="https://www.tesla.com/privacy">Privacy & Legal</a></li>
</ul>
</nav>
</footer>
</div>
<div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div>
</div>
<script id="gatsby-script-loader">
window.pagePath="/fleet-api/fleet-telemetry"
</script>
<script id="gatsby-chunk-mapping">
window.___chunkMapping='{"app":["/app-bfeba8c893a1b091e091.js"],"component---src-pages-404-tsx":["/component---src-pages-404-tsx-96c3cb6ce7cc17de9c7d.js"],"component---src-pages-charging-public-key-infrastructure-tsx":["/component---src-pages-charging-public-key-infrastructure-tsx-0eb0bc45160ed3c90ed9.js"],"component---src-pages-fleet-api-index-tsx":["/component---src-pages-fleet-api-index-tsx-f220d7978b2855bae58f.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-56f83cc043d34363de65.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-announcements-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-announcements-mdx-be15af6b4440b08ef8ea.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-index-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-index-mdx-f071a650345b0404830a.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-overview-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-overview-mdx-565682df88dff2d36055.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-partner-tokens-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-partner-tokens-mdx-7f1bc5e1a925ac76c200.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-third-party-business-tokens-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-third-party-business-tokens-mdx-fe20849bfb1808a63a64.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-third-party-tokens-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-authentication-third-party-tokens-mdx-035eadf110ffb057bcbb.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-billing-and-limits-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-billing-and-limits-mdx-100206615113c16bf247.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-charging-endpoints-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-charging-endpoints-mdx-0bfd55125abad8aa3f12.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-energy-endpoints-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-energy-endpoints-mdx-c2e124ceec7a020d7f94.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-partner-endpoints-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-partner-endpoints-mdx-4e3803b2142ddc5edcd7.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-user-endpoints-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-user-endpoints-mdx-6cbef18882d8fb32ba32.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-vehicle-command-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-vehicle-command-mdx-707cab015124c904a22a.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-vehicle-endpoints-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-endpoints-vehicle-endpoints-mdx-d4a6e075644d3f1e08a5.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-fleet-telemetry-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-fleet-telemetry-mdx-0027237241016f4063d6.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-base-urls-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-base-urls-mdx-84f0fe0b9304835aa9e1.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-best-practices-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-best-practices-mdx-58256cd3fe91e8db35bf.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-conventions-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-conventions-mdx-e16eaff640c0eaf7ba9f.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-legal-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-legal-mdx-e2fc035da092b1212ad3.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-what-is-fleet-api-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-getting-started-what-is-fleet-api-mdx-af461231d6bf095e235d.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-support-contact-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-support-contact-mdx-3b7be3c0d321668bc577.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-support-faq-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-support-faq-mdx-23e6a29b683126cd43df.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-support-index-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-support-index-mdx-fc4b618ff6e595b75c2d.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-virtual-keys-developer-guide-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-virtual-keys-developer-guide-mdx-f8e4509db96f9e2808ac.js"],"component---src-templates-generic-page-tsx-content-file-path-content-docs-en-virtual-keys-overview-mdx":["/component---src-templates-generic-page-tsx-content-file-path-content-docs-en-virtual-keys-overview-mdx-6ebb2f571636dc185e90.js"]}'
</script>
<script>
window.___webpackCompilationHash="895c19bc2a20ad74a919"
</script>
<script src="/docs/webpack-runtime-4bdedc2186fb2415479b.js" async></script>
<script src="/docs/framework-6f9cb054dc04931f7070.js" async></script>
<script src="/docs/app-bfeba8c893a1b091e091.js" async></script>
</body>
</html>