Battery health
Paginated battery health scores and diagnostics for vehicles in the authenticated company.
Overview
Endpoint
GET /api/v2/battery-health
Query parameters
0 = All, 1 = Critical, 2 = Warning, 3 = Healthy.BatteryHealthSortField enum values).true, sort results in descending order.BatteryHealthBadge enum values; 0 = None / no filter).Response
200 OK —BatteryHealthResponse
Top-level fields
| Field | Type | Description |
|---|---|---|
| currentVoltage | number | null | Latest observed battery voltage (V) |
| isEngineOn | boolean | null | Whether the engine is currently running |
| voltageHistory | object | Peak, average, and lowest voltage over rolling windows — see below |
| forecast | object | Short-term battery forecast — see below |
| statuses | array | Active diagnostic statuses — see below |
| healthScore | object | Overall health score and component breakdown — see below |
voltageHistory
Contains four rolling-window objects keyed 7day, 30day, 60day, and 90day. Each has the same shape:
| Field | Type | Description |
|---|---|---|
| peak | number | Highest voltage observed in the window (V) |
| average | number | Mean voltage in the window (V) |
| lowest | number | Lowest voltage observed in the window (V) |
forecast
| Field | Type | Description |
|---|---|---|
| score | string | Forecast score label (e.g. "90+") |
| comment | string | Human-readable forecast summary |
statuses[]
| Field | Type | Description |
|---|---|---|
| id | integer | Status identifier |
| label | string | Short diagnostic label (e.g. "Park Drain") |
| comment | string | Human-readable description of the condition |
| signalPattern | string | Signal rule that triggered this status |
healthScore
| Field | Type | Description |
|---|---|---|
| score | integer | Overall health score (0–100) |
| maxScore | integer | Maximum possible score |
| comment | string | Human-readable summary of the score and recommended action |
| composition | object | Per-component ratings — see below |
healthScore.composition
| Field | Type | Description |
|---|---|---|
| restingVoltage | string | Resting-voltage component rating (e.g. "Good", "Fair", "Bad") |
| crankVoltage | string | Cranking-voltage component rating |
| trend | string | Voltage-trend component rating |
| decay | string | Parked-decay component rating |
| chargeAcceptance | string | Charge-acceptance component rating |
| latestReading | string | Latest-reading component rating |
Example response
Error responses
| Status | Meaning |
|---|---|
| 401 | Missing or invalid token |
Authorizations
JWT Bearer token obtained from POST /api/v2/authentication/token/api-key.
Lifetime: ~24 hours (86,399 seconds). Cache the token and reuse it. Re-authenticate 5 minutes before expiry.
Scoping: API key tokens are scoped to the company the key belongs to and may restrict access to a vehicle allowlist and/or action set (see token claims).
No refresh endpoint — re-authenticate with your API key when the token expires.
Query Parameters
Page number to retrieve (1-based). Returned as page in the response.
Number of results per page. Returned as pageSize in the response.
Optional filter by vehicle name.
Band filter: 0 = All, 1 = Critical, 2 = Warning, 3 = Healthy.
Sort field (maps to BatteryHealthSortField enum values).
When true, sort results in descending order.
Badge filter (maps to BatteryHealthBadge enum values; 0 = None / no filter).
Response
200 OK — Returns a fleet-level summary and a paginated list of per-vehicle battery health records, including voltage history, health scores, badge signals, and replacement forecasts.
Fleet-level battery health counts and average score across all vehicles.
Paginated list of per-vehicle battery health records.
Total number of vehicles with battery health data (across all pages).
Current page number (1-based).
Number of results returned per page.