Skip to content
Concepts / Describing a vehicleView Markdown ↗
Beta

AutoUncle Data Services is in beta. The API, MCP tools and agent skill may change often, including breaking changes, until version 1.0. Read the changelog before you upgrade an integration.

Describing a vehicle

This page explains how you describe a vehicle in a valuation or normalization request, how your inputs combine, and how to read the vehicle that comes back. The Vehicle object and VehicleInput are specified in the vehicles reference.

Inputs and the returned vehicle

There are two sides:

  • The input is what you send: vehicle in the request (a VehicleInput), plus any description text and images. Every field is optional apart from what is needed to identify the vehicle, and unknown values should be left out rather than guessed. You can send the attributes on this page, or an AutoUncle Vehicle Schema (AVS) vehicle document, such as the vehicle another call returned.
  • The returned vehicle is the Vehicle that was identified and, for a valuation, priced: an AVS vehicle document with catalogue IDs and names for every level that could be identified, its specification, equipment, registration and odometer. Beside it, identification says how well it was identified and, in fields, where each value came from.

Always read the returned vehicle. If it is not the car you meant, the price is not for that car.

How inputs combine

You can mix catalogue IDs, structured attributes, text and photos in one request. They are combined in this order of precedence:

  1. Catalogue IDs in vehicle.catalogue (brand_id, model_id, generation_id, drivetrain_id, equipment_variant_id). They are used as given. Send any levels you know; a lower level fills in its parents, so a drivetrain_id alone identifies the brand, model and generation too. All IDs must belong to one hierarchy, or the valuation is refused with catalogue_id_conflict.
  2. Structured attributes such as make, model, variant, fuel, transmission, power_hp and model_year. They are matched against the catalogue and always win over anything read from text or photos.
  3. Text and photos. description is read by deterministic parsing rules and, for live keys when the deployment has it configured, by automated interpretation. Photos are used only by automated interpretation. Neither ever runs for test keys.
  4. Catalogue data for the resolved drivetrain, such as fuel, power and engine size, fills attributes you did not send.
  5. Defaults and assumptions, marked assumed in identification.fields and reported in warnings. Mileage is never assumed unless you set options.allow_mileage_estimation: true, and equipment never unless you set options.allow_equipment_estimation: true (see assumed equipment).

Names are matched as the catalogue spells them; common variants such as Volkswagen for the catalogue brand VW are recognized when you send them as structured make. In practice, deterministic text parsing alone often cannot identify a vehicle from a description, so with a test key (or no_ai/strict) send at least make, model, model_year and mileage as structured fields. See free text and photos.

Identity

Field Use it for
catalogue.*_id The exact vehicle, from the catalogue. The most precise input.
make, model Names from your source, such as VW and Golf.
variant Free-text engine or trim designation, such as 1.5 TSI DSG or GTI Performance. Helps pick the drivetrain.
body Body style, such as hatchback, estate or SUV. Unknown labels may stay unresolved.
model_year, first_registration The registration year as an integer, or the first registration date as YYYY-MM-DD. When both are sent, the year of first_registration is used. Do not derive a date from a photograph.

Every attribute on this page also has a place in an AVS vehicle document, such as identity.brand.name for make or specification.powertrain.energy for fuel; the VehicleInput table lists them.

Mileage and units

vehicle.mileage always has a value and an explicit unit:

{
  "mileage": { "value": 45000, "unit": "km" }
}
Unit Meaning
km Kilometres
mi Miles
mil Scandinavian miles of 10 km, as used in Sweden

Send the odometer reading in the unit you have; it is converted to the market's unit before scoring. The returned vehicle reports it in kilometres, as AVS vehicle.odometer.km, whatever the market. Do not convert it yourself and then send the original unit. 0 is a valid mileage. Missing mileage is refused with missing_mileage unless you opt in to the fixed 96,000 km baseline; see refusals & missing mileage.

Other units are fixed:

  • power_hp is in horsepower. Convert kilowatts first (hp = kW × 1.35962, rounded), or send an AVS document with specification.powertrain.powerKw and it is converted for you.
  • engine_size_l is in litres, for example 1.5. Omit it for fully electric vehicles.
  • battery_kwh is the traction battery capacity in kWh.
  • electric_range_km is always in kilometres, whatever the market.

Drivetrain and specification

