Dashboard

HCPCS Level II API

Look up CMS HCPCS Level II procedure and supply codes used for non-physician services.

Overview

HCPCS (Healthcare Common Procedure Coding System) Level II codes are maintained by CMS and used on CMS-1500 claims for durable medical equipment (DME), ambulance services, supplies, and procedures not covered by CPT. FHIRfly provides fast lookups against the current HCPCS Level II code set, including modifier codes.

Endpoints

Method Path Description
GET /v1/hcpcs/:code Single HCPCS code lookup
POST /v1/hcpcs/_batch Batch lookup (up to 100)
GET /v1/hcpcs/modifier/:code Modifier code lookup
GET /v1/hcpcs/shapes List available response shapes

Single Lookup

Look up ambulance mileage code

Request
Node.js
const response = await fetch(
  "https://api.fhirfly.io/v1/hcpcs/A0425",
  {
    method: "GET",
    headers: {
    "x-api-key": "YOUR_API_KEY",
  }
  }
);

const data = await response.json();
console.log(data);
Response
JSON
{
  "data": {
    "code": "A0425",
    "display": "GROUND MILEAGE, PER STATUTE MILE",
    "category": "A",
    "status_code": "A",
    "long_description": "Ground mileage, per statute mile",
    "level": "II",
    "fhir_coding": {
      "system": "https://www.cms.gov/Medicare/Coding/HCPCSReleaseCodeSets",
      "code": "A0425",
      "display": "GROUND MILEAGE, PER STATUTE MILE"
    }
  },
  "meta": {
    "legal": {
      "license": "public_domain",
      "attribution_required": false,
      "source_name": "CMS HCPCS Level II"
    }
  }
}

Common HCPCS Codes

Code Description Category
A0425 Ground mileage, per statute mile A - Ambulance/Transport
E0100 Cane, includes canes of all materials E - DME
J9035 Injection, bevacizumab, 10 mg J - Drugs Administered
L0120 Cervical, flexible, non-adjustable L - Orthotics/Prosthetics
Q0162 Ondansetron, 1 mg, oral Q - Temporary Codes

Batch Lookup

Look up multiple HCPCS codes in a single request (up to 100):

Look up multiple HCPCS codes

Request
Node.js
const response = await fetch(
  "https://api.fhirfly.io/v1/hcpcs/_batch",
  {
    method: "POST",
    headers: {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
    body: JSON.stringify({
    "codes": [
      "A0425",
      "E0100",
      "J9035"
    ]
  })
  }
);

const data = await response.json();
console.log(data);
Response
JSON
{
  "count": 3,
  "results": [
    {
      "input": "A0425",
      "code": "A0425",
      "status": "ok",
      "data": {
        "display": "GROUND MILEAGE, PER STATUTE MILE",
        "category": "A",
        "status_code": "A"
      }
    },
    {
      "input": "E0100",
      "code": "E0100",
      "status": "ok",
      "data": {
        "display": "CANE, INCLUDES CANES OF ALL MATERIALS, ADJUSTABLE OR FIXED, WITH TIP",
        "category": "E",
        "status_code": "A"
      }
    },
    {
      "input": "J9035",
      "code": "J9035",
      "status": "ok",
      "data": {
        "display": "INJECTION, BEVACIZUMAB, 10 MG",
        "category": "J",
        "status_code": "A"
      }
    }
  ],
  "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/hcpcs/_batch?shape=full
{
  "count": 3,
  "results": [
    {
      "input": "A0425",
      "code": "A0425",
      "status": "ok",
      "data": {
        "display": "GROUND MILEAGE, PER STATUTE MILE",
        "category": "A",
        "status_code": "A",
        "long_description": "Ground mileage, per statute mile",
        "level": "II"
      }
    }
  ],
  "meta": {
    "source": {
      "name": "CMS HCPCS Level II",
      "url": "https://www.cms.gov/medicare/coding-billing/healthcare-common-procedure-system",
      "version": "2026",
      "fhirfly_updated_at": "2026-03-01T03:00:00Z"
    },
    "legal": {
      "license": "public_domain",
      "attribution_required": false
    }
  }
}

Modifier Lookup

HCPCS modifiers provide additional information about the service performed. Use the modifier endpoint to look up modifier codes:

Look up modifier 25 (Significant, Separately Identifiable E/M)

Request
Node.js
const response = await fetch(
  "https://api.fhirfly.io/v1/hcpcs/modifier/25",
  {
    method: "GET",
    headers: {
    "x-api-key": "YOUR_API_KEY",
  }
  }
);

const data = await response.json();
console.log(data);
Response
JSON
{
  "data": {
    "code": "25",
    "display": "SIGNIFICANT, SEPARATELY IDENTIFIABLE EVALUATION AND MANAGEMENT SERVICE BY THE SAME PHYSICIAN OR OTHER QUALIFIED HEALTH CARE PROFESSIONAL ON THE SAME DAY OF THE PROCEDURE OR OTHER SERVICE",
    "type": "modifier"
  },
  "meta": {
    "legal": {
      "license": "public_domain",
      "attribution_required": false,
      "source_name": "CMS HCPCS Level II"
    }
  }
}

Response Shapes

Control the level of detail in responses with the shape query parameter:

Shape Description
compact Code, display, category
standard + status, long description, level, FHIR coding (default)
full + ingest metadata, provenance
# Minimal data
GET /v1/hcpcs/A0425?shape=compact

# Standard data (default)
GET /v1/hcpcs/A0425?shape=standard

# Full data with provenance
GET /v1/hcpcs/A0425?shape=full

See Response Shapes for field details.

Required Scopes

  • hcpcs.read - Single, batch, and modifier lookups
  • hcpcs.search - Search HCPCS codes

See Also