Surface active recalls, safety notices, and health advisories for a product. Closient aggregates recalls from FDA (food, drug, device), FSIS (meat/poultry), CPSC (consumer products), and Health Canada, keyed by GTIN with optional batch/lot narrowing.Documentation Index
Fetch the complete documentation index at: https://docs.closient.com/llms.txt
Use this file to discover all available pages before exploring further.
When to use
- User scans a product and asks “is this safe?”
- Before recommending a product in any other skill (
find-alternative,plan-shopping-trip, etc.), do a recall check first. - Agent monitoring a user’s recently-purchased items.
- When the scanned packaging encodes a batch/lot in GS1 AI 10 (a GS1
Digital Link of the form
/01/{gtin}/10/{batch}), use the batch-specific endpoint so the answer is “is this lot under recall?” rather than “are any batches of this GTIN recalled?”.
Endpoints
GTIN-level lookup
status=ONGOING to
show live notices.
Batch/lot lookup (AI 10)
lot_codes field matches the supplied
batch. Matching is case-insensitive and supports four patterns:
- Exact:
batchequals an entry inlot_codes(legacy strings, free-text token, orexactsarray in the structured form). - Range:
lot_codesincludes a numeric or alphanumeric range like"lots 20261001 through 20261015"(free-text) or{"ranges": [["20261001", "20261015"]]}(structured). The scanned batch must be the same length as the endpoints and fall inside the inclusive range. - Wildcard:
lot_codesincludes a trailing-*pattern like"LOT-2026-*"or{"wildcards": ["LOT-2026-*"]}. Any batch whose case-insensitive prefix matches. - All-lots: a recall with an empty
lot_codesfield did not narrow to a subset of batches — every lot is considered affected and the recall is always returned.
Typical consumer scan flow
- Consumer scans a packaging QR encoding a GS1 Digital Link with
AI 10:
- Agent extracts
gtin=00012345678905,batch=BATCH-2026-042. - Agent calls:
- If the response is empty, the specific lot is not under recall. Surface that explicitly (“No active recalls for lot BATCH-2026-042”) rather than silently proceeding.
- If the response contains recalls, surface them prominently — Class I first.
/01/{gtin}/10/{batch} in a browser hit the resolver,
which routes the consumer through the recall interstitial when an open
recall affects that specific batch (the same lot-matching logic powers
both surfaces). The API endpoint above is for agents that want the
structured response without the redirect dance.
Response
Array of recall records. Each has:id— Closient short-UUIDtitle— short human descriptionstatus— ONGOING / COMPLETED / TERMINATED / UNKNOWNseverity— CLASS_I (most serious) / CLASS_II / CLASS_IIIsource_system— issuing agencydescription— free-text narrativehazard— what harm exposure could causeremedy— what consumers should dopublic_url— authoritative regulator URLcompany_name— recalling firmrecall_date— when the regulator initiated the recalljurisdictions— ISO 3166-1 alpha-2 country codescreated— when Closient first ingested the record
Severity at a glance
- CLASS_I — reasonable probability of serious adverse health consequences or death. Surface prominently.
- CLASS_II — temporary or medically reversible health effects.
- CLASS_III — unlikely to cause adverse health effects; usually labeling violations.
Empty array
An empty response means no active recall for this GTIN (or, for the batch endpoint, no recall affecting that specific lot). Always worth saying explicitly (“No active recalls”) rather than silently proceeding.Related skills
resolve-gtin— get the product detail to display alongside the recallfind-alternative— if recalled, recommend a substitute