---
title: "Recalls"
description: "Check for open safety recalls associated with any VIN."
canonical_url: "https://docs.carsxe.com/docs/products/recalls"
markdown_url: "https://docs.carsxe.com/docs/products/recalls.md"
last_updated: "1980-01-01"
---

# Recalls
URL: /docs/products/recalls
LLM index: /llms.txt
Description: Check for open safety recalls associated with any VIN.

Look up all open vehicle safety recalls for a vehicle by VIN. The response tells you how many recalls exist, whether a remedy is available, and the full detail of each campaign — component, risk, and fix instructions.

## Parameters

| Parameter | Required | Description |
|---|---|---|
| `vin` | Yes | The 17-character vehicle identification number |
| `key` | Yes | Your CarsXE API key |

## Example

<CodeGroup title="Check for recalls" tag="GET" label="/v1/recalls">

```bash
curl -G https://api.carsxe.com/v1/recalls \
  -d key=YOUR_API_KEY \
  -d vin=1C4JJXR64PW696340
```

```js
import { CarsXE } from "carsxe-api";

const carsxe = new CarsXE("YOUR_API_KEY");
const vin = "1C4JJXR64PW696340";

try {
  const recalls = await carsxe.recalls({ vin });
  console.log(recalls);
} catch (error) {
  console.error(error);
}
```

```python
import asyncio
from carsxe_api import CarsXE

carsxe = CarsXE("YOUR_API_KEY")
vin = "1C4JJXR64PW696340"

try:
    recalls = asyncio.run(carsxe.recalls({"vin": vin}))
    print(recalls)
except Exception as e:
    print(f"Error: {e}")
```

```php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use CarsxeDeveloper\Carsxe\Carsxe;

$carsxe = new Carsxe("YOUR_API_KEY");
$vin = "1C4JJXR64PW696340";

try {
    $recalls = $carsxe->recalls(["vin" => $vin]);
    print_r($recalls);
} catch (Exception $error) {
    echo "Error: " . $error->getMessage();
}
```

```ruby
require "carsxe"

carsxe = Carsxe::CarsXE.new(api_key: "YOUR_API_KEY")
vin = "1C4JJXR64PW696340"

begin
  recalls = carsxe.recalls("vin" => vin)
  puts recalls
rescue StandardError => error
  puts "Error: #{error.message}"
end
```

```go
package main

import (
	"fmt"
	"github.com/carsxe/carsxe-go-package"
)

func main() {
	client := carsxe.New("YOUR_API_KEY")
	vin := "1C4JJXR64PW696340"
	recalls := client.Recalls(map[string]string{"vin": vin})
	fmt.Println(recalls)
}
```

```java
import io.github.carsxe.CarsXE;
import java.util.Map;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        CarsXE carsxe = new CarsXE("YOUR_API_KEY");
        Map<String, String> params = new HashMap<>();
        params.put("vin", "1C4JJXR64PW696340");

        try {
            Map<String, Object> recalls = carsxe.recalls(params);
            System.out.println(recalls);
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }
    }
}
```

```swift
import carsxe

let carsxe = CarsXE(apiKey: "YOUR_API_KEY")
let vin = "1C4JJXR64PW696340"

do {
    let recalls = try carsxe.recalls(["vin": vin])
    print(recalls)
} catch {
    print("Error: \(error)")
}
```

```csharp
using carsxe;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        CarsXE carsxe = new CarsXE("YOUR_API_KEY");
        string vin = "1C4JJXR64PW696340";

        try
        {
            var recalls = await carsxe.Recalls(new Dictionary<string, string> { { "vin", vin } });
            Console.WriteLine(recalls);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
```

```bash {{ title: "Response" }}
{
  "success": true,
  "input": { "vin": "1C4JJXR64PW696340" },
  "data": {
    "uuid": "d1269d6b-54a2-4bf3-8119-1c8fdb4f0563",
    "vin": "1C4JJXR64PW696340",
    "manufacturer": "FCA US LLC",
    "model_year": "2023",
    "make": "JEEP",
    "model": "Wrangler",
    "has_recalls": true,
    "recall_count": 1,
    "recalls": [
      {
        "nhtsa_id": "24V720",
        "manufacturer_id": "95B",
        "recall_campaign_type": "NHTSA",
        "recall_name": "2020-2024 JL & 2022-2024 WL PHEV High Voltage Battery",
        "recall_date": "2024-09-27",
        "expiration_date": null,
        "component": "",
        "recall_description": "2020-2024 JL & 2022-2024 WL PHEV High Voltage Battery",
        "risk_description": "In rare circumstances, a battery pack may contain cells with separator damage...",
        "remedy_available": null,
        "recall_remedy": "FCA US will conduct a voluntary safety recall on all affected vehicles...",
        "parts_available": null,
        "labor_hours_min": null,
        "labor_hours_max": null,
        "stop_sale": null,
        "dont_drive": null,
        "recall_status": "Incomplete"
      }
    ]
  },
  "timestamp": "2026-06-19T00:00:00.000Z"
}
```

</CodeGroup>

## Response

### Top-level shape

<RecallsTopLevelShape />

Click `data` or `recalls` to expand them and see sample values. For the full interactive reference, try it live in the [API Reference](/api-reference).

### data

All vehicle-level fields and the recall list are nested under `data`.

<details>
<summary>**Vehicle identity** — make, model, year decoded from the VIN</summary>

