API and MCP reference
The RecallRadar API returns the same recalls as this site as structured JSON, with filters, cursors, history, and change feeds. Paid endpoints accept an API key from a Pro plan or a per-call x402 payment in USDC.
Endpoints
Base URL: https://recallradar.withglint.app
| Endpoint | Access | Price |
|---|---|---|
GET /v1/health | free | none |
GET /v1/freshness | free | none |
GET /v1/openapi.json | free | none |
GET /v1/agencies | free | none |
GET /v1/recalls | API key or x402 | Pro: one call or rows returned, whichever is higher (x402: $0.01 per call plus $0.0002 per row returned) |
GET /v1/recalls/{id} | API key or x402 | Pro: one call (x402: $0.01 per call); includes raw_payload and status_history |
GET /v1/diff?since= | API key or x402 | Pro: one call or rows returned, whichever is higher (x402: $0.02 per call) |
GET /v1/export?since=&cursor= | API key only | rows returned; NDJSON, up to 10,000 rows per page |
GET/POST /v1/watchlists | API key only | included in Pro |
GET/PATCH/DELETE /v1/watchlists/{id} | API key only | included in Pro |
POST /v1/keys/rotate | API key only | none |
Filters for /v1/recalls
| Parameter | Values |
|---|---|
brand | Brand, firm, or co-packer name, whole-word match. Repeatable. |
company | Company slug, as in /company/{slug}. |
q | Free text over product, reason, and firm. |
agency | fda_food, fda_drug, fda_device, fsis, cpsc |
class | I, II, III, PHA. Repeatable. Rows with no class (CPSC) are included. |
status | ongoing, terminated, completed, unknown |
active | true for ongoing, or unknown for agencies without status |
since, until | YYYY-MM-DD on published date |
cursor | The next_cursor from the previous page |
limit | 1 to 1000, default 100 |
Response shape
{
"data": [ { "id": "…", "slug": "…", "agency": "fda_food", "official_id": "H-1266-2026", "class": "II", "status": "ongoing",
"product_raw": "…", "firm_norm": "…", "reason": "…", "published_at": "2026-09-02", "source_url": "https://…", "url": "https://recallradar.withglint.app/recalls/…" } ],
"next_cursor": "…",
"meta": { "count": 100, "disclaimer": "…", "freshness_url": "https://recallradar.withglint.app/v1/freshness" }
}
Errors: { "error": { "code": "invalid_filter", "message": "…", "retryable": false } } with a matching HTTP status.
Authentication
API key
Subscribe on the pricing page to get a key, then send it as a bearer token:
curl -H "Authorization: Bearer rk_…" "https://recallradar.withglint.app/v1/recalls?brand=Publix&since=2026-08-01&class=I&limit=50"
x402 (pay per call)
Agents without an account can pay per call with USDC on Base Sepolia (testnet) using x402 version 2. A request with no key or payment returns HTTP 402. The PAYMENT-REQUIRED header (base64 JSON) lists what the route accepts. Retry with a PAYMENT-SIGNATURE header; on success the response carries PAYMENT-RESPONSE. Single-recall and diff calls use the exact scheme at a fixed price. Search uses upto: you authorize limit rows and are settled only for the rows returned. Nothing is charged for an error response.
curl -i "https://recallradar.withglint.app/v1/recalls/00e71dc849275243dea29eb5e0dbbcaa" HTTP/1.1 402 Payment Required PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Mi…
Change feed
curl -H "Authorization: Bearer rk_…" "https://recallradar.withglint.app/v1/diff?since=2026-09-12T06:00:00Z"
Returns created and updated recalls. Only a real change at the agency (a new payload or a status change) counts as updated.
MCP
RecallRadar is an MCP server at POST https://recallradar.withglint.app/mcp (Streamable HTTP, protocol version 2026-07-28, stateless). Authenticate with Authorization: Bearer rk_… or pay with x402.
| Tool or resource | What it does | Access |
|---|---|---|
search_recalls | Same filters as /v1/recalls | paid, per row |
get_recall | One recall with raw payload and status history | paid |
diff_since | New and updated recalls since a timestamp | paid, fixed price |
list_agencies | Agencies and what they cover | free |
recall://{id} | Resource form of get_recall | paid |
brief://{date} | A published daily brief | free |
curl -X POST https://recallradar.withglint.app/mcp -H "Content-Type: application/json" -H "Authorization: Bearer rk_…" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_recalls","arguments":{"brands":["Publix"],"limit":10}}}'
Free alternatives
Every recall has a public page on this site, and the daily brief is free as RSS and JSON Feed.
RecallRadar indexes public recall notices from the FDA, USDA FSIS, and CPSC. The official agency notice is the authoritative source. Always confirm details at the linked source before acting. Every row includes source_url, which is the authoritative record.