The MyŠkoda Public API lets third-party developers read connected-vehicle data and remotely control Škoda vehicles - for example to connect a car to a smart-home platform such as Home Assistant. If you own a connected Škoda and want to build on top of its data, this API is for you.
What you get
For each vehicle the API returns its current state:
- vehicle status - doors, windows and lights
- fuel status (combustion engines) and odometer
- air conditioning, including auxiliary heating and active ventilation
- charging and charging profiles (saved charging locations)
- parking position
Remote commands let you start and stop charging and air conditioning. The data available for a specific vehicle depends on what that vehicle supports.
Getting an API key
Every request needs an API key. Keys are created and managed in the MyŠkoda app.
Are you on a mobile phone with MyŠkoda installed?
Reading this on a computer? Scan the QR code below with your phone to open key management in the app:
Don't have MyŠkoda? Download it here.
Quickstart
Pass the key in the X-API-Key header. Fetch your vehicle and its current
state:
curl -H "X-API-Key: YOUR_API_KEY" \
https://public.api.connect.skoda-auto.cz/api/v1/vehicles/YOUR_VIN
A trimmed example response:
{
"vehicle": {
"vin": "TMBJB9NY5RF999999",
"name": "My Enyaq",
"licensePlate": "1MB 1234",
"status": {
"overall": { "doorsLocked": "YES" }
},
"charging": { }
},
"errors": []
}
The response can be limited to selected parts of the data with the include query
parameter - see the API reference for details.
Authentication and key expiry
Send the API key with every request in the X-API-Key header. Keys are bound to
the vehicles you selected when creating them, and they expire.
- Every successful response carries the
X-API-Key-Expires-Atheader with the key's expiry time - use it to renew keys before they lapse. - A request with an expired key fails with 401 and the problem type
api-key-expired. - A request the key is not allowed to make (for example a vehicle it does not cover) fails
with 403 and the problem type
api-key-not-authorized.
In both cases the fix is the same: create or update a key in the MyŠkoda app.
Partial data
A 200 response is not always complete. Parts of the data that your vehicle does
not support are omitted, and so are parts that could not be retrieved at that moment. Every
omitted part is described by an entry in the errors list of the response, with a
machine-readable type code. Treat the errors list as informational -
a non-empty list does not mean the request failed.
Rate limits
Requests are rate-limited per API key. The current limit is 20 requests per hour; this value is not final and may change. The response headers are the authoritative source:
RateLimit-Limit- your quotaRateLimit-Remaining- requests left in the current windowRateLimit-Reset- seconds until the quota replenishes
When the limit is exceeded the API responds with 429 Too Many Requests; wait for
the period indicated by the Retry-After header before retrying.
Every authenticated request to a rate-limited endpoint counts against the quota, including
requests that end with an error response (for example a 5xx caused by a temporary
outage) - such responses carry the RateLimit-* headers too. Requests rejected with
401 or 403 do not consume quota, and requests rejected with
429 do not prolong the current window.
API reference
The full contract - all endpoints, schemas and headers - lives in the interactive reference:
Errors
Error responses use the application/problem+json format (RFC 9457). Generic
errors that carry no meaning beyond their HTTP status code use the type
about:blank; specific error conditions have their own problem type URI, which
doubles as a link to its documentation page:
| Problem type | Status | Meaning |
|---|---|---|
api-key-expired |
401 | The API key has passed its expiry date. |
api-key-not-authorized |
403 | The API key is not authorized to execute the operation. |
operation-not-authorized |
403 | The vehicle refused the operation for the user the API key belongs to. |
operation-not-supported |
422 | The vehicle lacks the capability the operation needs. |
operation-disabled |
422 | The capability the operation needs is currently disabled for the vehicle. |
rate-limit-exceeded |
429 | The rate limit for the API key has been exceeded. |
vehicle-not-accepting-requests |
429 | The vehicle declined the operation and it can be retried later. |