Units

Every measure is a { value, unitCode } pair using UN/CEFACT Recommendation 20 codes.

A bare number is ambiguous. 0.095 for a rollover probability could mean 9.5% or 0.095%, and nothing in the response would tell you which.

Every measure in the API therefore ships as a pair:

JSONC
"possibility": { "value": 9.5, "unitCode": "P1" }

The codes

Unit codes come from UN/CEFACT Recommendation 20, the same list schema.org uses for unitCode. If you already handle unitCode from structured data, these are the same codes.

codemeanswhere you'll see it
P1percentrollover possibility
C62one (a pure ratio)static stability factor
KMTkilometreodometer, distances
SMImile (statute)odometer, US sources
LTRlitreengine displacement, fuel capacity
CMQcubic centimetreengine displacement
LBRpoundweights
INHinchdimensions

Why a ratio carries a code

C62 is Recommendation 20's code for a dimensionless quantity. The static stability factor is track width divided by centre-of-gravity height, so it has no unit, and C62 says so explicitly.

That is different from a missing unit. { value: 1.48, unitCode: "C62" } renders as 1.48. A measure with a value and no unitCode is a bug. Please report it.

How to read them

Switch on the code. Do not infer the unit from the field name. The same field can arrive in different units from different sources. An odometer is KMT from a Canadian record and SMI from a US one, and the field is called odometer either way.

Do not parse the code. It is an identifier from a fixed list, not a display symbol. Map it to whatever your interface shows.

A measure always has both halves. If value is present, unitCode is present. Our emit gate rejects a measure with an empty unit, so you will not see a half-populated one. A measure that does not apply is null as a whole.