Method·August 8, 2026 · 3 min read

There are two recall databases, not one

openFDA publishes two separate device recall datasets, sourced and shaped differently — one carries the K-number and PMA number a recall traces back to, the other carries the classification that says how serious it was. No record in either has both.

By Connor Griggs — Regulatory & Quality Strategist

Ask openFDA for device recalls and it answers with two different datasets, not one. device/recall.json and device/enforcement.json both cover the same category of event, and they are not two views of one table. They carry different fields, and neither is a superset of the other.

The endpoint that knows the K-number

device/recall.json is CDRH’s own recall record, running from 2002 to the present. It carries a k_numbers field and a pma_numbers field — the actual clearance or approval number the recalled device traces back to — plus a root_cause_description and a cfres_id tying the record to CDRH’s internal recall system. What it does not carry is a recall classification field. Class I, II, or III, the single fact most recall monitoring exists to surface, is not a field on this record at all.

The endpoint that knows the class

device/enforcement.json is a different dataset: openFDA’s harmonized enforcement report, the same schema shared with drug and food recalls, sourced from FDA’s Recall Enterprise System and covering publicly releasable records from 2004 forward. This one carries classification, voluntary_mandated, and distribution_pattern — fields earlier posts on this blog have already read closely. What it does not carry is a K-number or a PMA number. A query that joins a recall to the clearance it affects, by reading this endpoint’s own fields, has nothing to join on; the only submission-adjacent field here is openFDA’s own product_code annotation, which names a device category, not the specific 510(k) or PMA the recalled device cleared under.

Ask “which of my cleared devices got recalled” of the endpoint built for classification, and it cannot answer by K-number. Ask it of the endpoint built for K-numbers, and it cannot say how bad the recall was. Neither gap is a defect in the one you happened to query.

The practice

Decide which fact the question needs before writing the query. “How severe were this quarter’s device recalls” wants classification, and belongs on the enforcement endpoint. “Did this specific 510(k) ever get recalled” wants the K-number field, and belongs on the recall endpoint, joined by hand against a K-number list, since the enforcement endpoint has no field to join on for that question. Assume one endpoint answers both, and a script either returns nothing for a question it was never built to answer, or silently drops the severity read the exercise depended on.

Which endpoint is right is a question about the record, not about a specific device or filing — that judgment, like every reading in Signals, is regulatory intelligence and method, never regulatory advice about a submission of your own.

FDA Radar’s recall corpus is built on the enforcement endpoint: classification is the field a monitoring product needs to tell a Class I recall from a Class III one, and it is not on the other dataset at all. The K-number link is the tradeoff that comes with it — one this page names directly, rather than leaving a reader to discover it from a query that comes back empty.

Regulatory intelligence, not regulatory advice. This post describes method and published FDA records as of its date; decisions about a specific device belong with your regulatory professional.

Practice
Breakthrough status is confidential by law
Practice
One MAUDE report is not one malfunction
Method
A supplement number is not a track
Method
Cleared is not approved
Practice
Nationwide doesn't mean your building
Practice
Not every correction reaches FDA
Method
Registered. Not reviewed.
Method
Contact ODE is not a pathway
Practice
Almost no recall is FDA-mandated
Method
FDA's device names read like a card catalog
Practice
openFDA is free. It is not unlimited.
Method
GUDID stores the model. Not the box.
Practice
Detention doesn't need a warning letter
Method
A Class I device, a Class I recall
Practice
21 CFR 820 didn't move. Its contents did.
Method
The product code that doesn't exist yet
Practice
The classification posts. The 483 behind it doesn't.
Method
A recall has three dates, and the pipeline had to pick one
Practice
The count is real. The rate is not.
Method
The firm on the record is not the firm on the box
Practice
Low confidence is an instruction, not a hedge
Method
The same company, spelled three ways
Practice
A device that was never a medical device
Method
FDA's warning letters, addressed by column number
Practice
Your regulation has a decimal. FDA's watch doesn't.
Method
Three letters is too short to search for
Practice
Most warning letters never close
Method
The guidance that skipped the draft
Practice
Ongoing, as of when?
Method
The least interesting fact in a 510(k)
Practice
No recall arrives with a product code attached
Practice
The deadline that doesn't email you
Method
The warning letter has two dates
Method
How to monitor FDA without drowning
Practice
Your predicate was recalled. Now what?
Method
Why no item reaches you without a human