Open any factory service manual to the lubrication section and you will usually find two volumes for engine oil. One is the dry capacity: what the engine holds when it has been rebuilt and every gallery and cooler is empty. The other is the service fill: what goes back in after a normal drain, with or without a filter change.
They differ by a meaningful amount, and using the wrong one is how a car leaves overfilled. The number a shop wants is the service fill, and it is the number the API returns.
GET /v1/fluids?config_key=2019_honda_cr_v_ex_l15be{ "field": "oil_viscosity", "value": "0W-20" },{ "field": "oil_capacity_qts", "value": "3.7" }The filter is part of the number
Where the manufacturer publishes both a with-filter and a without-filter figure, the with-filter volume is the one that matches what a technician actually does at an oil change, so that is the figure carried. The label says so, and the field name stays the same either way, which matters more than it sounds: a work order template that reads oil_capacity_qts does not need to know which case it got.
Why viscosity travels with it
A capacity without a grade is only half an instruction. The two fields come back together for the same configuration, resolved from the same identifier, so a quote can print both from one call. The other fluids follow the same rule: coolant, transmission, brake, power steering and differential are each named by type rather than described in prose.
A field the manufacturer does not specify for a car is absent from the response rather than zero. An electric vehicle returns no oil viscosity, because there is none, and a client that checks for the field rather than for a truthy value gets that right for free.