> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneshotagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vehicle Recalls

> List the safety recalls issued for a vehicle make, model and model year.

List the safety recalls issued for a vehicle by make, model and model year: the campaign number, the date it was reported, the affected component, what is wrong, the risk, the remedy and whether the owner is told to park the vehicle. Use it to check a used vehicle before a purchase, a loan, a claim or a fleet decision. Covers vehicles sold in the United States. These are the recalls issued for the model. The result does not say whether a particular vehicle has had the repair done. To start from a vehicle identification number, decode it first with Vehicle Identification, which returns the make, model and year. `total` is 0 when the model has no recalls.

## Authentication

Requires x402 payment in the `payment-signature` header.

## Request Body

<ParamField body="make" type="string" required>
  The vehicle make, for example Honda. 2 to 40 characters. Letters, digits, spaces and hyphens only.
</ParamField>

<ParamField body="model" type="string" required>
  The vehicle model, for example CR-V. 1 to 60 characters. Letters, digits, spaces, periods and hyphens only.
</ParamField>

<ParamField body="model_year" type="integer" required>
  The model year, from 1950 to next year. At least 1950. Model year cannot be later than next year.
</ParamField>

<ParamField body="limit" type="integer">
  The most recalls to return. Default 25. From 1 to 50. Defaults to `25`.
</ParamField>

<Snippet file="audit-context-params.mdx" />

## Response (200 OK)

Top-level envelope: `success` (boolean) and `data` (object). All fields below are nested under `data`.

<ResponseField name="data.request_id" type="string">
  Durable job ID for audit and lookup
</ResponseField>

<ResponseField name="data.status" type="string">
  Job status: `completed`
</ResponseField>

<ResponseField name="data.tool" type="string">
  Always `vehicle_recalls`
</ResponseField>

<ResponseField name="data.result" type="object">
  The answer, described under Result below
</ResponseField>

<ResponseField name="data.evidence" type="object">
  Where the answer came from and when
</ResponseField>

<ResponseField name="data.evidence.source" type="string">
  The public body the data comes from. Always `US National Highway Traffic Safety Administration`.
</ResponseField>

<ResponseField name="data.evidence.source_kind" type="string">
  `public` when the data comes from a public body, `commercial` otherwise
</ResponseField>

<ResponseField name="data.evidence.retrieved_at" type="string">
  When the lookup was made, as an ISO 8601 UTC time
</ResponseField>

<ResponseField name="data.evidence.as_of" type="string">
  When the source says the fact was last updated, or `null` when the source gives no date
</ResponseField>

## Result

Nested under `data.result`.

<ResponseField name="data.result.make" type="string">
  Make.
</ResponseField>

<ResponseField name="data.result.model" type="string">
  Model.
</ResponseField>

<ResponseField name="data.result.model_year" type="number">
  Model year.
</ResponseField>

<ResponseField name="data.result.total" type="number">
  How many recalls were issued for the model, including any beyond `limit`.
</ResponseField>

<ResponseField name="data.result.recalls" type="object[]">
  Recalls.
</ResponseField>

<ResponseField name="data.result.recalls[].campaign_number" type="string">
  The agency campaign number. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].reported_on" type="string">
  The date the manufacturer reported the recall, YYYY-MM-DD. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].component" type="string">
  Component. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].summary" type="string">
  What is wrong. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].consequence" type="string">
  The risk to the driver. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].remedy" type="string">
  What the manufacturer will do about it. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].notes" type="string">
  Notes. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].manufacturer" type="string">
  Manufacturer. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].park_it" type="boolean">
  True when owners are told not to drive the vehicle.
</ResponseField>

<ResponseField name="data.result.recalls[].park_outside" type="boolean">
  True when owners are told to park the vehicle outside.
</ResponseField>

<ResponseField name="data.result.recalls[].over_the_air_fix" type="boolean">
  True when the remedy is a software update sent to the vehicle.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://win.oneshotagent.com/v1/tools/lookup/vehicle-recalls \
    -H "Content-Type: application/json" \
    -H "payment-signature: <base64 x402 payment>" \
    -d '{
      "make": "Honda",
      "model": "CR-V",
      "model_year": 2019,
      "limit": 1
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://win.oneshotagent.com/v1/tools/lookup/vehicle-recalls", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "payment-signature": paymentProof,
    },
    body: JSON.stringify({
      "make": "Honda",
      "model": "CR-V",
      "model_year": 2019,
      "limit": 1
    }),
  });
  ```

  ```typescript SDK theme={null}
  const result = await agent.tool('lookup/vehicle-recalls', {
    make: 'Honda',
    model: 'CR-V',
    model_year: 2019,
    limit: 1
  });
  console.log(result.data.result);
  console.log(result.data.evidence);
  ```
</RequestExample>

<ResponseExample>
  ```json Response (200) theme={null}
  {
    "success": true,
    "data": {
      "request_id": "uuid",
      "receipt_id": "rcpt_...",
      "status": "completed",
      "tool": "vehicle_recalls",
      "result": {
        "make": "Honda",
        "model": "CR-V",
        "model_year": 2019,
        "total": 8,
        "recalls": [
          {
            "campaign_number": "19V865000",
            "reported_on": "2019-12-05",
            "component": "STRUCTURE:FRAME AND MEMBERS",
            "summary": "Honda (American Honda Motor Co.) is recalling certain 2019-2020 CR-V vehicles. The rear subframe bolts were improperly manufactured and may loosen, allowing the rear subframe to separate.",
            "consequence": "A separated rear subframe reduces vehicle handling and can suddenly disable the vehicle, increasing the risk of a crash.",
            "remedy": "Honda will notify owners, and dealers will inspect the rear subframe bolts and retorque them or replace them, as necessary, free of charge.",
            "notes": "Owners may also contact the National Highway Traffic Safety Administration Vehicle Safety Hotline at 1-888-327-4236.",
            "manufacturer": "Honda (American Honda Motor Co.)",
            "park_it": false,
            "park_outside": false,
            "over_the_air_fix": false
          }
        ]
      },
      "evidence": {
        "source": "US National Highway Traffic Safety Administration",
        "source_kind": "public",
        "retrieved_at": "2026-01-15T12:00:00.000Z",
        "as_of": null
      }
    }
  }
  ```
</ResponseExample>

<Info>Price: \$0.005 per lookup. See [Pricing](/pricing) for every tool.</Info>

## Notes

* Results return inline. The finished job stays available at `/v1/requests/{request_id}`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.