Field Values
fuel Prefer the values from GET /v1/catalogue/enums: petrol, diesel, electric, hybrid, plug_in_hybrid_petrol, plug_in_hybrid_diesel, lpg, cng, hydrogen. Source labels are normalized when recognized.
transmission manual or automatic. Omit it when unknown: an omitted gearbox is not treated as manual.
drive fwd, rwd, awd or 4wd.
doors, seats Integers from the specification.
color Exterior color or color family from your source.
condition A known numeric grade from 0 to 4. Omit it rather than inventing a grade.

Equipment

equipment is a list of feature keys from GET /v1/catalogue/enums, such as INFOTAINMENT_NAVIGATION, CAMERA_PARKING_REAR or BATTERY_HEAT_PUMP. Up to 150 keys, as strings. The earlier keys such as has_gps are still accepted. Unrecognized keys are ignored and produce an equipment_not_recognized warning.

A returned Vehicle lists its equipment as AVS features in equipment.features: { "key": "EXTERIOR_TOWBAR_FIXED", "name": "Fixed Trailer Hitch", "category": "EXTERIOR", "ids": [{ "scheme": "autouncle", "value": "f-9e2bf372ce4d984dd6722039" }], "availability": "fitted" }. The key is the most specific feature the listing or your request states (an adaptive cruise control rather than plain cruise control). A feature that is not listed is unknown, not absent. With options.allow_equipment_estimation: true, features assumed for the vehicle are listed too, with availability: "unknown" and marked assumed in identification.fields.

Flags

flags holds boolean risk and eligibility attributes, up to 30 entries. The valuation model covers ordinary used cars for sale, so these ten flags make a vehicle ineligible, and they are the only flags with an effect:

Flags Effect when true
is_damaged, has_new_engine, is_leasing_price, has_no_battery, is_auction_car, is_commercial_car, price_is_leasing_rate Refused with unsupported_vehicle in every market.
has_no_tax Refused with unsupported_vehicle in DK, SE, DE, ES, AT and PT.
has_yellow_plates, is_camper_version Refused with unsupported_vehicle in DK.

Flags that are false change nothing. Any other flag name is ignored and the result carries a flags_not_recognized warning naming it; a market-specific flag sent for another market, such as has_yellow_plates in DE, is ignored with a flags_not_applicable warning. Each flag is also described in the request fields.

VIN and registration plate

With a live key, a vin or registration_plate is looked up before the vehicle is resolved, and what the lookup finds fills in the attributes you left out.

You send Market Looked up in Fills
registration_plate DK Danish Motor Register (DMR) make, model, variant, fuel, transmission, body, colour, doors, first registration, model year, power and engine size
vin DK Danish Motor Register, then VIN decoding if the register does not know the VIN as above, or make, model and model year when decoded
vin other markets VIN decoding make, model and model year
either DE, IT, ES not looked up nothing
registration.hsn and registration.tsn any Kraftfahrt-Bundesamt type snapshot make and model

The identifiers can also be sent as registration.vin and registration.registration_plate, or in an AVS document as vehicle.vin and vehicle.registration.plate. When you send both, the plate is looked up; the VIN is decoded instead only where plates cannot be looked up. Test keys never look anything up.

Your values win. A looked-up value only fills an attribute you did not send. If it disagrees with one you did send (another model, fuel, power or year), your value is used and the result carries a registry_conflict warning naming the fields; check them or the identifier. A year you send settles both model_year and first_registration. The register's odometer readings from past inspections are not the current mileage and are never used, so send vehicle.mileage as usual.

Provenance. Each looked-up value has an entry in identification.fields with source: "registry", basis: "observed" and the source_id of the source that supplied it (dk_vehicle_register, vin_decoding or de_type_approval_codes), and the source is listed in attributions. A catalogue identity matched from looked-up names is still catalogue_match, with evidence_source_id naming the source whose names it was matched from.

When a lookup cannot be used, the valuation goes ahead with the attributes you sent, and a warning says why:

Warning Meaning
registry_lookup_not_available Lookups are not offered in this market (DE, IT, ES), or plates cannot be looked up in it yet.
registry_identifier_invalid The VIN or plate is not in a valid format, so nothing was looked up.
registry_no_match The register or decoder has no record for it.
registry_lookup_failed The lookup timed out or was unavailable.
registry_lookup_not_used A test key: identifiers are never looked up.

