Dashboard

Clinical Data APIs Overview

FHIRfly provides instant access to healthcare reference data through simple REST APIs.

Available APIs

APIDescriptionData Source
NDCNational Drug CodesFDA NDC Directory
NPIProvider IdentifiersCMS NPPES
RxNormDrug TerminologyNLM RxNorm
RxClassDrug ClassificationsNLM MED-RT
UCUMUnits of MeasureRegenstrief UCUM
LOINCLab CodesRegenstrief LOINC
ICD-10Diagnosis CodesCMS ICD-10
CVXVaccine CodesCDC CVX
MVXManufacturer CodesCDC MVX
FDA LabelsDrug LabelsFDA DailyMed
SNOMED CTClinical ConceptsSNOMED IPS Free Set
HCPCS Level IIProcedure & Supply CodesCMS HCPCS
MS-DRGDiagnosis Related GroupsCMS IPPS
Place of ServicePlace of Service CodesCMS POS
J-Code/NDC CrosswalkJ-Code to NDC MappingCMS ASP NDC-HCPCS

Common Patterns

All Clinical Data APIs follow consistent patterns:

Single Lookup

GET /v1/{api}/{code}

Batch Lookup

POST /v1/{api}/_batch
Content-Type: application/json
{"codes": ["code1", "code2", "code3"]}

Response Shapes

GET /v1/{api}/{code}?shape=compact|standard|full

See Response Shapes for details on each format.

Authentication

All Clinical Data API requests require authentication via API key or OAuth token.

Node.js
import { Fhirfly } from "@fhirfly-io/terminology";

// API Key
const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });

// Or OAuth2
const client = new Fhirfly({
  clientId: "ffly_client_...",
  clientSecret: "ffly_secret_...",
});

const result = await client.ndc.lookup("0069-0151-01");

Response Format

All responses follow a consistent structure:

{
  "data": { /* resource data */ },
  "meta": {
    "source": { /* provenance (full shape only) */ },
    "legal": { /* licensing info */ }
  }
}

Error Responses

StatusDescription
400Invalid request (bad code format)
401Missing or invalid authentication
403Insufficient permissions (scope)
404Code not found
429Rate limit exceeded
500Server error
{
  "error": "not_found",
  "error_description": "NDC code not found: 0000-0000-00"
}