BMW Guide
Here is a guide to supported BMW models and regions, information on the necessary connectivity subscriptions, API pricing and datapoints, and relevant links to telematics information on BMW's connected car website.
Available data points
You can find a breakdown of all available data points in the Auto API availability for BMW & MINI table.
Eligible Models
All European-market BMW models produced since July 2017 have connection capabilities, and come with three years of ConnectedDrive services at no cost.
Supported Markets
BMW and MINI customers in the following countries can grant 3rd-party access to vehicle data: Austria, Belgium, Bulgaria, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland, and the United Kingdom.
BMW Data Plans
In order for a BMW customer to supply data through our APIs, he or she must have a ConnectedDrive subscription with BMW or MINI, and the ConnectedDrive "Remote Services" service. Four different ConnectedDrive packages are available: Connected Package, Connected Package Plus, Connected Package Professional, and Connected Package Excellence. Prices and services offered vary. Each package includes "Remote Services"; any package will provide all the data necessary.
Fleet vehicles with a production date from 07/2020 and onwards do no need a separate ConnectedDrive subscription.
API Refresh Rate
All eligible BMW models can reliably send data at what might be considered the beginning and end of a trip. An update is sent when a driver unlocks and opens his door, and another occurs when the driver leaves the car and locks the doors. Another update is sent whether or not the car has been driven.
The newest BMW models also send data during the trip, every two minutes or three kilometers, whichever comes first.
Location Sharing for fleet vehicles
In order for GPS data to be available, the in-vehicle location sharing settings for MINI vehicles and some older BMW models need to be checked.
API Pricing
For example pricing, please visit our pricing page. You are presented with the pricing for your data points selection within the platform when creating a production app.
Data Points
You can find a breakdown of all available data points in the Auto API availability for BMW & MINI table. Each request returns a timestamp with each data point; it indicates the moment the data was transferred from the vehicle.
Webhooks
The webhooks below are currently in production.
- Each webhook callback costs €0,12 until price cap of €6,69 per month per car (this price cap includes calls to the Auto API as well).
authorization_changed
andauthorization_changed
are free of charge. - We offer volume discounts for accounts which connect large numbers of vehicles. The discount is calculated at the end of each month, and is based on the number of vehicles which received requests that month.
Webhook | Trigger | Updated Properties |
---|---|---|
Accident Reported | Triggered when the driver confirms a minor accident (without deployment of the airbags) | Vehicle Location: Latitude, Longitude, and Heading Engine: Ignition, Engine On Diagnostics: Mileage, Battery Level Lights: Front Exterior Lights Mobile: Connection Race: Vehicle Moving Vehicle Time: Vehicle Time Navi Destination: Arrival Duration, and Coordinates |
Authorization Changed | When an access token’s authorization state changes – for instance, from “pending” to “active”, the authorization_changed webhook is sent, and includes the new authorization status | Authorization state |
Battery Guard Warning | Sent when the 12V battery runs low. | |
Emergency Reported | Triggered when there is an emergency call | Vehicle Location: Latitude, Longitude, and Heading Engine: Ignition, Engine On Diagnostics: Mileage, Battery Level Lights: Front Exterior Lights Mobile: Connection Race: Vehicle Moving Vehicle Time: Vehicle Time |
Fleet Clearance Changed | Sent when the clearance status of a fleet vehicle changes. | |
Maintenance Changed | Triggered when the Condition based services changes | |
Vehicle Location Changed | Triggered when the Condition based services changes |
Example webhook
The following example shows the JSON content of an accident_reported event being delivered.
{
"vehicle": {
"vin": "1HMCF6112HA3FBBCC",
"serial_number": "BB5EAC44D33F205A87"
},
"event": {
"type": "accident_reported",
"received_at": "2019-02-20T09:13:33.563772Z",
"action": "automatic"
},
"application": {
"id": "A77294AC8DA324FB46DA98921"
}
}
Consent flow
For B2C use-cases, the vehicle owner has to go through the following steps in order to grant access to their BMW vehicle data. To support the process, we offer a consumer-oriented service called Driver by High Mobility to vehicle owners. Through a Driver account, it's possible to manage 3rd party data access to all vehicles and to monitor and revoke access at any time by visiting the Driver Dashboard. The consent flow works in every browser and in addition we offer SDKs for iOS and Android to easily include it in any native mobile application.
Click on any image to see a full-sized graphic.
OAuth2
The technical integration of the consent flow is done according to the OAuth 2.0 User Consent guide.
Step 1 | Landing screen
As soon as you trigger the consent flow, the following screen is shown to the user. If the user already has a Driver account they can use it to sign in and select one of their previously used vehicles. In this flow we assume it's a first-time user.
The logo on the top left of the view and the name "Service X" is replaced with the details that you enter for your production application in the console.
Language parameter
It's possible to set the language for the consent flow by passing in the
locale
parameter when initiating the consent flow. English and German are currently supported.
Step 2 | Account Creation
The user is prompted to create an account by entering their email and selecting their country. Once the consent flow has finished, we send a confirmation email to the user with a link to set their password. The terms of use and privacy policy informs the user about our data handling which is fully GDPR compliant.
Legal transparency
You can read the Terms of Use and Privacy Policy of the Driver account on our website.
Step 3 | Car Brand Selection
In this step we ask the user to select their vehicle brand. Every manufacturer that has been activated for your production application is listed in this screen and the user can select which car they want to connect.
Brand parameter
It's possible to skip this step by passing in the
brand
as a parameter when initiating the consent flow according to the OAuth 2.0 User Consent guide.
Step 4 | VIN Entry
Once BMW or MINI has been selected as the brand, we ask the user to enter the Vehicle Identification Number (VIN) of their vehicle. In case the vehicle has been added earlier by the user, the VIN has been stored and can be selected directly from a list.
The user can find their VIN from several places. If the My BMW application has been installed by the user, they can open it up to see the VIN of their connected BMW. Another alternative is to look at the vehicle windscreen or other vehicle documents that include the VIN.
Step 5 | Permissions Consent
The most important step is the approval by the user that your service may get access to their vehicle data. The data points that are listed here are taken from the granted rights for your production application.
Once we have established user consent to share data with your service, there is a redirect back to your service using the redirect_uri
that was used for the initiation of the consent flow. Note that only Redirect URIs that have been registered for your production application in the console are allowed.
In the background we trigger a request to BMW to ask for consent from the My BMW primary user by email. The user will receive an email together with a link to grant access in the My BMW portal.
Pending access token
Note that as the user consent in the My BMW portal is done asynchronously, the OAuth2 access token status is set to
pending
when the redirect back to your service is done at this stage. To get notified when the user has given consent in the My BMW portal, you can subscribe to theauthorization_changed
webhook.
My BMW Portal
Once the user clicks on the link in the email they receive they reach the My BMW portal where the following steps are taken:
- Login with My BMW account
- Review of the permissions to be granted
- Consent to the data sharing
Once this has been done, the status of the OAuth2 access token that was granted in step 5 is changed to approved
and it's possible to use any of our APIs or SDKs to start fetching data for this specific vehicle.
More Information
BMW's page for ConnectedDrive subscriptions.
If you have any questions, please contact us on Slack.