ICD-10 Data API¶
Complete API reference for querying ICD-10-CM (diagnosis) and ICD-10-PCS (procedure) code data.
Overview¶
The ICD-10 Data API provides read-only access to: - ICD-10-CM: Diagnosis codes, alphabetic index, drug/poison table, neoplasm table - ICD-10-PCS: Procedure codes, alphabetic index, code builder, definitions
Base Paths:
- ICD-10-CM: /api/v1/icd10cm-data
- ICD-10-PCS: /api/v1/icd10pcs
Authentication: Required for all endpoints (Bearer token or API Key)
ICD-10-PCS Endpoints¶
Get Available Years¶
Endpoint: GET /icd10pcs/years
Response:
Search PCS Codes¶
Search ICD-10-PCS procedure codes by code fragment or description.
Endpoint: GET /icd10pcs/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
q |
string | Yes | Search term (min 2 chars) - code prefix or description text |
year |
integer | Yes | Fiscal year (e.g., 2025) |
skip |
integer | No | Records to skip (default: 0) |
limit |
integer | No | Max records (default: 20, max: 100) |
Response:
{
"data": [
{
"code": "0016070",
"description": "Bypass Cerebral Ventricle to Nasopharynx with Autologous Tissue Substitute, Open Approach",
"section": "0",
"section_desc": "Medical and Surgical",
"body_system": "0",
"body_system_desc": "Central Nervous System and Cranial Nerves",
"root_operation": "1",
"root_operation_desc": "Bypass",
"year": 2025
}
],
"count": 150
}
Get PCS Code Details¶
Endpoint: GET /icd10pcs/code/{code}
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
code |
string | Yes | 7-character ICD-10-PCS code |
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
Response: Returns full code details including section, body system, root operation, body part, approach, device, and qualifier with descriptions.
Browse Alphabetic Index¶
Search or browse the ICD-10-PCS alphabetic index.
Endpoint: GET /icd10pcs/index
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
search |
string | No | Search term for index titles |
parent_id |
UUID | No | Parent ID to drill down hierarchy |
level |
integer | No | Filter by level (0=Main Term) |
skip |
integer | No | Records to skip (default: 0) |
limit |
integer | No | Max records (default: 50, max: 200) |
Code Builder Options¶
Get valid options for building an ICD-10-PCS code character by character.
Endpoint: GET /icd10pcs/builder/options
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
partial_code |
string | No | Code built so far (0-6 chars) |
Response:
{
"next_position": 2,
"options": [
{
"value": "0",
"label": "Central Nervous System and Cranial Nerves",
"definition": "The body system definition...",
"explanation": "Additional explanation..."
}
]
}
Get Definitions¶
Get detailed definition/explanation for a specific code character value.
Endpoint: GET /icd10pcs/definitions
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
section_id |
string | Yes | Section code (e.g., "0") |
axis_pos |
integer | Yes | Axis position (1-7) |
term_id |
string | Yes | Term/character value |
ICD-10-CM Endpoints¶
Get Available Years¶
Endpoint: GET /icd10cm-data/years
Response:
Get Chapters¶
Endpoint: GET /icd10cm-data/chapters/{year}
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
Response:
{
"chapters": [
{
"chapter": "1",
"description": "Certain infectious and parasitic diseases",
"code_range": "A00-B99"
}
],
"year": 2025
}
Search Diagnosis Codes¶
Endpoint: GET /icd10cm-data/diagnosis/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
code |
string | No | Code prefix match |
description |
string | No | Text search in description |
chapter |
string | No | Filter by chapter number |
billable_only |
boolean | No | Only billable codes (default: false) |
skip |
integer | No | Records to skip (default: 0) |
limit |
integer | No | Max records (default: 50, max: 500) |
Response:
{
"data": [
{
"id": 12345,
"code": "A00.0",
"description": "Cholera due to Vibrio cholerae 01, biovar cholerae",
"is_billable": true,
"chapter": "1",
"chapter_desc": "Certain infectious and parasitic diseases"
}
],
"count": 500
}
Get Diagnosis by Code¶
Endpoint: GET /icd10cm-data/diagnosis/code/{code}
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
Response: Returns the diagnosis with parent code and children codes for hierarchy navigation.
Search Alphabetic Index¶
Endpoint: GET /icd10cm-data/index/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
term |
string | No | Search term (case-insensitive) |
letter |
string | No | Filter by letter section |
index_type |
integer | No | 0=main (diseases), 1=external causes |
code |
string | No | Filter by associated code |
main_terms_only |
boolean | No | Only top-level terms |
skip |
integer | No | Records to skip |
limit |
integer | No | Max records (default: 50) |
Search Drug/Poison Table¶
Endpoint: GET /icd10cm-data/drug/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
substance |
string | No | Search substance name |
letter |
string | No | Filter by letter section |
code |
string | No | Search in any code column |
main_entries_only |
boolean | No | Only top-level entries |
Response: Returns substance entries with codes for accidental, self-harm, assault, undetermined, adverse effect, and underdosing.
Search Neoplasm Table¶
Endpoint: GET /icd10cm-data/neoplasm/search
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
year |
integer | Yes | Fiscal year |
site |
string | No | Search anatomic site name |
letter |
string | No | Filter by letter section |
Response: Returns neoplasm entries with codes for malignant primary, malignant secondary, in situ, benign, uncertain behavior, and unspecified behavior.
Error Responses¶
| Status | Description |
|---|---|
| 400 | Invalid parameters |
| 401 | Authentication required |
| 404 | Code or resource not found |
| 500 | Internal server error |
Related Resources¶
- ICD-10 Viewer - Browse ICD-10 codes in the UI
- Fee Schedules API - Payment rates for procedures