› compliance_grid.aiCOMPLIANCEGRIDGOV · COMPLIANCE · INTELLIGENCE
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

MethodPathWhat 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/searchSearch the FDA drug database via openFDA.Docs
GET/v1/pharma/fda/recallsGet 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 →