If the identifier was your only description of the vehicle (no make, model, catalogue IDs, description or photos) and the lookup times out or is unavailable, the valuation fails instead, with resolution_timeout or resolution_unavailable and service: "vehicle_registry", retryable and without a charge. If it simply finds nothing, the request is refused as vehicle_not_identified.

A lookup is included in the valuation's or normalization's credit; it costs nothing extra. To look an identifier up on its own, use the vehicle lookup endpoints. It shares the processing budget. The raw VIN and plate are not stored in valuation records.

Drive side

drive_side (left or right) is part of the contract, but in this version a request that includes it fails with 500 internal_error. Omit it until the changelog announces a fix. No credit is used when this happens.

Valuation request fields

Every request field, generated from the OpenAPI contract:

Field Type Description
country string Valuation market as an ISO 3166-1 alpha-2 code, such as DK, DE or GB. The market selects its own vehicle data, currency and mileage conventions. 2 to 10 characters.
vehicle object A vehicle as a request describes it: either an AVS vehicle document (any vehicle an endpoint returned, posted back unchanged, or one you build), recognized by its avs member, or the vehicle's attributes (VehicleAttributes). Omit unknown values instead of guessing.
vehicle.make string Vehicle manufacturer or make, such as VW or BMW. Catalogue brand_id avoids ambiguous names. At most 200 characters.
vehicle.model string Model name as supplied by your source, such as Golf. Catalogue model_id avoids name mapping and spelling ambiguity. At most 200 characters.
vehicle.variant string Free-text engine, trim or version designation, such as 1.5 TSI DSG. This can help resolve a more precise catalogue identity. At most 200 characters.
vehicle.body string Body style or source label, such as hatchback, estate or SUV. Unknown labels may remain unresolved. At most 200 characters.
vehicle.fuel string Fuel or electrification type: petrol, diesel, electric, hybrid (a full hybrid that cannot be plugged in), plug_in_hybrid_petrol, plug_in_hybrid_diesel, lpg, cng, ethanol or hydrogen, as listed by /v1/catalogue/enums. Source labels are also normalized when recognized. At most 200 characters.
vehicle.color string Exterior colour or colour family from your source. Colour is normalized when possible. At most 200 characters.
vehicle.catalogue object Stable AutoUncle catalogue UUIDs. Supply any known levels; IDs must describe one consistent vehicle hierarchy.
vehicle.catalogue.brand_id string Make UUID returned by the brands catalogue endpoint. All lower-level IDs must belong to this make. 1 to 100 characters.
vehicle.catalogue.model_id string Model UUID returned by the models catalogue endpoint. Virtual model aliases are resolved to their canonical model for scoring. 1 to 100 characters.
vehicle.catalogue.generation_id string Generation UUID returned for the selected model. This identifies the vehicle generation and body variant. 1 to 100 characters.
vehicle.catalogue.drivetrain_id string Drivetrain UUID returned for the selected generation. Identifies the engine and transmission variant and improves identity precision. 1 to 100 characters.
vehicle.catalogue.equipment_variant_id string Equipment or trim variant UUID returned for the make. It must belong to the same make as the other catalogue IDs. 1 to 100 characters.
vehicle.model_year integer Known registration or model year as a four-digit integer. first_registration takes precedence when both are supplied. 1900 to 2100.
vehicle.first_registration string (date) First registration date in YYYY-MM-DD format. The current valuation payload uses its year; do not derive a registration date from a photograph. At most 10 characters.
vehicle.mileage object Odometer value with an explicit unit. Values are converted to the requested market convention before scoring.
vehicle.mileage.value required number Non-negative odometer reading in the accompanying unit. Do not convert it twice when changing the unit. 0 to 10000000.
vehicle.mileage.unit required string Odometer unit: km means kilometres, mi means miles, and mil means Scandinavian miles of ten kilometres. One of km, mi, mil.
vehicle.transmission string Known transmission type, automatic or manual. Omit it when unknown; an omitted gearbox is not treated as manual. One of manual, automatic.
vehicle.drive string Driven wheels: fwd, rwd, awd or 4wd, or 2wd when only two-wheel drive is known (the value catalogue drivetrains return for most cars). Use the value supported by the vehicle specification. One of fwd, rwd, 2wd, awd, 4wd.
vehicle.power_hp number Engine or drivetrain power in horsepower. Convert a source value in kilowatts before submitting it here. 0 to 3000.
vehicle.engine_size_l number Combustion engine displacement in litres, such as 1.5. Omit for a fully electric vehicle. 0 to 30.
vehicle.battery_kwh number Known traction battery capacity in kilowatt-hours. Omit when the source does not report a capacity. 0 to 500.
vehicle.electric_range_km number Known electric driving range in kilometres, regardless of the odometer unit or valuation market. 0 to 3000.
vehicle.doors integer Number of doors reported by the vehicle specification. Helps distinguish otherwise similar body variants. 1 to 10.
vehicle.seats integer Number of seats reported by the vehicle specification. 1 to 20.
vehicle.condition number Known numeric vehicle condition grade from 0 through 4. Omit unknown condition rather than inventing a grade. 0 to 4.
vehicle.drive_side string Steering wheel position: left for left-hand drive and right for right-hand drive. This is not the side of the road used by traffic. One of left, right.
vehicle.flags object Boolean risk and eligibility attributes. Only the documented keys have an effect: when one is true, the vehicle is outside the market's model and the valuation is refused with unsupported_vehicle (some keys only in the markets they name). false has the same effect as leaving the key out. Any other key is ignored with a flags_not_recognized warning, and a market-specific key sent for another market is ignored with a flags_not_applicable warning. At most 30 entries.
vehicle.flags.is_damaged boolean The vehicle is damaged. When true the vehicle is refused with unsupported_vehicle in every market.
vehicle.flags.has_new_engine boolean The engine has been replaced. When true the vehicle is refused with unsupported_vehicle in every market.
vehicle.flags.is_leasing_price boolean The price is a leasing price, not a sale price. When true the vehicle is refused with unsupported_vehicle in every market.
vehicle.flags.has_no_battery boolean An electric vehicle sold without its traction battery, for example under battery rental. When true the vehicle is refused with unsupported_vehicle in every market.
vehicle.flags.is_auction_car boolean The vehicle is sold at auction. When true the vehicle is refused with unsupported_vehicle in every market.
vehicle.flags.is_commercial_car boolean The vehicle is registered or sold as a commercial vehicle. When true the vehicle is refused with unsupported_vehicle in every market.
vehicle.flags.price_is_leasing_rate boolean The price is a periodic leasing rate, not a sale price. When true the vehicle is refused with unsupported_vehicle in every market.
vehicle.flags.has_no_tax boolean The price excludes registration tax. Applies in DK, SE, DE, ES, AT and PT, where true is refused with unsupported_vehicle.
vehicle.flags.has_yellow_plates boolean Registered on Danish yellow (commercial) plates. Applies in DK only, where true is refused with unsupported_vehicle.
vehicle.flags.is_camper_version boolean A camper conversion. Applies in DK only, where true is refused with unsupported_vehicle.
vehicle.equipment array Known equipment as feature keys from /v1/catalogue/enums, such as EXTERIOR_TOWBAR_FIXED or INFOTAINMENT_NAVIGATION, as strings or as the items of a returned Vehicle. The earlier keys such as has_tow_bar are still accepted. Unrecognized keys produce a warning. At most 150 items.
vehicle.vin string Optional vehicle identification number; the same as registration.vin. Live keys look it up: in DK in the Danish Motor Register, elsewhere with VIN decoding (make, model and model year). Never looked up in DE, IT or ES, or with test keys. Looked-up values only fill attributes you leave out and are identified against the catalogue like your own; their provenance in identification.fields has source registry and a source_id. A value that disagrees with one you supplied gives a registry_conflict warning while yours is used. If the lookup cannot be used, your other attributes are used and a warning says why. Included in the request's credit. The raw VIN is not retained. At most 30 characters.
vehicle.registration_plate string Optional registration plate; the same as registration.registration_plate. Live keys look it up in the national register where one is connected (DK, the Danish Motor Register); elsewhere it gives a registry_lookup_not_available warning, and a vin sent with it is still decoded. Looked-up values only fill attributes you leave out, as for vin. The odometer reading of the last inspection is never used as the mileage. Included in the request's credit. The raw plate is not retained. At most 30 characters.
vehicle.identity object Canonical identity: a catalogue ID per level, or a brand and model name. Canonical form of make, model, variant and catalogue.
vehicle.identity.level string Read-only part of a returned Vehicle. Accepted and ignored.
vehicle.identity.<level> object An identity level: brand, model, generation, drivetrain or equipment_variant. Send an id, or a name for brand and model.
vehicle.identity.<level>.id string or null Catalogue ID from the catalogue API or a returned Vehicle. Wins over name. All IDs must describe one consistent catalogue hierarchy.
vehicle.identity.<level>.name string Name as your source spells it. Used for brand and model when there is no id; ignored at the other levels. At most 200 characters.
vehicle.identity.<level>.from_year integer Read-only part of a returned generation. Ignored.
vehicle.identity.<level>.to_year integer Read-only part of a returned generation. Ignored.
vehicle.identity.variant_text string Free-text engine, trim or version designation; the same as variant. At most 200 characters.
vehicle.specs object Canonical technical facts: energy.fuel for fuel, power.hp or power.kw for power_hp, transmission.type for transmission, traction for drive, and body, doors, seats, engine_size_l, battery_kwh and electric_range_km as named.
vehicle.specs.body string Body type. One of hatchback, estate, suv, sedan, mpv, convertible, coupe.
vehicle.specs.doors integer Number of doors. 1 to 10.
vehicle.specs.seats integer Number of seats. 1 to 20.
vehicle.specs.energy object Energy source.
vehicle.specs.energy.fuel string Fuel or electrification type, from the public vocabulary of /v1/catalogue/enums. One of petrol, diesel, electric, hybrid, plug_in_hybrid_petrol, plug_in_hybrid_diesel, lpg, cng, ethanol, hydrogen.
vehicle.specs.power object Engine or drivetrain power. Returned in both units; on input hp wins over kw.
vehicle.specs.power.hp number Power in horsepower. 0 to 3000.
vehicle.specs.power.kw number Power in kilowatts, rounded. On input it is converted to horsepower (1 kW = 1.35962 hp) when hp is absent. 0 to 2300.
vehicle.specs.engine_size_l number Combustion engine displacement in litres, such as 1.5. 0 to 30.
vehicle.specs.transmission object Gearbox. Absent when unknown; absent does not mean manual.
vehicle.specs.transmission.type string Gearbox type. One of manual, automatic.
vehicle.specs.traction string Driven wheels. 2wd means two-wheel drive with the driven axle not recorded, which is what the catalogue knows for most cars. One of fwd, rwd, 2wd, awd, 4wd.
vehicle.specs.battery_kwh number Traction battery capacity in kilowatt-hours. 0 to 500.
vehicle.specs.electric_range_km number Electric driving range in kilometres. 0 to 3000.
vehicle.registration object Canonical registration facts and identifiers. A VIN, plate or HSN/TSN pair is looked up as described for vin.
vehicle.registration.country string Read-only part of a returned Vehicle. Ignored: the request's country is the market. At most 10 characters.
vehicle.registration.first_registration string (date) First registration date (YYYY-MM-DD); the same as first_registration. At most 10 characters.
vehicle.registration.model_year integer Model or registration year; the same as model_year. 1900 to 2100.
vehicle.registration.vin string Vehicle identification number; the same as vin. At most 30 characters.
vehicle.registration.registration_plate string Registration plate; the same as registration_plate. At most 30 characters.
vehicle.registration.hsn string German manufacturer code (HSN, field 2.1 of the registration document). Looked up with tsn in the Kraftfahrt-Bundesamt type snapshot. At most 8 characters.
vehicle.registration.tsn string The first three characters of the German type code (TSN, field 2.2). Looked up with hsn. At most 8 characters.
vehicle.registration.original_market string The car's original sales market (ISO 3166-1 alpha-2), only when you know it independently. Used when a VIN is decoded. At most 10 characters.
vehicle.registration.production_year integer Read-only part of a returned Vehicle. Ignored.
vehicle.listing object Canonical facts about this particular car: mileage, colour.name for color, condition.grade for condition, drive_side and flags.
vehicle.listing.mileage object Odometer reading; the same as mileage.
vehicle.listing.mileage.value required number Non-negative odometer reading in the accompanying unit. 0 to 10000000.
vehicle.listing.mileage.unit required string Odometer unit: km, mi or mil (Scandinavian mile, 10 km). One of km, mi, mil.
vehicle.listing.mileage.read_on string (date) Read-only date of a register's reading. Ignored. A register's past inspection reading is not today's mileage: replace it before you value the car.
vehicle.listing.colour object Exterior colour.
vehicle.listing.colour.name required string Colour from your source; the same as color. At most 200 characters.
vehicle.listing.colour.family string Read-only part of a returned Vehicle. Accepted and ignored. At most 100 characters.
vehicle.listing.condition object Condition.
vehicle.listing.condition.grade required number Condition grade from 0 through 4; the same as condition. 0 to 4.
vehicle.listing.drive_side string Steering wheel position; the same as drive_side. One of left, right.
vehicle.listing.flags object Boolean risk and eligibility attributes; the same keys and effect as flags. At most 30 entries.
vehicle.object string Read-only part of a returned Vehicle. Accepted and ignored.
vehicle.status string Read-only part of a returned Vehicle. Accepted and ignored.
vehicle.catalogue_version string Read-only part of a returned Vehicle. Accepted and ignored.
vehicle.fields object Read-only part of a returned Vehicle. Accepted and ignored.
vehicle.candidates object Read-only part of a returned Vehicle. Accepted and ignored.
description string Unstructured listing text describing the vehicle. Existing parsers and deployment-configured optional AI can propose attributes; the response identifies assumptions and unresolved inputs. 1 to 20000 characters.
images array Up to eight vehicle photos, each supplied by HTTPS URL or inline base64 data. AI image resolution is deployment-configured and never runs for test keys. Warnings identify unused images. On a live key, photos cost one extra credit per request (not per photo), charged only when the request succeeds and a value was read from them (usage.charges.images); skipped or unused photos are not charged. At most 8 items.
images[].url string (uri) Public HTTPS image URL on port 443, without credentials or fragments. Private network destinations and redirects are rejected. Remote images must be supported image types and at most 8 MB each. At most 2048 characters.
images[].data string Strict base64-encoded image bytes, without a data-URL prefix. Inline data must also fit the total 1 MB API request limit. At most 1000000 characters.
images[].media_type string MIME type for inline image bytes: image/jpeg, image/png, image/webp or image/gif. The actual image signature is checked. At most 100 characters.
pricing object The asking-price context for this valuation. The result explicitly states its currency and whether the expected asking price is dealer retail or private sale.
pricing.price_basis string dealer_retail estimates a freshly listed dealer asking price; private_sale estimates a private seller asking price. These are not guaranteed transaction or trade-in prices. One of dealer_retail, private_sale.
pricing.seller_region string Known seller region within the selected market. This is passed as regional pricing context when available. At most 120 characters.
pricing.asking_price number Optional asking price in the market currency. Used to calculate AutoUncle price ratings and rating stability across the uncertainty interval. 0 to 100000000.
options object Resolution and minimum precision controls. Missing optional values use the documented default behaviour.
options.resolution string auto uses deterministic resolution and optional configured AI; no_ai uses deterministic resolution only; strict disables AI and refuses missing registration year or mileage. Mileage is never assumed without allow_mileage_estimation=true, and strict mode overrides that permission. Configured live AI is invoked only for missing identity/year or core drivetrain attributes, catalogue candidates the deterministic matcher cannot separate, equipment or condition the request does not supply, and whenever images are sent (for the equipment, colour, condition and drive side they show). An image that cannot be read is skipped with an image_skipped warning. Once invoked, a dependency timeout or outage fails the valuation; it is never silently treated as successful enrichment. One of auto, no_ai, strict.
options.min_precision string Minimum acceptable precision grade. If the result falls below this grade, the request is refused without consuming a credit. Sandbox results are indicative. One of high, medium, low, indicative.
options.include array Optional response sections to add. A section never changes the price, intervals or precision. comparables adds up to five comparable listings on sale and five recently sold in the same market, with top-level facts only, as supporting evidence for the valuation (see comparables in the response). One extra credit on a live key, charged only when listings are returned (comparables.status included) and released otherwise. Unavailable in Denmark, where the response says so with a note instead. trade_in_price adds AutoUncle's estimate of a fair trade-in price with a range (see trade_in_price in the response). One extra credit on a live key, charged only when it is returned (trade_in_price.status included). Available in AT, CH, DE, DK, ES, FR, GB, IT, NL, PL, PT and SE; in other markets the response says so with a note and nothing is charged. similar_cars_link adds similar_cars_url, a link to similar cars for sale on the market's AutoUncle site. Free, in every market. At most 10 items.
options.allow_mileage_estimation boolean Explicitly allow a fixed 96,000 km baseline when mileage cannot be extracted or supplied. This is an assumption, not a vehicle-specific estimate; it lowers precision. Default false. Strict resolution still refuses missing mileage. Default false.
options.allow_equipment_estimation boolean Explicitly allow equipment the request does not state to be assumed: the catalogue's equipment for the identified trim when the catalogue lists it, otherwise the equipment at least 70% of comparable vehicles on the market have. Assumed equipment is only added, never against equipment the request, its description or its photos state or deny, and is marked source imputed, basis assumed in identification.fields (availability unknown in vehicle.equipment), with an equipment_assumed warning and an improve_precision hint. Like any assumption it lowers precision to low. Test keys use only the catalogue trim, never market data. Default false. Strict resolution ignores it. Default false.

