API Docs
Explorer Decode by VIN
LLM-ready context
Copies clean Markdown for pasting into an LLM.
Explorer Decode by VIN
Decode a VIN and return the vehicle payload plus minimal battery attributes. The response includes the most specific battery match available.
Use this endpoint when you want a single request that combines vehicle decode output with ARC Explorer battery attributes and returns a concise pack answer.
Authentication
Include X-API-Key on every request. Explorer usage is billed separately from VIN decode usage.
Idempotency
Include an Idempotency-Key with every request. Use a unique value for each logical request, and reuse the same value only when retrying that exact request. Use a new key when any input changes.
What to expect for response time
Explorer by VIN adds battery enrichment on top of decode. Active lookups typically return in 250–550ms—about 400ms on average. The first request after idle may take longer while the pipeline warms up.
Rate-limit headers
Successful Explorer responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
Built for decisive workflows
The endpoint returns concise battery results so pricing, compliance, and logistics workflows can start with confidence instead of manual triage.
Query Parameters
| Field | Type | Description |
|---|---|---|
| vin | string | Required. The 17-character VIN to validate, decode, and enrich with Explorer battery data. |
Example Variants
When one battery matches the decoded vehicle, the batteries array contains that pack.
Example Request
curl "https://api.autoresourceco.com/api/v1/explorer/vehicle/by-vin?vin=KMHC65LD4JU000001" \
-H "X-API-Key: your_api_key_here" \
-H "Idempotency-Key: explorer-vin-example-001"Response Example
{
"query": {
"mode": "vin",
"vin": "kmhc65ld4ju000001"
},
"vehicle": {
"VIN": "kmhc65ld4ju000001",
"Year": 2018,
"Make": "HYUNDAI",
"Model": "Ioniq",
"Trim": "Plug-in-Hybrid (PHEV)",
"ElectrificationLevel": "PHEV",
"decode_status": "decoded",
"decode_warnings": [],
"suggested_vin": null,
"possible_values": null,
"technical_details": {
"body_class": "Hatchback/Liftback/Notchback",
"vehicle_type": "PASSENGER CAR",
"drive_type": null,
"fuel_type_primary": "Electric",
"fuel_type_secondary": "Gasoline",
"series": null,
"ev_drive_unit": null,
"battery_type": "Lithium-Ion/Li-Ion",
"battery_energy_kwh_from": null,
"battery_energy_kwh_to": null,
"battery_voltage_from": "360",
"battery_voltage_to": null,
"battery_modules_per_pack": null,
"battery_cells_per_module": null,
"charger_level": null,
"charger_power_kw": "45",
"wheel_base_inches": "106.30",
"curb_weight_lbs": null,
"gvwr": "Class 1: 6,000 lb or less (2,722 kg or less)",
"track_width_inches": null,
"engine_configuration": null,
"engine_cylinders": "4",
"displacement_l": "1.6",
"transmission_style": null,
"air_bag_locations": null,
"plant_city": "ULSAN",
"plant_country": "SOUTH KOREA",
"plant_company_name": null
}
},
"batteries": [
{
"cathode_chemistry": "NMC",
"chemistry_group": "Lithium-Ion",
"dot_hazard_class": "Hazardous",
"energy_kwh": 8.9,
"weight_lbs": 258
}
],
"result_count": 1
}Response Fields
| Field | Type | Description |
|---|---|---|
| query | object | Normalized request context, including mode: vin and the validated VIN. |
| vehicle | object | Decoded vehicle payload in the same core shape as GET /api/v1/vin/decode. |
| batteries | object[] | Minimal battery objects with cathode_chemistry, chemistry_group, dot_hazard_class, energy_kwh, and weight_lbs. |
| batteries[].weight_lbs | number | null | Complete battery pack weight in pounds. Null when ARC does not have a usable canonical pack weight. |
| result_count | integer | Number of battery records returned in batteries. |
VIN Error Codes
Failed VINs use the same required four-digit codes in single-response detail.code and batch errors[].code. Use the code for program logic and the message for people.
| Code | Condition | Public Message | Response Behavior |
|---|---|---|---|
| 1001 | VIN is shorter than 17 characters | VIN must be exactly 17 characters (received {length}) | Rejected before decode; returned in detail.code or errors[].code. |
| 1004 | VIN checksum mismatch | VIN check digit (position 9) is invalid | Rejected before decode; returned in detail.code or errors[].code. |
| 1006 | VIN contains unsupported characters | VIN contains invalid characters (must be A-H, J-N, P, R-Z, 0-9; excludes I, O, Q) | Rejected before decode; returned in detail.code or errors[].code. |
| 1020 | VIN is missing or blank | VIN is required | Rejected before decode. |
| 1021 | VIN is longer than 17 characters | VIN must be exactly 17 characters (received {length}) | Rejected before decode. |
| 1022 | VIN contains whitespace | VIN cannot contain whitespace | Rejected before decode. |
| 1023 | VIN contains a URL | VIN cannot contain URLs | Rejected before decode. |
| 1024 | VIN contains a percent character | VIN cannot contain "%" characters | Rejected before decode. |
| 1092 | VIN decode failed | The VIN could not be decoded. | No successful vehicle result was produced. |
| 1093 | Vehicle data unavailable for the VIN | No vehicle data was returned for this VIN. | No successful vehicle result was produced. |
| 1094 | Vehicle decoding service could not complete the VIN | The vehicle decoding service could not complete this VIN. | No successful vehicle result was produced. |
| 1095 | Vehicle data response could not be processed | The vehicle data response could not be processed. | No successful vehicle result was produced. |
| 1096 | Decoded vehicle is missing model year, make, or model | Decoded vehicle is missing a valid model year | Explorer by-VIN only: the VIN decoded, but battery fitment could not be resolved. Returned with HTTP 422. The message names the missing field (model year, or make or model), and decode_warnings and suggested_vin carry any VIN checks that explain the gap. |