/api/v1/passports/{id}/measurements/latestGet latest measurements
Returns the most recent measurement for each accepted Annex XIII point 4 use-data field. The response is `{ data: { <fieldKey>: LatestMeasurement | null } }` — every accepted key is always present; a key is `null` when no measurement has been received for that field yet. A `LatestMeasurement` carries `value`, `measuredAt`, and optionally `unit` and `externalId`. **Battery passports only** — a non-battery passport returns 422 `not_a_battery`.
This endpoint reflects the same values the passport viewer shows for the dynamic data section. `dynamicDataAsOf` on the passport is the `measuredAt` of the newest measurement across all fields — this endpoint lets you retrieve each field's latest value and when it was taken. An alternate addressing form exists at `GET /api/v1/passports/by-serial/{serial}/measurements/latest` with the same response shape. If a serial is not unique within your account, add `?gtin=<gtin>` to disambiguate. Read-only; OAuth scope: `passports:read`.
Path parameters
- idrequired
ObjectId
Passport ID.
Headers
- Authorizationrequired
string
`Bearer <token>` — either a `tp_` API key (Developer → API Keys; simplest, for server-to-server) or an OAuth 2.0 access token (Developer → OAuth Apps; for user-authorized apps, scoped + revocable). The Authentication page has the full OAuth flow and scope list.
e.g. Bearer tp_REDACTED_xxxxxxxxxxxx
Request
curl -sS \
https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/measurements/latest \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"Response
{
"data": {
"stateOfHealth": {
"value": 96.4,
"measuredAt": "2027-03-01T06:00:00Z",
"externalId": "bms-7781-2027-03-01"
},
"numberOfFullEquivalentChargingCycles": {
"value": 112,
"measuredAt": "2027-03-01T06:00:00Z"
},
"currentStateOfCharge": null,
"capacityFade": null,
"powerFade": null,
"stateOfCertifiedEnergy": null,
"remainingCapacity": null,
"remainingPowerCapability": null,
"remainingRoundTripEfficiency": null,
"evolutionOfSelfDischargeRate": null,
"currentInternalResistancePack": null,
"internalResistanceIncrease": null,
"dynamicRatedCapacity": null,
"dynamicPowerCapability": null,
"dynamicInternalResistance": null,
"dynamicEnergyRoundTripEfficiency": null,
"dynamicExpectedLifetimeCycles": null,
"numberOfChargingEvents": null,
"negativeEvents": null,
"temperatureConditionsHistorical": null
}
}