Available4 endpoints$0.01 per successful call
Pharma & Controlled Substances API
DEA number validation, FDA drug search, shortages, and recalls.
Base URL · https://api.compliancegrid.ai/v1/pharma
Validate a DEA number · no signuplive data
Try or .
What it checks
The Pharma & Controlled Substances API validates DEA numbers and serves openFDA drug data. DEA numbers are checked for format and checksum; the DEA registrant database is not public and no registry is connected, so a DEA number cannot be looked up and the lookup and search endpoints return no registrations. Drug NDC search, shortages and recalls come from openFDA.
- DEA number format and checksum validation (verified)
- DEA registration lookup and search: no registry is connected, so these always return found: false (do not read it as an invalid registration)
- FDA drug search via openFDA — search by brand name, generic name, or manufacturer
- NDC (National Drug Code) lookup with detailed product information
- Drug shortage tracking via openFDA with severity and status
- Drug recall monitoring via openFDA with classification and reason
- Reference data: DEA schedules (I-V) and business activity codes
Endpoints
| Method | Path | What it does | |
|---|---|---|---|
| GET | /v1/pharma/dea/lookup/{deaNumber} | Look up a DEA registration by number. | Docs |
| GET | /v1/pharma/dea/validate/{deaNumber} | Validate a DEA number format and checksum. | Docs |
| GET | /v1/pharma/fda/drug/search | Search the FDA drug database via openFDA. | Docs |
| GET | /v1/pharma/fda/recalls | Get drug recall enforcement actions from openFDA. | Docs |
Request and response
// Validate a DEA number (format and checksum)
const resp = await fetch(
"https://api.compliancegrid.ai/v1/pharma/dea/validate/AB1234563",
{ headers: { "x-api-key": process.env.CG_API_KEY } }
);
const dea = await resp.json();
console.log(dea.valid); // true; AB1234564 returns false with the reason
// Search FDA for drug recalls
const recalls = await fetch(
"https://api.compliancegrid.ai/v1/pharma/fda/recalls?drug=metformin&limit=5",
{ headers: { "x-api-key": process.env.CG_API_KEY } }
);
const data = await recalls.json();
data.results.forEach(r => {
console.log(r.product_description, r.classification);
});Example response
{
"success": true,
"deaNumber": "AB1234564",
"valid": false,
"reason": "Checksum digit does not match (invalid DEA number)"
}Good to know
- Results are information for your review, not legal advice or a compliance determination. Your reviewer makes the final call.
- Every response carries its source and the list version, so the result can go in your audit file.
- The sandbox returns mock data and production returns live data. Build in the sandbox and switch your key to go live.
Pricing
$0.01per successful call
Only successful calls are billed. Volume discounts start at 10,001 calls a month, and the sandbox is free.See pricing and estimate your bill →