> ## 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.

# Product Recalls

> List the US recalls of consumer products, food, drugs or medical devices that match a product name, a manufacturer or, for consumer products, a recall title.

List the recalls of US products that match a product name, a manufacturer or, for consumer products, words from a recall title, optionally within a date range. `category` is required and picks the regulator: `consumer` is consumer products (appliances, tools, toys, furniture, ladders, bicycles, children's products and the like) from the US Consumer Product Safety Commission; `food`, `drug` and `device` are food, drugs and medical devices from the US Food and Drug Administration's enforcement reports, where `classification` (Class I, II or III) narrows the list. Vehicles are Vehicle Recalls. Each recall gives the recall number, the date it was announced and last published, what was recalled, the models and units, the hazard or reason, and the manufacturer or recalling firm. Consumer recalls also give the title, injuries, remedies, retailers and a link to the notice; food, drug and device recalls give the status, the class and where it was distributed. Newest first. Use it to check a product before a purchase, a resale, a claim or a listing. A recall says what was recalled, not whether a particular unit has been repaired. Give at least one of `product_name`, `title` and `manufacturer`; dates alone are refused. `title` is for consumer only. `total` is how many recalls matched, including any beyond `limit`, and is 0 when none did.

## Authentication

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

## Request Body

<ParamField body="category" type="string" required>
  Which products and which regulator: consumer (Consumer Product Safety Commission), or food, drug or device (Food and Drug Administration). Required. One of `consumer`, `food`, `drug`, `device`.
</ParamField>

<ParamField body="product_name" type="string">
  Words from the product name, for example attic stairway. For food, drug and device: letters, digits, spaces and . , ' & - only. 2 to 80 characters.
</ParamField>

<ParamField body="title" type="string">
  Words from the recall title, for example ladder. Category consumer only. 2 to 80 characters.
</ParamField>

<ParamField body="manufacturer" type="string">
  The manufacturer, importer, distributor or retailer, for example Louisville Ladder. For food, drug and device it is the recalling firm: letters, digits, spaces and . , ' & - only. 2 to 80 characters.
</ParamField>

<ParamField body="classification" type="string">
  Only recalls of this class. Categories food, drug and device only. One of `Class I`, `Class II`, `Class III`.
</ParamField>

<ParamField body="recalled_after" type="string">
  Only recalls announced on or after this date, YYYY-MM-DD. Needs a product name, title or manufacturer. Use YYYY-MM-DD.
</ParamField>

<ParamField body="recalled_before" type="string">
  Only recalls announced on or before this date, YYYY-MM-DD. Needs a product name, title or manufacturer. Use YYYY-MM-DD.
</ParamField>

<ParamField body="limit" type="integer">
  The most recalls to return. Default 10. From 1 to 25. Defaults to `10`.
</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 `product_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 this call's data comes from: US Consumer Product Safety Commission and US Food and Drug Administration, by the input.
</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.category" type="string">
  The category asked for.
</ResponseField>

<ResponseField name="data.result.total" type="number">
  How many recalls matched, including any beyond `limit`.
</ResponseField>

<ResponseField name="data.result.recalls" type="object[]">
  The matching recalls, newest first.
</ResponseField>

<ResponseField name="data.result.recalls[].recall_number" type="string">
  The regulator's recall number. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].status" type="string">
  Whether the recall is ongoing, completed or terminated. Null for consumer. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].classification" type="string">
  Class I, II or III, as the regulator classed the hazard. Null for consumer. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].distribution" type="string">
  Where the product was distributed. Null for consumer. `null` when the source gives no value.
</ResponseField>

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

<ResponseField name="data.result.recalls[].last_published_on" type="string">
  The date the notice was last published, YYYY-MM-DD. `null` when the source gives no value.
</ResponseField>

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

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

<ResponseField name="data.result.recalls[].url" type="string">
  The recall notice. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].products" type="object[]">
  The products recalled.
</ResponseField>

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

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

<ResponseField name="data.result.recalls[].products[].units" type="string">
  How many units, as the notice states it. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.recalls[].hazards" type="string[]">
  The hazards.
</ResponseField>

<ResponseField name="data.result.recalls[].remedies" type="string[]">
  What consumers are told to do.
</ResponseField>

<ResponseField name="data.result.recalls[].remedy_options" type="string[]">
  The kinds of remedy, such as Repair or Refund.
</ResponseField>

<ResponseField name="data.result.recalls[].injuries" type="string[]">
  The injuries reported.
</ResponseField>

<ResponseField name="data.result.recalls[].manufacturers" type="string[]">
  The manufacturers.
</ResponseField>

<ResponseField name="data.result.recalls[].retailers" type="string[]">
  Where it was sold.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://win.oneshotagent.com/v1/tools/lookup/product-recalls \
    -H "Content-Type: application/json" \
    -H "payment-signature: <base64 x402 payment>" \
    -d '{
      "category": "consumer",
      "product_name": "attic stairway",
      "limit": 10
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://win.oneshotagent.com/v1/tools/lookup/product-recalls", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "payment-signature": paymentProof,
    },
    body: JSON.stringify({
      "category": "consumer",
      "product_name": "attic stairway",
      "limit": 10
    }),
  });
  ```

  ```typescript SDK theme={null}
  const result = await agent.tool('lookup/product-recalls', {
    category: 'consumer',
    product_name: 'attic stairway',
    limit: 10
  });
  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": "product_recalls",
      "result": {
        "category": "consumer",
        "total": 1,
        "recalls": [
          {
            "recall_number": "26661",
            "status": null,
            "classification": null,
            "distribution": null,
            "recalled_on": "2026-08-06",
            "last_published_on": "2026-08-07",
            "title": "Louisville Ladder Recalls Over One Million Attic Stairway Ladders Due to Risk of Serious Injury or Death from Fall Hazard",
            "description": "This recall involves Louisville, Featherlite, Lite & Century Attic Stairway Ladders with gas struts only.",
            "url": "https://www.cpsc.gov/Recalls/2026/Louisville-Ladder-Recalls-Over-One-Million-Attic-Stairway-Ladders-Due-to-Risk-of-Serious-Injury-or-Death-from-Fall-Hazard",
            "products": [
              {
                "name": "Louisville, Featherlite, Lite & Century Attic Stairway Ladders with gas struts",
                "model": null,
                "units": "1,770,000 (In addition, about 13,054 were sold in Canada)"
              }
            ],
            "hazards": [
              "The bolts on the attic stairway ladders can break while in use, posing a risk of serious injury or death from fall hazard."
            ],
            "remedies": [
              "Consumers should stop using the recalled ladders immediately and register to receive a free repair kit."
            ],
            "remedy_options": [
              "Repair"
            ],
            "injuries": [
              "The firm has received 11 reports of a bolt breaking, including one report of an injury to the neck, head and back."
            ],
            "manufacturers": [],
            "retailers": [
              "The Home Depot, Lowe's, Do It Best, Orgill, and other retailers nationwide and on-line at Amazon.com"
            ]
          }
        ]
      },
      "evidence": {
        "source": "US Consumer Product Safety Commission",
        "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.