77trust / 100

Recalls

by FDA Drug Recalls in Other

x402 APIPassing, checked 4 h ago

FDA drug recall lookup — enforcement reports naming a drug, newest first, with recall class and its meaning, status, reason, product description, recalling firm, dates, distribution and quantity. Use to check whether a drug or lot has been recalled and why.

GET
https://fda-drugs.use.x402atlas.com/recalls
Price
$0.01
per call in USDC
Uptime
100%
last 30 days
Response time
451 ms
675 ms slowest 5%
Last check
Passed
4 h ago, next any minute now

Run a free test callHow to call it

Reliability

All checks passedSome failedAll failedNot checked

Status and outage history · Atom feed · Watch with other listings

How to call it

GET https://fda-drugs.use.x402atlas.com/recalls

Each call costs $0.01 in USDC on Polygon, paid with the request over x402.

Run a free test callOne unpaid request, the way an agent sends it. You see the payment challenge it gets back. Nothing is charged.

Example request

From the listing.

GET https://fda-drugs.use.x402atlas.com/recalls?drug=metformin&limit=3

Parameters

ParameterTypeRequiredDescription
drugstringYesBrand or generic name, or text from the product description; omitted runs the example
limitintegerNo Default: 10.
statusstringNo One of: all, ongoing, completed, terminated. Default: "all".

Example response

The provider's example. We can't check it without paying.

Example response, 84 lines
{
  "as_of": "2026-10-21T09:00:00Z",
  "caveat": "FDA enforcement reports; FDA does not update a recall's status after classification and this feed is not a source for public alerts. Not medical advice.",
  "count": 3,
  "drug": "metformin",
  "modified": true,
  "recalls": [
    {
      "brand_names": [
        "METFORMIN HYDROCHLORIDE"
      ],
      "classification": "Class II",
      "classification_meaning": "may cause temporary or medically reversible adverse health consequences",
      "distribution": "Nationwide in U.S.",
      "event_id": "96313",
      "generic_names": [
        "METFORMIN HYDROCHLORIDE"
      ],
      "initiated": "2025-02-25",
      "location": "Libertyville, IL, United States",
      "product_description": "METFORMIN HYDROCHLORIDE EXTENDED- RELEASE 500MG, 180 TABLETS, Packaged BY: A-S Medication Solutions, Libertyville, IL 60048 NDC 50090-1494-3.",
      "quantity": "411 180-count bottles",
      "reason": "Presence of Foreign Tablets/Capsules.",
      "recall_number": "D-0292-2025",
      "recalling_firm": "A-S Medication Solutions LLC",
      "reported": "2025-04-02",
      "status": "ongoing",
      "voluntary_mandated": "Voluntary: Firm initiated"
    },
    {
      "brand_names": [
        "METFORMIN ER 500 MG"
      ],
      "classification": "Class II",
      "classification_meaning": "may cause temporary or medically reversible adverse health consequences",
      "distribution": "Distributor in OH.",
      "event_id": "96082",
      "generic_names": [
        "METFORMIN ER 500 MG"
      ],
      "initiated": "2024-12-30",
      "location": "Chantilly, VA, United States",
      "product_description": "Metformin Hydrochloride Extended-Release Tablets, USP, 500 mg, 1000-count bottles, Rx Only, Manufactured by: Granules India Limited, Hyderabad- 500 081, India, Manufactured for: Quallent Pharmaceuticals Health LLC, Grand Cayman, Grand Cayman Islands, NDC 82009-117-10",
      "quantity": "6,804 bottles",
      "reason": "Presence of Foreign Tablets/Capsules: A Paracetamol 500 mg tablet was found in a 1000-count bottle of Metformin HCL ER Tablets USP, 500 mg.",
      "recall_number": "D-0192-2025",
      "recalling_firm": "Granules Pharmaceuticals Inc.",
      "reported": "2025-01-15",
      "status": "terminated",
      "terminated": "2026-01-15",
      "voluntary_mandated": "Voluntary: Firm initiated"
    },
    {
      "brand_names": [
        "JANUMET"
      ],
      "classification": "Class II",
      "classification_meaning": "may cause temporary or medically reversible adverse health consequences",
      "distribution": "Nationwide in the USA",
      "event_id": "89893",
      "generic_names": [
        "SITAGLIPTIN AND METFORMIN HYDROCHLORIDE"
      ],
      "initiated": "2022-03-31",
      "location": "Whitehouse Station, NJ, United States",
      "product_description": "Janumet (sitagliptin and metformin HCl) tablets, 50 mg/500 mg, 14-count bottle, packaged as 2 bottles per carton , Sample-Not For Sale, Rx Only, Manufactured for Merck Sharp & Dohme Corp., a subsidiary of Merck & Co., Inc. Whitehouse Station, NJ 08889, USA, by Patheon Puerto Rico, Inc. Manati, Puerto Rico, 00674  Bottle (NDC 0006-0575-02), Carton (NDC 0006-0575-03)",
      "quantity": "3600 cartons",
      "reason": "Presence of foreign substance: Presence of stainless steel particulates in tablets.",
      "recall_number": "D-0746-2022",
      "recalling_firm": "MERCK SHARP & DOHME CORP",
      "reported": "2022-04-13",
      "status": "terminated",
      "terminated": "2023-08-15",
      "voluntary_mandated": "Voluntary: Firm initiated"
    }
  ],
  "source": {
    "citation": "Data provided by the U.S. Food and Drug Administration (https://open.fda.gov). Normalized by x402 Atlas; not the agency's verbatim record.",
    "name": "openFDA (U.S. Food and Drug Administration)",
    "url": "https://open.fda.gov"
  },
  "status": "all",
  "total": 33
}

