RxNorm API
Look up RxNorm (RxCUI) information for normalized drug names and relationships.
Overview
RxNorm provides normalized names for clinical drugs and links to many drug vocabularies. FHIRfly provides fast lookups against the NLM RxNorm database.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /v1/rxnorm/:rxcui |
Single RxCUI lookup |
| POST | /v1/rxnorm/_batch |
Batch RxCUI lookup (up to 100) |
| GET | /v1/rxnorm/shapes |
List available response shapes |
Single Lookup
Look up acetohexamide by RxCUI
Request
Node.js
import { Fhirfly } from "@fhirfly-io/terminology";
const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });
const result = await client.rxnorm.lookup("173");
console.log(result.data);Response
JSON
{
"data": {
"brand_names": [],
"ingredients": [],
"is_prescribable": false,
"name": "acetohexamide",
"ndcs": [],
"rxcui": "173",
"semantic_types": [
"Organic Chemical",
"Pharmacologic Substance"
],
"status": "ACTIVE",
"tty": "IN"
},
"meta": {
"legal": {
"attribution_required": false,
"citation": "RxNorm from NLM. Accessed 2026-01-14 via FHIRfly.",
"license": "public_domain",
"source_name": "RxNorm"
}
}
}Term Types (TTY)
Common RxNorm term types:
| TTY | Description |
|---|---|
IN |
Ingredient |
SCD |
Semantic Clinical Drug |
SBD |
Semantic Branded Drug |
GPCK |
Generic Pack |
BPCK |
Branded Pack |
BN |
Brand Name |
Batch Lookup
Look up multiple RxCUIs in a single request (up to 100):
Look up multiple drugs
Request
Node.js
import { Fhirfly } from "@fhirfly-io/terminology";
const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });
const result = await client.rxnorm.lookupMany(["173","38","44"]);
console.log(result.data.results);Response
JSON
{
"count": 3,
"results": [
{
"input": "173",
"rxcui": "173",
"status": "ok",
"data": {
"name": "acetohexamide",
"tty": "IN",
"status": "ACTIVE"
}
},
{
"input": "38",
"rxcui": "38",
"status": "ok",
"data": {
"name": "Parlodel",
"tty": "BN",
"status": "ACTIVE"
}
},
{
"input": "44",
"rxcui": "44",
"status": "ok",
"data": {
"name": "mesna",
"tty": "IN",
"status": "ACTIVE"
}
}
],
"meta": {
"legal": {
"license": "UMLS"
}
}
}Batch with shape=full
When using shape=full on batch requests, the response includes meta.source with provenance information:
POST /v1/rxnorm/_batch?shape=full
{
"count": 3,
"results": [
{
"input": "173",
"rxcui": "173",
"status": "ok",
"data": { "name": "acetohexamide", "tty": "IN", "status": "ACTIVE" }
}
],
"meta": {
"source": {
"name": "RxNorm",
"url": "https://www.nlm.nih.gov/research/umls/rxnorm/",
"version": "monthly",
"fhirfly_updated_at": "2026-03-01T03:00:00Z"
},
"legal": {
"license": "UMLS",
"attribution_required": false
}
}
}
Response Shapes
Control the level of detail in responses with the shape query parameter:
| Shape | Description |
|---|---|
compact |
Minimal data for lists and autocomplete |
standard |
Core structured data (default) |
full |
Complete data with provenance for AI agents |
# Minimal data
GET /v1/rxnorm/173?shape=compact
# Standard data (default)
GET /v1/rxnorm/173?shape=standard
# Full data with provenance
GET /v1/rxnorm/173?shape=full
See Response Shapes for field details.
SNOMED CT Enrichment
RxNorm concepts with SNOMED mappings include a snomed array in standard and full shapes, linking drug concepts to SNOMED CT clinical terminology.
{
"data": {
"rxcui": "161",
"name": "acetaminophen",
"snomed": [
{
"concept_id": "387517004",
"display": "Paracetamol",
"map_type": "equivalent",
"map_source": "umls"
}
]
}
}
See SNOMED CT API for more details.
Required Scopes
rxnorm.read- Single and batch lookups