EV Vehicle Catalog
The electric vehicles the route planner can plan for
GET Request
~100ms response
1 credit per request
Endpoint
GET https://api.carapi.dev/v1/ev-vehiclesTake an id from here and pass it as vehicleId to /v1/ev-route.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| brand | string | Optional | Case-insensitive brand filter, e.g. Tesla. Max 100 characters. |
| q | string | Optional | Free-text filter across brand, model and variant. Max 100 characters. |
With no filters this returns the whole catalog in one response — there is no pagination.
Request Examples
cURL
curl -X GET \
"https://api.carapi.dev/v1/ev-vehicles?brand=Tesla&token=YOUR_API_KEY"JavaScript
const res = await fetch(
'https://api.carapi.dev/v1/ev-vehicles?q=model%203&token=YOUR_API_KEY'
)
const { vehicles, attribution } = await res.json()
// Feed an id straight into the route planner
const vehicleId = vehicles[0].id
// Required by the catalog license — display it alongside the data
console.log(attribution)Response
{
"attribution": "Vehicle data from Open EV Data",
"count": 2,
"vehicles": [
{
"id": "tesla-model-3-lr-2021",
"brand": "Tesla",
"model": "Model 3",
"variant": "Long Range Dual Motor",
"releaseYear": 2021,
"usableBatteryKwh": 75,
"consumptionWhPerKm": 160,
"dcMaxKw": 250,
"dcPorts": ["ccs"]
},
{
"id": "tesla-model-y-lr-2022",
"brand": "Tesla",
"model": "Model Y",
"variant": "Long Range Dual Motor",
"releaseYear": 2022,
"usableBatteryKwh": 75,
"consumptionWhPerKm": 168,
"dcMaxKw": 250,
"dcPorts": ["ccs"]
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
| attribution | string | Required credit for the catalog — a license condition, not metadata |
| count | integer | Number of vehicles matching the filters |
| vehicles[].id | string | Pass this as vehicleId to /v1/ev-route |
| vehicles[].brand | string | Manufacturer |
| vehicles[].model | string | Model name |
| vehicles[].variant | string|null | Trim or drivetrain variant, where the catalog distinguishes one |
| vehicles[].releaseYear | integer|null | Model year |
| vehicles[].usableBatteryKwh | number | Usable capacity — what the planner works with, below the nominal pack size |
| vehicles[].consumptionWhPerKm | number | Rated consumption used as the planner baseline before speed, grade and temperature |
| vehicles[].dcMaxKw | number | Peak DC charging power |
| vehicles[].dcPorts | string[] | DC connectors the vehicle accepts, e.g. ccs |
Important Notes
- •Vehicle data comes from Open EV Data. The
attributionstring in every response is a license condition — display it alongside the data. - •
usableBatteryKwhis usable capacity, not the nominal pack size. Planning against the nominal figure overstates range. - •Vehicles without a DC fast-charging port are not plannable —
/v1/ev-routerejects them with a 400. - •If your vehicle is missing, plan it directly with
batteryKwhandconsumptionWhKminstead of an id. - •Each request consumes 1 API credit from your monthly allowance.