POST /api/nhtsa/vins/batch
Price: 10 credits
Decode up to 50 VINs in one call with the NHTSA vPIC decoder.
Use it instead of calling nhtsa/vins in a loop when you hold a list of VINs. Rows keep the input order; a VIN that decodes to no make, model or vehicle type is left out, so match rows back by `vin`. `error_code` 0 means a clean decode.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)vins array required — VINs to decode in one call: full 17-character VINs, or partial with * in unknown positions (examples: ["1HGCM82633A004352","JH4KA7561PC008269"]; minItems: 1; maxItems: 50)model_year integer nullable — Model year applied to every VIN, which helps decode partial and pre-1980 VINs (examples: 2003; min: 1900; max: 2100)@type string (default: "NhtsaVin")vin string requiredmodel_year integer nullableabs string nullableactive_safety_sys_note string nullableadaptive_cruise_control string nullableadaptive_driving_beam string nullableadaptive_headlights string nullableadditional_error_text string nullableair_bag_loc_curtain string nullableair_bag_loc_front string nullableair_bag_loc_knee string nullableair_bag_loc_seat_cushion string nullableair_bag_loc_side string nullableauto_reverse_system string nullableautomatic_pedestrian_alerting_sound string nullableaxle_configuration string nullableaxles string nullablebase_price string nullablebattery_a string nullablebattery_a_to string nullablebattery_cells string nullablebattery_info string nullablebattery_kwh string nullablebattery_kwh_to string nullablebattery_modules string nullablebattery_packs string nullablebattery_type string nullablebattery_v string nullablebattery_v_to string nullablebed_length_in string nullablebed_type string nullableblind_spot_intervention string nullableblind_spot_mon string nullablebody_cab_type string nullablebody_class string nullablebrake_system_desc string nullablebrake_system_type string nullablebus_floor_config_type string nullablebus_length string nullablebus_type string nullablecan_aacn string nullablecib string nullablecash_for_clunkers string nullablecharger_level string nullablecharger_power_kw string nullablecombined_braking_system string nullablecooling_type string nullablecurb_weight_lb string nullablecustom_motorcycle_type string nullabledaytime_running_light string nullabledestination_market string nullabledisplacement_cc string nullabledisplacement_ci string nullabledisplacement_l string nullabledoors string nullabledrive_type string nullabledriver_assist string nullabledynamic_brake_support string nullableedr string nullableesc string nullableev_drive_unit string nullableelectrification_level string nullableengine_configuration string nullableengine_cycles string nullableengine_cylinders string nullableengine_hp string nullableengine_hp_to string nullableengine_kw string nullableengine_manufacturer string nullableengine_model string nullableentertainment_system string nullableerror_code string nullableerror_text string nullableforward_collision_warning string nullablefuel_injection_type string nullablefuel_tank_material string nullablefuel_tank_type string nullablefuel_type_primary string nullablefuel_type_secondary string nullablegcwr string nullablegcwr_to string nullablegvwr string nullablegvwr_to string nullablekeyless_ignition string nullablelane_centering_assistance string nullablelane_departure_warning string nullablelane_keep_system string nullablelower_beam_headlamp_light_source string nullablemake string nullablemake_id string nullablemanufacturer string nullablemanufacturer_id string nullablemodel string nullablemodel_id string nullablemotorcycle_chassis_type string nullablemotorcycle_suspension_type string nullablencsa_body_type string nullablencsa_make string nullablencsa_map_exc_approved_by string nullablencsa_map_exc_approved_on string nullablencsa_mapping_exception string nullablencsa_model string nullablencsa_note string nullablenon_land_use string nullablenote string nullableother_bus_info string nullableother_engine_info string nullableother_motorcycle_info string nullableother_restraint_system_info string nullableother_trailer_info string nullablepark_assist string nullablepedestrian_automatic_emergency_braking string nullableplant_city string nullableplant_company_name string nullableplant_country string nullableplant_state string nullablepossible_values string nullablepretensioner string nullablerear_automatic_emergency_braking string nullablerear_cross_traffic_alert string nullablerear_visibility_system string nullablesae_automation_level string nullablesae_automation_level_to string nullableseat_belts_all string nullableseat_rows string nullableseats string nullablesemiautomatic_headlamp_beam_switching string nullableseries string nullableseries2 string nullablesteering_location string nullablesuggested_vin string nullabletpms string nullabletop_speed_mph string nullabletrack_width string nullabletraction_control string nullabletrailer_body_type string nullabletrailer_length string nullabletrailer_type string nullabletransmission_speeds string nullabletransmission_style string nullabletrim string nullabletrim2 string nullableturbo string nullablevalve_train_design string nullablevehicle_descriptor string nullablevehicle_type string nullablewheel_base_long string nullablewheel_base_short string nullablewheel_base_type string nullablewheel_size_front string nullablewheel_size_rear string nullablewheelie_mitigation string nullablewheels string nullablewindows string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.