canonical: https://jentic.com/apis/nlm.nih.gov/rxnorm

# Nlm Nih Gov RxNorm API

The RxNorm API exposes the National Library of Medicine's normalized drug nomenclature, mapping brand names, generic names, NDCs, and clinical drug concepts to stable RxCUI identifiers. Agents can resolve drug name variants, traverse relationships between ingredients and clinical drug forms, retrieve historical NDC status, and check approximate term matches for misspellings. The dataset spans the full US prescription drug ecosystem with monthly updates from FDA and other source vocabularies. Suitable for medication reconciliation, e-prescribing validation, and clinical decision support pipelines.

## For AI agents

Resolve and normalize US prescription drug names, NDCs, and brand-generic relationships using RxNorm RxCUI identifiers and crosswalks to source vocabularies.

## Scope

Does not handle drug interactions, dosing recommendations, adverse event reports, or pricing - use for RxNorm drug name normalization and NDC crosswalks only.

## Capabilities

- Convert a free-text drug name into a normalized RxCUI identifier via /approximateTerm and /rxcui
- Retrieve all related concepts for a drug, including ingredients, clinical drug components, and dose forms
- Look up the active status, generic equivalent, and brand variants attached to a given RxCUI
- Map National Drug Codes to RxCUIs and walk historical NDC status changes for a clinical drug
- Fetch term type taxonomies, source vocabularies, and property categories used across RxNorm
- Suggest spelling corrections for malformed drug name input via /spellingsuggestions

## Use cases

### Medication Reconciliation

Normalize free-text medication entries from patient intake forms or claims data into RxCUI identifiers so duplicate orders, dose mismatches, and brand-generic substitutions can be detected reliably. The RxNorm API resolves variant spellings via /approximateTerm and links each result to ingredients, strengths, and dose forms. This eliminates string-match heuristics in EHR integration pipelines and produces an auditable mapping between source documents and a stable code system.

Example prompt: Take the string 'Lipitor 20mg tablet', call /approximateTerm to get candidate RxCUIs, then call /rxcui/{rxcui}/related to retrieve the generic ingredient atorvastatin

### NDC to RxNorm Crosswalk

Pharmacy claims and inventory systems track drugs by National Drug Code, but clinical decision support and analytics require RxCUIs. The /ndcstatus and /rxcui/{rxcui}/ndcs endpoints expose the bidirectional crosswalk and historical status changes, so a pipeline can reconcile a billing-side NDC against the current normalized clinical drug concept. Mapping coverage spans active, alien, obsolete, and unreleased NDC states.

Example prompt: Submit an 11-digit NDC like 00071015523 to /ndcstatus and resolve the returned RxCUI to its clinical drug name via /rxcui/{rxcui}/properties

### Brand-Generic Substitution Lookup

Formulary and prior authorization workflows often need to surface generic alternatives for a branded prescription. The /rxcui/{rxcui}/generic and /rxcui/{rxcui}/related endpoints return generic equivalents and related ingredient concepts so substitution rules can be evaluated without scraping FDA Orange Book data. Each result includes term type so callers can filter to the appropriate concept granularity.

Example prompt: Call /rxcui/{rxcui}/generic with the RxCUI for a branded drug and return the generic ingredient name and strength

### AI Agent Clinical Lookup

Healthcare-focused AI agents need a structured drug knowledge base to answer prescribing questions, validate medication lists, and link to interaction services. Through Jentic, an agent searches for 'normalize a drug name to rxcui', loads the RxNorm operation schema, and executes the call without managing the public RxNav endpoint directly. Because the API is public and unauthenticated, Jentic still tracks usage, retries, and response shape.

Example prompt: Use Jentic search to find the RxNorm normalize-drug-name operation, load its schema, and execute it for the input 'metformin 500'

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /approximateTerm | Find RxNorm concepts matching a free-text drug name |
| GET | /rxcui | Resolve a drug name to one or more RxCUIs |
| GET | /rxcui/{rxcui}/related | Retrieve concepts related to a given RxCUI by term type |
| GET | /rxcui/{rxcui}/generic | Get the generic equivalent of a branded RxCUI |
| GET | /rxcui/{rxcui}/ndcs | List NDCs currently mapped to an RxCUI |
| GET | /ndcstatus | Check the status and RxCUI mapping for a National Drug Code |
| GET | /spellingsuggestions | Suggest spelling corrections for malformed drug names |

