v1

latestOpenAPI 3.1.0Proprietary2026-08-061935150.4 KB
EV Routing

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.

get/ev-route

Query parameters

originLatnumber required
Example:50.087

Origin latitude (-90 to 90); must fall inside the European service area

originLonnumber required
Example:14.421

Origin longitude (-180 to 180); must fall inside the European service area

destLatnumber required
Example:52.52

Destination latitude (-90 to 90); must fall inside the European service area

destLonnumber required
Example:13.405

Destination longitude (-180 to 180); must fall inside the European service area

vehicleIdstring
Example:tesla-model-3-lr-2021

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.

batteryKwhnumber
Example:75

Usable battery capacity for a custom vehicle. Required together with consumptionWhKm when vehicleId is omitted.

consumptionWhKmnumber
Example:160

Flat consumption for a custom vehicle, in Wh per km. Required together with batteryKwh when vehicleId is omitted.

connector'ccs' | 'chademo' | 'type2'
Example:ccs

DC connector of a custom vehicle. Only used when vehicleId is omitted.

maxDcKwnumber
Example:250

Peak DC charging power of a custom vehicle. Only used when vehicleId is omitted.

initialSocnumber
Example:90

State of charge at departure, in percent. Must be greater than reserveSoc.

minArrivalSocnumber
Example:10

Minimum state of charge on arrival at the destination, in percent.

reserveSocnumber
Example:10

Buffer the planner refuses to drive below at any point, in percent. Raising it trades range for margin.

ambientCnumber
Example:20

Ambient temperature in Celsius. Cold raises consumption and slows charging, so it changes both stop count and trip time.

maxDetourKmnumber
Example:5

How far off the route a candidate charger may sit, in km.

optimize'time'
Example:time

Optimization objective. Only 'time' is supported today; cost-optimal planning needs per-station price coverage we do not yet have outside a few markets.

includeGeometryboolean
Example:true

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.

feasibleboolean

False when the trip cannot be completed; see gap and reason

warningsstring[]

Non-fatal caveats about this plan, e.g. that the route through the chosen chargers is longer than the direct one

reasonstring

Present only when feasible is false

geometrystring

Encoded polyline of the final route; present only when includeGeometry=true

attributionstring[]

Required credit for the data behind this response. Display it wherever you present the plan — it is a license condition of OpenStreetMap (ODbL), openrouteservice, and the Open EV Data catalog, not optional metadata.

disclaimerstring

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."
}