The returned vehicle

A valued result returns the Vehicle that was priced, with its identification beside it:

{
  "vehicle": {
    "avs": { "version": "0.3", "kind": "vehicle" },
    "identity": {
      "brand": { "name": "VW", "ids": [{ "scheme": "autouncle", "value": "b-0957579dc5bca6de229d2f32" }] },
      "model": { "name": "Golf", "ids": [{ "scheme": "autouncle", "value": "cm-6bb52590daf6d1b19108ec93" }] },
      "body": { "name": "Golf VIII", "ids": [{ "scheme": "autouncle", "value": "mg-40c5d8de40bb48ae60fc0a6c" }], "fromYear": 2019 },
      "drivetrain": { "name": "1.5 TSI (130 Hp)", "ids": [{ "scheme": "autouncle", "value": "dv-947a3199394a5a4b41cb2869" }] }
    },
    "specification": {
      "powertrain": { "energy": ["petrol"], "engine": { "displacementCc": 1500 }, "powerKw": 96, "powerHp": 130,
                      "transmission": { "type": "manual" }, "traction": "2wd" }
    },
    "vehicle": {
      "registration": { "country": "DK", "modelYear": 2021 },
      "odometer": { "km": 45000 }
    }
  },
  "identification": {
    "status": "identified",
    "level": "drivetrain",
    "catalogue_version": "5.6.9:NEW",
    "fields": {
      "/identity/brand": { "basis": "catalogue", "source": "catalogue_derived", "status": "derived" },
      "/identity/drivetrain": { "basis": "observed", "source": "catalogue_id", "status": "supplied" },
      "/specification/powertrain/powerHp": { "basis": "catalogue", "source": "catalogue_derived", "status": "derived" },
      "/vehicle/odometer": { "basis": "observed", "source": "provided", "status": "supplied" },
      "/vehicle/registration/modelYear": { "basis": "observed", "source": "provided", "status": "supplied" }
    }
  }
}

