ICD-10 API
Look up ICD-10-CM diagnosis codes and ICD-10-PCS procedure codes.
Overview
ICD-10 is the international standard for classifying diseases (ICD-10-CM) and procedures (ICD-10-PCS). FHIRfly automatically detects the code type and returns the appropriate data.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /v1/icd10/:code |
Single code lookup |
| POST | /v1/icd10/_batch |
Batch lookup (up to 100) |
| GET | /v1/icd10/shapes |
List available response shapes |
Single Lookup - Diagnosis (ICD-10-CM)
Look up Type 2 diabetes mellitus
import { Fhirfly } from "@fhirfly-io/terminology";
const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });
const result = await client.icd10.lookup("E11.9");
console.log(result.data);{
"data": {
"code": "E119",
"code_system": "ICD-10-CM",
"display": "Type 2 diabetes mellitus without complications",
"fhir_coding": {
"code": "E119",
"display": "Type 2 diabetes mellitus without complications",
"system": "http://hl7.org/fhir/sid/icd-10-cm"
},
"fiscal_year": "2026",
"status": "ACTIVE",
"structure": {
"billable": true,
"block": {
"range": "E08-E13",
"title": "Diabetes mellitus (E08-E13)"
},
"category": {
"code": "E11",
"title": "Type 2 diabetes mellitus"
},
"chapter": {
"code": "4",
"title": "Endocrine, nutritional and metabolic diseases (E00-E89)"
},
"kind": "diagnosis",
"parent_code": "E11",
"poa_exempt": false,
"subcategory": "E119"
},
"system": "http://hl7.org/fhir/sid/icd-10-cm"
},
"meta": {
"legal": {
"attribution_required": false,
"citation": "ICD-10-CM, CMS. Accessed 2026-01-14 via FHIRfly API.",
"license": "public_domain",
"source_name": "CMS ICD-10-CM"
}
}
}Code Types
| Type | Format | Example | Description |
|---|---|---|---|
| CM | A00-Z99 pattern | E11.9 | Diagnosis codes |
| PCS | 7 characters | 0BH17EZ | Procedure codes |
FHIRfly automatically detects the code type based on format. CM codes accept both dotted (E11.9) and non-dotted (E119) formats.
Batch Lookup
Look up multiple ICD-10 codes in a single request (up to 100). Supports mixed CM and PCS codes:
Look up multiple diagnosis codes
import { Fhirfly } from "@fhirfly-io/terminology";
const client = new Fhirfly({ apiKey: "YOUR_API_KEY" });
const result = await client.icd10.lookupMany(["E11.9","I10","J06.9"]);
console.log(result.data.results);{
"count": 3,
"results": [
{
"input": "E11.9",
"code": "E11.9",
"status": "ok",
"data": {
"code_system": "ICD-10-CM",
"display": "Type 2 diabetes mellitus without complications",
"billable": true
}
},
{
"input": "I10",
"code": "I10",
"status": "ok",
"data": {
"code_system": "ICD-10-CM",
"display": "Essential (primary) hypertension",
"billable": true
}
},
{
"input": "J06.9",
"code": "J06.9",
"status": "ok",
"data": {
"code_system": "ICD-10-CM",
"display": "Acute upper respiratory infection, unspecified",
"billable": true
}
}
],
"meta": {
"legal": {
"license": "public_domain"
}
}
}Batch with shape=full
When using shape=full on batch requests, the response includes meta.source with provenance information:
POST /v1/icd10/_batch?shape=full
{
"count": 3,
"results": [
{
"input": "E11.9",
"code": "E11.9",
"status": "ok",
"data": {
"code_system": "ICD-10-CM",
"display": "Type 2 diabetes mellitus without complications",
"billable": true
}
}
],
"meta": {
"source": {
"name": "CMS ICD-10-CM",
"url": "https://www.cms.gov/medicare/coding-billing/icd-10-codes",
"version": "FY2026",
"fhirfly_updated_at": "2026-03-01T03:00:00Z"
},
"legal": {
"license": "public_domain",
"attribution_required": false
}
}
}
Response Shapes
Control the level of detail in responses with the shape query parameter:
| Shape | Description |
|---|---|
compact |
Code, code_system, display, billable/short_desc |
standard |
+ status, fiscal_year, structure, fhir_coding |
full |
+ version, metadata, ingest info |
# Minimal data
GET /v1/icd10/E11.9?shape=compact
# Standard data (default)
GET /v1/icd10/E11.9?shape=standard
# Full data with provenance
GET /v1/icd10/E11.9?shape=full
See Response Shapes for field details.
SNOMED CT Enrichment
ICD-10-CM codes with SNOMED mappings include a snomed array in standard and full shapes. This provides cross-terminology navigation between diagnosis codes and clinical concepts.
{
"data": {
"code": "E119",
"display": "Type 2 diabetes mellitus without complications",
"snomed": [
{
"concept_id": "44054006",
"display": "Diabetes mellitus type 2",
"map_type": "equivalent",
"map_source": "snomed-extended-map"
}
]
}
}
The snomed field is only present on ICD-10-CM codes (not PCS). See SNOMED CT API for more details.
Required Scopes
icd10.read- Single and batch lookups