## Key resources

- **RxCUI Concepts** — Resolve, query, and walk relationships for normalized clinical drug identifiers
- **NDC Mappings** — Look up National Drug Code status and crosswalk to RxCUIs
- **Approximate Term Search** — Match free-text drug names to RxNorm concepts with fuzzy scoring
- **Source Vocabularies** — Inspect term types, property categories, and contributing source vocabularies
- **Spelling Suggestions** — Generate spelling corrections for malformed drug name inputs

## Why Jentic

- **Setup:** Wiring the RxNorm API by hand means building requests against its REST host (https://rxnav.nlm.nih.gov/REST), threading the rxcui into the path, and parsing its response shapes yourself. Through Jentic you install once, import the RxNorm API from the API Directory, and your agent calls it with no key to manage.
- **Permission scoping:** RxNorm is a public read-only reference API, so scope by operation: limit the agent to the calls it needs, such as looking up an rxcui or fetching related drug names, and leave out spelling suggestions or NDC status unless you add them. You choose the operations it may call.
- **Credential handling:** RxNorm needs no credential, so there is nothing to store; any related configuration your Jentic One instance holds stays encrypted and out of the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'find the rxcui for a drug name' or 'get NDC codes for an rxcui', and Jentic returns the matching RxNorm operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **openFDA API** — openFDA exposes adverse event reports, drug labels, and recalls keyed by NDC, complementing RxNorm's normalization layer.
- **NCBI Datasets API** — NCBI Datasets covers genomic and biomedical reference data from the same parent agency as RxNorm.

## FAQ

### What authentication does the RxNorm API use?

The RxNorm REST API at rxnav.nlm.nih.gov/REST is fully public and requires no API key, OAuth token, or registration. Through Jentic the call still passes through the credential broker, but no secret is provisioned because the upstream service is anonymous. Jentic manages rate limits and retries on the agent's behalf.

### Can I find the generic equivalent of a brand-name drug with the RxNorm API?

Yes. Resolve the brand name to an RxCUI via /approximateTerm or /rxcui, then call /rxcui/{rxcui}/generic to retrieve the generic concept, or /rxcui/{rxcui}/related with the appropriate term type filter to get ingredients and clinical drug forms.

### What are the rate limits for the RxNorm API?

NLM enforces a soft limit of roughly 20 requests per second per IP for RxNav services. There is no daily cap, but bulk lookups should be batched and cached. Jentic handles backoff automatically when the service returns throttling responses.

### How do I normalize a drug name with the RxNorm API through Jentic?

Run pip install jentic, then ask Jentic to search for 'normalize a drug name to rxcui'. Jentic returns the /approximateTerm operation schema; load it, pass the drug string as the term parameter, and execute. The response contains ranked RxCUI candidates with scores.

### Is the RxNorm API free to use?

Yes. RxNorm is produced and hosted by the US National Library of Medicine and is free for all uses, including commercial. Attribution to NLM is requested when redistributing the data.

### Can the RxNorm API tell me which NDCs map to a current RxCUI?

Yes. Call /rxcui/{rxcui}/ndcs for the current set or /rxcui/{rxcui}/allhistoricalndcs for the full status history. Each entry includes the NDC, status (active, obsolete, alien), and the dates the mapping was valid.

### Can I limit what my agent is allowed to do with the RxNorm API?

Yes. Because you run Jentic One yourself, your own rules decide which RxNorm operations the agent may call, so you can grant only the lookups it needs, such as resolving a drug name with /rxcui or /approximateTerm and fetching related concepts with /rxcui/{rxcui}/related. You can leave out other read operations like /spellingsuggestions, /ndcstatus, or /rxcui/{rxcui}/ndcs unless you explicitly enable them. Since the API is public and read-only, there are no credentials to hand out, and the agent can reach only the endpoints you have allowed.