The example's fields are shortened.

  • Identity. identity.brand and identity.model are always there; identity.body (AutoUncle's generation, which includes the body), identity.drivetrain and equipment.trim (the equipment variant) are present only when they were identified. Each carries its catalogue ID in ids (scheme autouncle) and its name. Store the IDs and send them back next time. A level that several catalogue records fit is left out of identity and listed in identification.candidates, and identification.status is ambiguous; the valuation still runs on the levels that are known, and a warning such as drivetrain_ambiguous tells you to pin the level.
  • Specification. With an identified drivetrain, the catalogue's values; a value you sent that contradicts it has status conflict in identification.fields, with yours in supplied.
  • Provenance. identification.fields, keyed by JSON Pointer into vehicle, says, per value, how it was established: source (catalogue_id, catalogue_derived, catalogue_match, provided, registry, text_parser, ai_text, ai_vision, imputed or default), basis (observed, extracted, catalogue or assumed; see field provenance basis) and status. A mileage baseline or other default has status assumed.

The matched model can be a catalogue alias of the model you named. For example, make: "Volkswagen", model: "Golf", model_year: 2020 may identify the model Golf VII (cm-88dbede1978bc412872a6e1c) rather than Golf (cm-6bb52590daf6d1b19108ec93). Both are valid catalogue IDs.

precision.identity_level names the most specific level that was identified. You can post the returned vehicle back unchanged in a later request, for example to value the same car again with a new mileage.

See the valuation result reference for every field.