Skip to content

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:

[2025, 2024, 2023]


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:

{
  "years": [2025, 2024, 2023],
  "count": 3
}


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.

{
  "diagnosis": { ... },
  "parent": { ... },
  "children": [...]
}

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