<Properties>
  <Property name="uuid" type="string">
    Unique identifier for this recall report record. Example: `"d1269d6b-54a2-4bf3-8119-1c8fdb4f0563"`.
  </Property>
  <Property name="vin" type="string">
    The VIN used to look up this record. Example: `"1C4JJXR64PW696340"`.
  </Property>
  <Property name="manufacturer" type="string">
    The legal manufacturer name as registered for recall reporting. May differ from the brand name consumers know. Example: `"FCA US LLC"`, `"TOYOTA MOTOR MFG DE BAJA CALIFORNIA S DE RL DE CV"`.
  </Property>
  <Property name="make" type="string">
    The vehicle brand. Example: `"JEEP"`, `"TOYOTA"`, `"FORD"`.
  </Property>
  <Property name="model" type="string">
    The model name. Example: `"Wrangler"`, `"Tacoma"`, `"F-150"`.
  </Property>
  <Property name="model_year" type="string">
    The 4-digit model year. Example: `"2023"`.
  </Property>
  <Property name="vehicle_type" type="string">
    Vehicle category when returned by the data source. Example: `"PASSENGER CAR"`, `"TRUCK"`.
  </Property>
</Properties>

</details>

<details>
<summary>**Recall summary** — whether recalls exist and how many</summary>

<Properties>
  <Property name="report_date" type="string">
    ISO 8601 date when this recall report was generated. Example: `"2024-09-27"`.
  </Property>
  <Property name="has_recalls" type="boolean">
    `true` if at least one open recall was found for the VIN, `false` otherwise. Check this field before iterating `recalls`.
  </Property>
  <Property name="recall_count" type="number">
    Total number of recalls in the `recalls` array. Example: `1`, `3`.
  </Property>
</Properties>

</details>

### recalls[]

Each item in the `recalls` array represents one open recall campaign. All fields are optional — a `null` value means the data source did not provide that information for this campaign.

<details>
<summary>**Identification** — campaign ID, campaign type, and dates</summary>

<Properties>
  <Property name="nhtsa_id" type="string">
    The campaign identifier. Example: `"24V720"`. May be empty for voluntary service campaigns not filed as official safety campaigns.
  </Property>
  <Property name="manufacturer_id" type="string">
    The manufacturer's internal recall campaign number. Example: `"95B"`, `"25TC07-28342"`.
  </Property>
  <Property name="recall_campaign_type" type="string">
    The type of recall campaign. Example: `"NHTSA"` for federally mandated campaigns, `"VOLUNTARY/SERVICE"` for manufacturer-initiated campaigns.
  </Property>
  <Property name="recall_name" type="string">
    A short descriptive name for the recall campaign as filed. Example: `"2020-2024 JL & 2022-2024 WL PHEV High Voltage Battery"`.
  </Property>
  <Property name="recall_date" type="string">
    ISO 8601 date the recall was issued. Example: `"2024-09-27"`.
  </Property>
  <Property name="expiration_date" type="string | null">
    ISO 8601 date the recall expires, if applicable. `null` if the recall has no set expiration.
  </Property>
</Properties>

</details>

<details>
<summary>**Description** — what component is affected and what the risk is</summary>

<Properties>
  <Property name="component" type="string">
    The vehicle component or system covered by the recall. Example: `"FUEL SYSTEM, GASOLINE"`, `"AIR BAGS"`. May be empty for some voluntary campaigns.
  </Property>
  <Property name="recall_description" type="string">
    Full description of the defect or condition being recalled. This is the official text from the recall filing.
  </Property>
  <Property name="risk_description" type="string">
    Description of the safety risk posed by the defect — what could go wrong and what the consequences are. May be empty for non-safety campaigns.
  </Property>
</Properties>

</details>

<details>
<summary>**Remedy** — fix availability, parts, labor, and urgency flags</summary>

<Properties>
  <Property name="remedy_available" type="boolean | null">
    `true` if a fix is currently available at dealerships. `null` means the data source has not confirmed remedy availability.
  </Property>
  <Property name="recall_remedy" type="string | null">
    Description of the repair or corrective action. Example: `"FCA US will conduct a voluntary safety recall. Remedy is a software flash followed by a HV battery replacement if needed."`.
  </Property>
  <Property name="parts_available" type="boolean | null">
    `true` if repair parts are in stock at dealerships. `null` if unknown.
  </Property>
  <Property name="labor_hours_min" type="number | null">
    Minimum estimated labor hours for the repair. `null` if not provided.
  </Property>
  <Property name="labor_hours_max" type="number | null">
    Maximum estimated labor hours for the repair. `null` if not provided.
  </Property>
  <Property name="stop_sale" type="boolean | null">
    `true` if dealers are prohibited from selling affected vehicles until the recall is remedied. `null` if the data source did not specify.
  </Property>
  <Property name="dont_drive" type="boolean | null">
    `true` if owners are advised not to drive the vehicle until repaired. `null` if the data source did not specify.
  </Property>
  <Property name="recall_status" type="string">
    Current status of the recall campaign. Example: `"Incomplete"` (remedy not yet performed), `"INCOMPLETE"`, `"Complete"`.
  </Property>
</Properties>

</details>

## Errors

| Status | When it happens |
|---|---|
| `400` | Missing VIN, or VIN is not exactly 17 characters |
| `401` | Missing or invalid API key |
| `404` | No recall data found for this VIN |
| `429` | Usage limit exceeded |
| `500` | Internal server error |

See the [Errors guide](/docs/guides/errors) for general error handling guidance.

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
Docs-scoped sitemap: [/docs/sitemap.md](/docs/sitemap.md).
Well-known sitemap: [/.well-known/sitemap.md](/.well-known/sitemap.md).
