Skip to navigation

🧪 Get Vehicle Carbon Emissions

Estimate a vehicle’s CO2 emissions over a date window from odometer-derived miles traveled and an emission factor based on the vehicle’s GVWR class and fuel type, decoded from its VIN via the NHTSA vPIC registry.

Method: Tank-to-wheel (tailpipe combustion) only — does not include upstream well-to-tank fuel-production emissions. See method on the response.

Factors: kg CO2/vehicle-mile by GVWR class, from the EPA GHG Emission Factors Hub (Table 8, distance-based method, January 2025 edition): Class 1 (Passenger Car) 0.297, Class 1-2a (Light-Duty Truck) 0.394, Class 2b-8 (Medium-/Heavy-Duty Truck) 1.298 — https://www.epa.gov/system/files/documents/2025-01/ghg-emission-factors-hub-2025.pdf . See factor_version on the response for which table version produced a given figure. Electric and CNG vehicles aren’t covered by this table and return a null factor/co2.

Window: Defaults to the trailing 30 days. Supply from_date and to_date to request a custom range (max 90 days).

Nullability: miles_traveled/co2_kg are null when an odometer reading isn’t available at both boundaries of the window. gvwr_class/fuel_type/vehicle_class_bucket/emission_factor_kg_per_mile are null when the vehicle has no VIN on file or the VIN couldn’t be decoded. vehicle_class_bucket/emission_factor_kg_per_mile/co2_kg are also null when fuel_type isn’t covered by the factor table (electric, CNG). These are independent of each other.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

vehicle_idstringRequiredformat: "uuid"

Query parameters

from_datedate or nullOptional

Inclusive start of the emissions window. Format: YYYY-MM-DD Default: 30 days before yesterday. Restriction: to_date - from_date cannot exceed 90 days.

to_datedate or nullOptional

Inclusive end of the emissions window. Format: YYYY-MM-DD Default: yesterday. Restriction: to_date - from_date cannot exceed 90 days.

Response

Successful Response
vehicle_idstringformat: "uuid"
Catena vehicle identifier.
windowobject
Date range used for the estimate.
vinstring or null
VIN on file for the vehicle. Null if none is recorded.
miles_traveleddouble or null

Odometer-derived miles traveled over the window. Null if an odometer reading is missing at either boundary.

gvwr_classstring or null

Raw GVWR value decoded from the VIN via NHTSA vPIC (e.g. ‘Class 8: 33,001 lb and above’). Null if the VIN is missing/undecodable or NHTSA is unavailable.

fuel_typestring or null

Raw FuelTypePrimary value decoded from the VIN via NHTSA vPIC (e.g. ‘Diesel’, ‘Electric’). Null under the same conditions as gvwr_class.

vehicle_class_bucketenum or null

Emission-factor bucket the GVWR class mapped to. Null under the same conditions as gvwr_class, if GVWR didn’t match a recognized class, or if fuel_type isn’t covered by this factor table (electric, CNG).

Allowed values:
emission_factor_kg_per_miledouble or null

Emission factor applied (kg CO2 / vehicle-mile). Null under the same conditions as vehicle_class_bucket.

co2_kgdouble or null

Estimated CO2 emissions in kg: miles_traveled x emission_factor_kg_per_mile. Null if either input is null.

method"tailpipe_only"OptionalDefaults to tailpipe_only

Emissions accounting method used. v1: always tank-to-wheel tailpipe combustion, no upstream fuel-production emissions.

factor_versionstringOptionalDefaults to v2

Version identifier for the emission-factor table used to compute this estimate.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
405
Method Not Allowed Error
409
Conflict Error
422
Unprocessable Entity Error
429
Too Many Requests Error
500
Internal Server Error
501
Not Implemented Error