Plan an EV route with charging stops
Plans a drivable route between two points for a specific electric vehicle and inserts the charging stops needed to complete it: which stations, arrival and departure state of charge, charge duration, energy used, and total trip time. The optimizer minimizes total trip time (drive + charge + plug overhead), not stop count. Charging cost is returned where the operator publishes a price — coverage is partial, so estCostEur can be null while the plan is complete. Europe only (lat 35..62, lon -11..35), routes up to 2500 km. Estimates depend on real conditions; verify charger availability before relying on a stop.
Query parameters
Origin latitude (-90 to 90); must fall inside the European service area
Origin longitude (-180 to 180); must fall inside the European service area
Destination latitude (-90 to 90); must fall inside the European service area
Destination longitude (-180 to 180); must fall inside the European service area
Catalog vehicle to plan for, from GET /v1/ev-vehicles. Supplies battery, consumption, DC ports and the model charging curve. Mutually exclusive with the custom vehicle parameters below — sending both is a 400.
Usable battery capacity for a custom vehicle. Required together with consumptionWhKm when vehicleId is omitted.
Flat consumption for a custom vehicle, in Wh per km. Required together with batteryKwh when vehicleId is omitted.
DC connector of a custom vehicle. Only used when vehicleId is omitted.
Peak DC charging power of a custom vehicle. Only used when vehicleId is omitted.
State of charge at departure, in percent. Must be greater than reserveSoc.
Minimum state of charge on arrival at the destination, in percent.
Buffer the planner refuses to drive below at any point, in percent. Raising it trades range for margin.
Ambient temperature in Celsius. Cold raises consumption and slows charging, so it changes both stop count and trip time.
How far off the route a candidate charger may sit, in km.
Optimization objective. Only 'time' is supported today; cost-optimal planning needs per-station price coverage we do not yet have outside a few markets.
Include the encoded polyline of the final route (the one that passes through the chosen stops) in the response. Off by default because it is large.
Response
A plan. Note that feasible:false is also a 200 — the request was valid, the trip just cannot be completed with this vehicle and the chargers we know about, and gap/reason explain where it breaks.
Example response
{
"feasible": true,
"summary": {
"distanceKm": 351.2,
"driveMin": 227,
"chargeMin": 19,
"totalMin": 246,
"chargeActiveMin": 12,
"plugOverheadMin": 7,
"offRouteMin": 3,
"offRouteKm": 1.8,
"energyKwh": 64.3,
"arrivalSocPct": 15,
"chargeStops": 1,
"estChargeCostEur": 21.7,
"stopsWithKnownPrice": 1
},
"warnings": [],
"stops": [
{
"name": "EnBW Senftenberger Str. 29, Schipkau",
"owners": [
"EnBW"
],
"lat": 51.5233,
"lon": 13.9341,
"address": {
"street": "Senftenberger Str. 29",
"city": "Schipkau",
"zip": "01998",
"country": "DE"
},
"maxPowerKw": 300,
"stationCount": 8,
"routeKm": 219,
"arrivalSocPct": 18,
"departSocPct": 62,
"chargeMin": 19,
"kwhAdded": 33.4,
"estCostEur": 21.7,
"detourKm": 1.2
}
],
"legs": [
{
"toKm": 219,
"distanceKm": 219,
"driveMin": 132,
"energyKwh": 38.6
}
],
"vehicle": {
"id": "tesla-model-3-lr-2021",
"label": "Tesla Model 3 Long Range 2021",
"usableBatteryKwh": 75,
"consumptionWhPerKm": 160,
"dcMaxKw": 250,
"dcPorts": [
"ccs"
]
},
"gap": {
"fromKm": 120,
"toKm": 300,
"neededKwh": 21.4
},
"reason": "No charger within range on this stretch",
"attribution": [
"© OpenStreetMap contributors",
"openrouteservice.org",
"Open EV Data"
],
"disclaimer": "Estimates only."
}