---
title: "Recalls by YMM"
description: "Look up safety recalls by year, make, and model — no VIN needed."
canonical_url: "https://docs.carsxe.com/docs/products/recalls-ymm"
markdown_url: "https://docs.carsxe.com/docs/products/recalls-ymm.md"
last_updated: "1980-01-01"
---

# Recalls by YMM
URL: /docs/products/recalls-ymm
LLM index: /llms.txt
Description: Look up safety recalls by year, make, and model — no VIN needed.

Retrieve open safety recalls for any vehicle by year, make, and model. No VIN required — ideal for checking an entire model line, powering fleet dashboards, or enriching vehicle listings when individual VINs aren't available.

## Parameters

| Parameter | Required | Description |
|---|---|---|
| `year` | Yes | The 4-digit model year (e.g. `2019`) |
| `make` | Yes | The vehicle manufacturer name (e.g. `Toyota`). Case-insensitive. |
| `model` | Yes | The vehicle model name (e.g. `Camry`). Case-insensitive. |
| `key` | Yes | Your CarsXE API key |

## Example

<CodeGroup title="Check recalls by YMM" tag="GET" label="/v1/recalls-ymm">

```bash
curl -G https://api.carsxe.com/v1/recalls-ymm \
  -d key=YOUR_API_KEY \
  -d year=2026 \
  -d make=toyota \
  -d model=corolla
```

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

const carsxe = new CarsXE("YOUR_API_KEY");

try {
  const recalls = await carsxe.recallsYmm({
    year: "2026",
    make: "toyota",
    model: "corolla",
  });
  console.log(recalls);
} catch (error) {
  console.error(error);
}
```

```python
import asyncio
from carsxe_api import CarsXE

carsxe = CarsXE("YOUR_API_KEY")

try:
    recalls = asyncio.run(carsxe.recalls_ymm({
        "year": "2026",
        "make": "toyota",
        "model": "corolla",
    }))
    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");

try {
    $recalls = $carsxe->recallsYmm([
        'year'  => '2026',
        'make'  => 'toyota',
        'model' => 'corolla',
    ]);
    print_r($recalls);
} catch (Exception $error) {
    echo "Error: " . $error->getMessage();
}
```

```ruby
require "carsxe"

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

begin
  recalls = carsxe.recalls_ymm(
    "year"  => "2026",
    "make"  => "toyota",
    "model" => "corolla"
  )
  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")
	recalls := client.RecallsYmm(map[string]string{
		"year":  "2026",
		"make":  "toyota",
		"model": "corolla",
	})
	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("year", "2026");
        params.put("make", "toyota");
        params.put("model", "corolla");

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

```swift
import carsxe

let carsxe = CarsXE(apiKey: "YOUR_API_KEY")

do {
    let recalls = try carsxe.recallsYmm([
        "year": "2026",
        "make": "toyota",
        "model": "corolla",
    ])
    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");

        try
        {
            var recalls = await carsxe.RecallsYmm(new Dictionary<string, string>
            {
                { "year",  "2026" },
                { "make",  "toyota" },
                { "model", "corolla" },
            });
            Console.WriteLine(recalls);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
```

```bash {{ title: "Response" }}
{
  "success": true,
  "input": {
    "year": "2026",
    "make": "TOYOTA",
    "model": "COROLLA"
  },
  "data": {
    "make": "TOYOTA",
    "model": "COROLLA",
    "model_year": "2026",
    "recall_count": 1,
    "has_recalls": true,
    "recalls": [
      {
        "nhtsa_campaign_number": "26V110000",
        "manufacturer": "Toyota Motor Engineering & Manufacturing",
        "park_it": false,
        "park_outside": false,
        "over_the_air_update": false,
        "report_received_date": "25/02/2026",
        "component": "EXTERIOR LIGHTING:HEADLIGHTS",
        "summary": "Toyota Motor Engineering & Manufacturing (Toyota) is recalling certain 2026 Corolla vehicles. The front headlights may have missing headlight aim markings.",
        "consequence": "Incorrectly aimed headlights can reduce driver visibility or create a glare for oncoming traffic, increasing the risk of a crash.",
        "remedy": "Dealers will replace both front headlight assemblies, free of charge. Owner notification letters were mailed April 20, 2026.",
        "notes": null
      }
    ]
  },
  "timestamp": "2026-06-29T12:00:45.786Z"
}
```

</CodeGroup>

## Response

### Top-level shape

<RecallsYmmTopLevelShape />

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/recalls/recalls-by-year-make-model).

### data

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

<details>
<summary>**Vehicle identity** — year, make, and model from the request</summary>

<Properties>
  <Property name="make" type="string">
    The vehicle manufacturer name, normalised to uppercase. Example: `"TOYOTA"`, `"FORD"`.
  </Property>
  <Property name="model" type="string">
    The vehicle model name, normalised to uppercase. Example: `"COROLLA"`, `"F-150"`.
  </Property>
  <Property name="model_year" type="string">
    The 4-digit model year. Example: `"2026"`.
  </Property>
</Properties>

</details>

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

<Properties>
  <Property name="has_recalls" type="boolean">
    `true` if at least one recall was found for this year, make, and model, `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 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, manufacturer, and report date</summary>

<Properties>
  <Property name="nhtsa_campaign_number" type="string">
    The NHTSA campaign number uniquely identifying this recall. Example: `"26V110000"`, `"19V312000"`.
  </Property>
  <Property name="manufacturer" type="string">
    The full legal name of the manufacturer issuing the recall. Example: `"Toyota Motor Engineering & Manufacturing"`.
  </Property>
  <Property name="report_received_date" type="string">
    The date NHTSA received the recall report, in `MM/DD/YYYY` format. Example: `"25/02/2026"`.
  </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 affected by the recall. Example: `"EXTERIOR LIGHTING:HEADLIGHTS"`, `"ELECTRICAL SYSTEM"`.
  </Property>
  <Property name="summary" type="string">
    A detailed description of the defect or non-compliance that prompted the recall.
  </Property>
  <Property name="consequence" type="string">
    The safety risk to vehicle occupants or others if the defect is not corrected.
  </Property>
  <Property name="notes" type="string | null">
    Additional notes from the manufacturer or NHTSA, such as owner notification timelines. `null` if none.
  </Property>
</Properties>

</details>

<details>
<summary>**Remedy** — fix details and urgency flags</summary>

<Properties>
  <Property name="remedy" type="string">
    The corrective action the manufacturer will take, including whether it is free of charge.
  </Property>
  <Property name="park_it" type="boolean">
    `true` if NHTSA advises parking the vehicle until the remedy is completed.
  </Property>
  <Property name="park_outside" type="boolean">
    `true` if NHTSA advises parking the vehicle outside and away from structures until the remedy is completed.
  </Property>
  <Property name="over_the_air_update" type="boolean">
    `true` if the remedy can be delivered via an over-the-air software update.
  </Property>
</Properties>

</details>

## Errors

| Status | When it happens |
|---|---|
| `400` | Missing or invalid `year`, `make`, or `model` |
| `401` | Missing or invalid API key |
| `404` | Feature not enabled on your plan |
| `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).