Call it from code

The curl command shows the payment challenge. The JavaScript and Python versions pay and call, and never pay more than $0.01.

curl: see the payment challenge
# bash or zsh: see the payment challenge. Nothing is charged.
curl -sS -g -i 'https://fda-drugs.use.x402atlas.com/recalls?drug=metformin&limit=3'

# x402 v2 sends the challenge base64-encoded in the PAYMENT-REQUIRED header (v1 sends it in the body).
# To read the header:
curl -sS -g -o /dev/null -D - 'https://fda-drugs.use.x402atlas.com/recalls?drug=metformin&limit=3' \
  | grep -i '^payment-required:' | cut -d' ' -f2 | tr -d '\r' | base64 --decode
JavaScript: pay and call
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

// Pays at most $0.01 per call.
const client = new x402Client().setSpendControls({ maxAmountPerPayment: "$0.01" });
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM_PRIVATE_KEY) });
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? ToolVet checks it first for $0.005. Pay for that from a separate
// client: this one is capped at $0.01 per payment. GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Ffda-drugs.use.x402atlas.com%2Frecalls
const res = await pay("https://fda-drugs.use.x402atlas.com/recalls?drug=metformin&limit=3");
console.log(res.status, await res.text());
Python: pay and call
# pip install "x402[requests,evm]"
import os
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

# Pays at most $0.01 per call.
client = x402ClientSync().set_spend_controls({"max_amount_per_payment": "$0.01"})
register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"])))

with x402_requests(client) as session:
    res = session.get("https://fda-drugs.use.x402atlas.com/recalls?drug=metformin&limit=3")
    print(res.status_code, res.text)

Security scan

No findings

We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
4 h agoPassed402441 ms$0.01
9 h agoPassed402501 ms$0.01
14 h agoPassed402394 ms$0.01
18 h agoPassed402461 ms$0.01
23 h agoPassed402487 ms$0.01
Show 5 older checks
27 h agoPassed402393 ms$0.01
32 h agoPassed402675 ms$0.01
36 h agoPassed402133 ms$0.01
40 h agoPassed402451 ms$0.01
44 h agoPassed402451 ms$0.01