FDA recall report (drug, food, device)
POST /v1/recall-reportName a drug, food, ingredient, brand or medical device and get one cited FDA recall report: every matching enforcement record across the drug, food and device feeds (firm, class I/II/III, status, reason, distribution, date), organized and explained, with a downloadable records appendix. Live openFDA data, not medical advice. USDC (x402/MPP) or card (Stripe). Not cached.
Input
| Field | Type | Description |
|---|---|---|
query * | string | A drug, food, ingredient, brand or medical device to search FDA recalls for, e.g. "losartan", "peanut butter", "insulin pump". |
scope | string | Which FDA enforcement feeds to search (default all). |
Example output
{
"report": "# FDA Recall Report: losartan\n\n**7 records** across 3 FDA enforcement feeds · 2 ongoing\n\n## Snapshot\n...\n\n## Sources\n[1] FDA drug recalls matching \"losartan\" - openFDA enforcement - https://api.fda.gov/drug/enforcement.json?...",
"query": "losartan",
"sources": [
{
"n": 1,
"title": "FDA drug recalls matching \"losartan\" - openFDA enforcement",
"url": "https://api.fda.gov/drug/enforcement.json?search=product_description%3A%22losartan%22&limit=20"
}
],
"tables": [
{
"name": "recalls",
"label": "FDA recall records",
"columns": [
"Feed",
"Initiated",
"Class",
"Status",
"Firm",
"Product",
"Reason",
"Distribution",
"Recall number"
],
"rows": [
[
"drug",
"2019-11-08",
"Class II",
"Terminated",
"Torrent Pharmaceuticals",
"Losartan Potassium Tablets",
"Presence of an impurity",
"Nationwide",
"D-123-2020"
]
]
}
],
"meta": {
"tier": "recall-report",
"query": "losartan",
"scope": "all",
"records": 7,
"ongoing": 2,
"sources_cited": 3,
"synthesis_model": "anthropic/claude-opus-5"
}
}
Try it - see the 402 challenge (free)
curl -i -X POST https://agent402.tools/v1/recall-report \
-H "Content-Type: application/json" \
-d '{"query":"losartan"}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/v1/recall-report", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"query": "losartan"
}),
});
Related tools
Chat completions - nano tier
POST /v1/nano/chat/completionsOpenAI-compatible chat completions, nano tier: gpt-4.1-nano, gpt-5-nano, gemini flash-lite, small llama/ministral/qwen, …
try in playground →Chat completions - auto tier (eval-ranked routing)
POST /v1/auto/chat/completionsOpenAI-compatible chat completions with server-side model choice: omit "model" (or send "auto") and the gateway routes t…
try in playground →Grounded chat (web search, OpenAI-compatible)
POST /v1/grounded/chat/completionsOpenAI-compatible chat completions GROUNDED in a live web search on every call: the gateway runs an Exa search (up to 5 …
try in playground →