Medicaid Rate API

Programmatic access to Medicaid reimbursement rates across six states. Look up outpatient fee schedules, inpatient DRG payments, and provider data in real time.

Why the API

Automate

Build rate lookups into your everyday pricing workflows.

Scale

Batch-price hundreds of claims in one call. Most responses in under one second.

Integrate

RESTful JSON. Any language, any platform.

Getting Started

1

Request access

Fill out the form and we'll set up your account. Usually same-day.

2

Get your API key

We'll send you an API key. Evaluating? We offer trial keys on request.

3

Start querying

Hit the endpoints. Rates back in milliseconds.

Authentication

All requests need a Bearer token in the Authorization header. Keys are scoped to specific states; a request against a state not on your key returns 403 state_not_enabled. Don't have a key? Request access.

Base URL: https://api.staterates.health/api/v1

The key must go in the Authorization header, not the URL; we reject ?api_key=… with 400 api_key_in_query so keys never end up in access logs or browser history.

Follow best practices to keep your keys safe. Don't embed secret API keys in source code or client-side applications. Instead, use your server platform's secrets vault to provide keys to your server-side applications. If your platform doesn't offer a secrets vault, set your keys in environment variables.

Request
curl "https://api.staterates.health/api/v1/ca/outpatient/rate?billing_code=99213&npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import os
import time
import requests

API_KEY = os.environ["STATERATES_API_KEY"]
URL = "https://api.staterates.health/api/v1/tx/inpatient/rate/batch"

def price_claims(claims, max_retries=5):
    headers = {"Authorization": f"Bearer {API_KEY}"}
    for attempt in range(max_retries):
        resp = requests.post(URL, headers=headers,
                             json={"requests": claims}, timeout=30)
        if resp.status_code == 429:
            time.sleep(2 ** attempt)   # 1s, 2s, 4s, 8s, 16s
            continue
        resp.raise_for_status()
        return resp.json()
    raise RuntimeError("rate-limited after all retries")

claims = [{
    "npi": "1831128974", "billing_code": "593-4", "soi": 4,
    "length_of_stay": 10, "discharge_date": "2026-03-01",
}]
print(price_claims(claims))
GET/ca/outpatient/rate

California Outpatient Rates

Look up a Medi-Cal outpatient rate by HCPCS code and provider. The returned rate reflects the applicable conversion factor, HOPD multiplier, and modifier adjustments.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringHCPCS procedure code (e.g., 99213).
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringOSHPD ID: California hospital identifier.
provider_name1 requiredstringProvider name (partial match, min 2 characters). Returns rates for all matches.
provider_typestringState Rates provider classification. Values: hospital, physician_office, surgical_clinic, free_clinic, podiatrist, nurse_anesthetist, other_clinic. If omitted, resolved from provider's taxonomy.
procedure_typestringMedi-Cal procedure type. Values: Allied Health and other programs, Anesthesia, Assistant Surgeon, Diagnostic and Treatment (EPSDT), Early and Periodic Screening, Expanded Access to Primary Care (EAPC), Injection, Justice Involved, Local Educational Agency, Medi-Cal Waiver, Medicine, Multipurpose Senior Services Program (MSSP), Palliative Care, Pathology and Clinical Laboratory, Podiatrist, Primary Surgeon, Psychology Services for Mental Health Expansion, Radiology, Targeted Rate Increase, Vision Care. Valid values vary by billing code; if omitted, the most common type is selected automatically.
service_typestringMedi-Cal service type. Values: ABORTION, ANESTHESIOLOGY, ANESTHESIOLOGY (OB), Family Planning Services, FIXED PRICE, GYN, INJECTIONS, MEDICINE, MEDICINE EMERGENCY, OB (C-SECTION), OB (VAGINAL DELIVERY), OTHER OB, OTHER SURGERY, PATHOLOGY, PODIATRY MEDICINE, PODIATRY PRIMARY CARE I & II - ADULT, PODIATRY PRIMARY CARE I & II - CHILD, PODIATRY RADIOLOGY, PODIATRY SURGERY, PRIMARY CARE I, PRIMARY CARE II - ADULT, PRIMARY CARE II - CHILD, RADIOLOGY, SURGERY FIXED PRICE, SURGERY (LAPAROSCOPY GYN), TUBAL STERILIZATIONS, WELL CHILD EXAMS. Valid values vary by procedure type; if omitted, selected automatically.
child_patientbooleanTrue if patient is under 21 years of age. Defaults to false (adult).
family_planning_primary_dxbooleanTrue if billed with a primary family planning diagnosis code. Adds 90.9% to the rate for qualifying E&M codes.
emergency_roombooleanTrue to use ER pricing. ER rates use a higher conversion factor with no HOPD add-on or cutback.
modifierstringHCPCS modifier. Values: 26 (Professional Component), TC (Technical Component).
date_of_servicestringDate of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringOSHPD ID (hospitals) or Medi-Cal Provider Number (professionals).
provider_namestringProvider name.
provider_typestringState Rates provider classification used for rate lookup. Values: hospital, physician_office, surgical_clinic, free_clinic, podiatrist, nurse_anesthetist, other_clinic.
provider_type_labelstringHuman-readable label for the State Rates provider classification (e.g., Hospital, Physician Office).
cbsa_codestringCore Based Statistical Area code.
cbsa_descriptionstringCBSA area description.
billing_codestringBilling code submitted.
billing_code_typestringCode system. Values: HCPCS, APR-DRG.
billing_code_descriptionstringHuman-readable code description. Populated for HCPCS Level II codes (CMS-sourced); null for CPT (HCPCS Level I) and EAPG/APG codes, whose descriptions are licensed content.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
basic_ratedecimalBasic rate (unit value) from fee schedule.
conversion_factordecimalConversion factor applied to basic rate.
modifierstringHCPCS modifier applied (e.g., 26, TC).
modifier_adjustmentdecimalModifier adjustment factor (e.g., 0.29 for 26, 0.71 for TC).
cutback_indintegerCutback indicator (1 = 20% reduction applied to hospital/surgical clinic rates).
hopd_multiplierfloatHospital Outpatient Department add-on multiplier (1.4344) when applied.
family_planning_multiplierfloatFamily Planning add-on multiplier (1.909) when applied.
emergency_roombooleanTrue if emergency room conversion factor was applied.
procedure_type_usedstringProcedure type used for pricing.
service_type_usedstringService type used for pricing.
is_default_selectionbooleanTrue if the API auto-selected the procedure/service type because none was specified.
available_procedure_typesstring[]Other procedure types available for this code. Only present when defaults were used.
available_service_typesstring[]Other service types available for this code. Only present when defaults were used.
is_manually_pricedbooleanTrue if code has no fee schedule rate; payment determined per claim.
date_of_service_useddateThe date of service the rate was priced against, echoed from the request. When you omit date_of_service, this returns the server default (today), so the resolved date is always visible.
child_patient_usedbooleanEcho of child_patient. True when submitted as true; null otherwise.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/ca/outpatient/rate?\
  billing_code=99213&\
  npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "state_provider_id": "106380013",
    "provider_name": "COMMUNITY HOSPITAL",
    "provider_type": "hospital",
    "provider_type_label": "Hospital",
    "cbsa_code": "31084",
    "cbsa_description": "Los Angeles-Long Beach-Anaheim, CA",
    "billing_code": "99213",
    "billing_code_type": "HCPCS",
    "billing_code_description": null,
    "payment_rate": "75.50",
    "payment_rate_type": "fee_schedule",
    "calculation_method": "4.07 (Basic Rate) × 18.55 (Conversion Factor)",
    "basic_rate": "4.07",
    "conversion_factor": "18.55",
    "modifier": null,
    "modifier_adjustment": null,
    "cutback_ind": null,
    "hopd_multiplier": null,
    "family_planning_multiplier": null,
    "emergency_room": null,
    "procedure_type_used": "Medicine",
    "service_type_used": "PRIMARY CARE I",
    "is_default_selection": true,
    "available_procedure_types": [
      "Medicine",
      "Targeted Rate Increase"
    ],
    "available_service_types": [
      "PRIMARY CARE I",
      "PRIMARY CARE II - ADULT",
      "MEDICINE"
    ],
    "is_manually_priced": false,
    "date_of_service_used": "2026-08-01",
    "child_patient_used": null,
    "effective_start_date": "2025-01-01",
    "effective_end_date": null
  }
]
POST/ca/outpatient/rate/batch

Look up multiple rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "npi": "1234567890",
      "billing_code": "99213"
    },
    {
      "npi": "1234567890",
      "billing_code": "99214",
      "child_patient": true
    }
  ]
}
GET/ca/inpatient/rate

California Inpatient Claims

Look up a Medi-Cal APR-DRG inpatient payment rate, with adjustments for transfers, cost outliers, and interim claims. The admission date determines the effective rate period.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringAPR-DRG code (e.g., 593-4 for DRG 593, SOI 4).
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringOSHPD ID: California hospital identifier.
provider_name1 requiredstringHospital name (partial match).
admit_datestringAdmission date (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. California uses the admission date to determine which rate period applies.
transfer_claimbooleanTransfer claim. Discharge status 02, 05, 63, 65, 66, 82, 85, 91, 93, or 94 (transferred to another facility).
interim_claimbooleanDischarge status = 30 (interim claim). Uses per-diem calculation.
child_patientbooleanTrue if patient is under 21 years of age. Defaults to false (adult).
length_of_stayintegerLength of stay in days. If omitted, defaults to the national average LOS for this APR-DRG.
total_chargesdecimalTotal charges from the claim. If omitted, charges are estimated for outlier calculations.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringOSHPD ID: California hospital identifier.
provider_namestringProvider name.
street_addressstringHospital street address.
citystringHospital city.
zip_codestringHospital ZIP code.
countystringHospital county.
cbsa_codestringCBSA code.
cbsa_descriptionstringCBSA area description.
billing_codestringBilling code submitted.
billing_code_typestringCode system: APR-DRG.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
apr_drgstringAPR-DRG code.
soiintegerSeverity of Illness level (1–4).
drg_base_ratedecimalHospital-specific DRG base rate (wage-adjusted).
payment_relative_weightfloatPayment relative weight (casemix weight × policy adjustor).
casemix_adjustment_factorfloatHospital casemix adjustment factor.
policy_adjustor_usedstringPolicy adjustor letter used. Values: A, B, C, D (based on age and NICU status).
policy_adjustor_valuefloatPolicy adjustor numeric value.
designated_nicubooleanWhether the hospital is a designated NICU facility.
estimated_costdecimalEstimated cost (total_charges × cost_to_charge_ratio).
drg_base_paymentdecimalBase DRG payment before adjustments.
transfer_adjustment_appliedbooleanWhether transfer adjustment was applied.
transfer_adjusted_amountdecimalPayment after transfer adjustment.
outlier_adjustment_appliedbooleanWhether cost outlier adjustment was applied.
outlier_adjustment_amountdecimalOutlier adjustment amount.
cost_to_charge_ratiofloatHospital cost-to-charge ratio.
outlier_thresholdfloatOutlier threshold amount ($99,000).
marginal_cost_percentagefloatMarginal cost percentage applied to outlier excess (0.53).
charge_cap_appliedbooleanWhether payment was capped to total charges (lesser-of rule).
is_interim_claimbooleanWhether calculated as an interim claim.
interim_per_diem_amountfloatPer diem rate for interim claim calculation.
length_of_stay_usedintegerLength of stay used in calculation.
national_average_losdecimalNational average LOS for this APR-DRG.
total_charges_useddecimalTotal charges used (actual or estimated).
total_charges_sourcestringWhether charges were 'actual' or 'estimated'.
admit_date_useddateThe admit date the rate was priced against, echoed from the request. When you omit admit_date, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/ca/inpatient/rate?\
  billing_code=593-4&\
  npi=1234567890&\
  length_of_stay=10&\
  total_charges=150000" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "state_provider_id": "106194016",
    "provider_name": "CHILDRENS HOSPITAL LOS ANGELES",
    "street_address": "4650 SUNSET BLVD",
    "city": "LOS ANGELES",
    "zip_code": "90027",
    "county": "LOS ANGELES",
    "cbsa_code": "31084",
    "cbsa_description": "Los Angeles-Long Beach-Anaheim, CA",
    "billing_code": "593-4",
    "billing_code_type": "APR-DRG",
    "payment_rate": "194522.35",
    "payment_rate_type": "claim",
    "calculation_method": "standard_drg_payment",
    "apr_drg": "593",
    "soi": 4,
    "drg_base_rate": "8950.25",
    "payment_relative_weight": 20.506,
    "casemix_adjustment_factor": 1,
    "policy_adjustor_used": "A",
    "policy_adjustor_value": 1.0294,
    "designated_nicu": true,
    "estimated_cost": "216945.00",
    "drg_base_payment": "183492.50",
    "transfer_adjustment_applied": false,
    "transfer_adjusted_amount": null,
    "outlier_adjustment_applied": true,
    "outlier_adjustment_amount": "11029.85",
    "cost_to_charge_ratio": 0.445,
    "outlier_threshold": 99000,
    "marginal_cost_percentage": 0.53,
    "charge_cap_applied": false,
    "is_interim_claim": false,
    "interim_per_diem_amount": null,
    "length_of_stay_used": 10,
    "national_average_los": "24.80",
    "total_charges_used": "150000.00",
    "total_charges_source": "actual",
    "admit_date_used": "2026-08-01",
    "effective_start_date": "2025-07-01",
    "effective_end_date": null
  }
]
POST/ca/inpatient/rate/batch

Look up multiple CA inpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "593-4",
      "npi": "1234567890"
    },
    {
      "billing_code": "194-1",
      "npi": "9876543210",
      "length_of_stay": 5,
      "total_charges": "85000",
      "child_patient": true
    }
  ]
}
GET/ca/providers/search

California Provider Search

Search for California Medicaid providers by NPI, OSHPD ID, name, location, or taxonomy. Returns provider details with outpatient and inpatient rate availability.

Parameters

NameTypeDescription
npistringNational Provider Identifier (10 digits).
state_provider_idstringOSHPD ID or Medi-Cal Provider Number.
provider_namestringProvider name (partial match, min 2 characters).
citystringCity (partial match).
zip_codestringZIP code (exact match).
taxonomystringTaxonomy code filter.
provider_typestringState Rates provider classification. Values: hospital, physician_office, surgical_clinic, free_clinic, podiatrist, nurse_anesthetist, other_clinic.
limitintegerMax results (default 100, max 1000).

Returns

FieldTypeDescription
providersarrayList of matching providers.
npistringProvider NPI.
state_provider_idstringOSHPD ID or Medi-Cal Provider Number.
provider_namestringProvider name.
provider_typestringState Rates provider classification.
provider_type_labelstringHuman-readable label for the State Rates provider classification.
entity_typestringIndividual or Organization.
primary_taxonomystringPrimary taxonomy code.
citystringCity.
statestringState.
zip_codestringZIP code.
street_addressstringStreet address.
cbsa_codestringCBSA code.
cbsa_descriptionstringCBSA area description.
op_ratesbooleanHas outpatient rates.
ip_ratesbooleanHas inpatient rates.
total_resultsintegerTotal number of results found.
limit_appliedintegerLimit applied to results.
Request
curl "https://staterates.health/api/v1/ca/providers/search?\
  provider_name=community&\
  city=los+angeles" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
{
  "providers": [
    {
      "npi": "1234567890",
      "state_provider_id": "106380013",
      "provider_name": "COMMUNITY HOSPITAL OF LONG BEACH",
      "provider_type": "hospital",
      "provider_type_label": "Hospital",
      "entity_type": "Organization",
      "primary_taxonomy": "282N00000X",
      "city": "LONG BEACH",
      "state": "CA",
      "zip_code": "90806",
      "street_address": "1720 TERMINO AVE",
      "cbsa_code": "31084",
      "cbsa_description": "Los Angeles-Long Beach-Anaheim, CA",
      "op_rates": true,
      "ip_rates": true
    }
  ],
  "total_results": 1,
  "limit_applied": 100
}
GET/fl/outpatient/rate

Florida Outpatient Rates

Look up a Florida Medicaid outpatient rate. HCPCS are used for professional claims, sourced from fee schedules. Hospital outpatient claims use provider-specific EAPG rates for payment.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringHCPCS code (e.g., 99213) or EAPG code (e.g., 00002).
billing_code_typestringCode type filter. Values: HCPCS, EAPG. If omitted, returns results for all matching types.
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringFL Provider Base ID.
provider_name1 requiredstringProvider name (partial match). Returns rates for all matches.
provider_typestringState Rates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC.
modifierstringModifier for component selection. Values: 26 (Professional), TC (Technical).
place_of_servicestringPlace of service. Values: facility, non_facility. Facility POS codes (19, 21, 22, 23, 24) use the facility rate. Defaults to non-facility.
child_patientbooleanTrue if patient is under 21 years of age. Defaults to false (adult).
date_of_servicestringDate of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today.
paf_*booleanEAPG Payment Adjustor Flags (hospital only): paf_multiple_significant, paf_same_significant, paf_clinical_significant, paf_packaging, paf_repeat_ancillary, paf_bilateral, paf_terminated.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringFL Provider Base ID.
provider_namestringProvider name.
provider_typestringState Rates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC.
provider_type_labelstringHuman-readable label for the State Rates provider classification.
fl_provider_type_codestringFlorida's own 2-digit provider type code from source files (e.g., 25 = Physician M.D., 26 = Physician D.O., 35 = APRN, 62 = Physician Assistant).
fl_provider_type_code_descriptionstringFlorida's description for the provider type code.
fl_specialty_codestringFlorida's own provider specialty code from source files (e.g., 01 = General Practice, 65 = Maternal Fetal Medicine).
fl_specialty_descriptionstringFlorida's description for the specialty code.
hospital_classstringHospital category (EAPG only).
street_addressstringProvider street address.
citystringProvider city.
countystringProvider county.
zip_codestringProvider ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system. Values: HCPCS, APR-DRG.
billing_code_descriptionstringHuman-readable code description. Populated for HCPCS Level II codes (CMS-sourced); null for CPT (HCPCS Level I) and EAPG/APG codes, whose descriptions are licensed content.
modifierstringModifier applied (sourced from the matched rate row, not request input).
modifier_adjustmentdecimalDerived ratio for PCI/TCI rows (pci/fsi or tci/fsi); runtime multiplier for the MODIFIER_ADJUSTMENTS carve-out (50/52/53/54/55/56/62/80). NULL on base / state-modifier rows.
place_of_servicestring'non_facility' / 'facility' on PRACTITIONER rows where the source has the distinction; NULL on PCI/TCI / lab / EAPG rows.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
is_manually_pricedbooleanTrue when Florida publishes 'By Report' instead of an amount. The code is covered, but payment is set case by case after medical review, so payment_rate is null and rate_found is false.
prior_auth_requiredbooleanPrior authorization required.
specialty_multiplierfloatSpecialty-based rate multiplier.
age_multiplier_applieddecimalAge multiplier if applied.
provider_type_multiplier_applieddecimalProvider type multiplier (0.80 for APRN/PA).
eapg_weightdecimalEAPG relative weight (hospital only).
eapg_base_ratedecimalHospital-specific EAPG base rate.
eapg_policy_adjustordecimalHospital policy adjustor.
eapg_childrens_addondecimalChildren's hospital add-on.
paf_multiple_significantdecimalPAF: Multiple Significant Procedures adjustment.
paf_same_significantdecimalPAF: Same Significant Procedure adjustment.
paf_clinical_significantdecimalPAF: Clinical Significant Procedure adjustment.
paf_packagingdecimalPAF: Packaging adjustment.
paf_repeat_ancillarydecimalPAF: Repeat Ancillary adjustment.
paf_bilateraldecimalPAF: Bilateral adjustment.
paf_terminateddecimalPAF: Terminated Procedure adjustment.
paf_adjustmentdecimalCombined PAF adjustment factor (product of selected flags).
date_of_service_useddateThe date of service the rate was priced against, echoed from the request. When you omit date_of_service, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/fl/outpatient/rate?\
  billing_code=99213&\
  npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "state_provider_id": null,
    "provider_name": "FLORIDA MEDICAL GROUP",
    "provider_type": "PRACTITIONER",
    "provider_type_label": "Practitioner",
    "fl_provider_type_code": "17",
    "fl_provider_type_code_description": "Physician",
    "fl_specialty_code": "01",
    "fl_specialty_description": "General Practice",
    "hospital_class": null,
    "street_address": "100 MAIN ST",
    "city": "MIAMI",
    "county": "MIAMI-DADE",
    "zip_code": "33101",
    "billing_code": "99213",
    "billing_code_type": "HCPCS",
    "billing_code_description": null,
    "modifier": null,
    "modifier_adjustment": null,
    "place_of_service": "non_facility",
    "payment_rate": "47.41",
    "payment_rate_type": "fee_schedule",
    "calculation_method": "$47.41 (Practitioner Fee Schedule, Non-Facility) = $47.41",
    "prior_auth_required": false,
    "specialty_multiplier": null,
    "age_multiplier_applied": null,
    "provider_type_multiplier_applied": null,
    "eapg_weight": null,
    "eapg_base_rate": null,
    "eapg_policy_adjustor": null,
    "eapg_childrens_addon": null,
    "paf_multiple_significant": null,
    "paf_same_significant": null,
    "paf_clinical_significant": null,
    "paf_packaging": null,
    "paf_repeat_ancillary": null,
    "paf_bilateral": null,
    "paf_terminated": null,
    "paf_adjustment": null,
    "date_of_service_used": "2026-08-01",
    "effective_start_date": "2024-07-01",
    "effective_end_date": null
  }
]
POST/fl/outpatient/rate/batch

Look up multiple FL outpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "99213",
      "npi": "1234567890"
    },
    {
      "billing_code": "99214",
      "npi": "1234567890",
      "child_patient": true
    }
  ]
}
GET/fl/inpatient/rate

Florida Inpatient Claims

Look up a Florida Medicaid APR-DRG inpatient payment rate. Incorporates service, age, and provider adjustors, plus a children's hospital add-on. The discharge date determines the effective rate period.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringAPR-DRG code (e.g., 140 or 140-2).
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringFL Provider Base ID.
provider_name1 requiredstringHospital name (partial match).
discharge_datestringDischarge date (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. Florida uses the discharge date (not admission date) to determine which rate period applies.
transfer_claimbooleanTransfer claim. Discharge status 02, 05, 65, 66, 82, 85, 93, or 94 (transferred to another acute-care hospital).
child_patientbooleanTrue if patient is under 21 years of age. Defaults to false (adult).
length_of_stayintegerLength of stay in days. Defaults to average LOS.
total_chargesdecimalTotal charges for outlier calc and charge cap.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringFL Provider Base ID.
provider_namestringProvider name.
hospital_classstringProvider category. Values: All Other, Rural, LTAC, Childrens, Teaching.
trauma_classstringTrauma designation. Values: Level I, Level II, Pediatric. Null if not a trauma center.
street_addressstringHospital street address.
citystringHospital city.
countystringHospital county.
zip_codestringHospital ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system: APR-DRG.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
apr_drg_codestringBase DRG code.
soiintegerSeverity of Illness (1–4).
fl_relative_weightdecimalFlorida-specific DRG weight.
mean_losdecimalAverage length of stay for this DRG.
service_adjustordecimalService adjustor (1.0 or 1.3 for neonatal).
age_adjustordecimalAge adjustor (applied when age < 21).
pediatric_service_linestringPediatric service line classification.
adult_service_linestringAdult service line classification.
provider_adjustordecimalProvider category adjustor.
max_adjustor_useddecimalMAX(service, age, provider) adjustor used.
statewide_base_ratedecimalFL statewide base rate.
base_paymentdecimalBase payment: base_rate × weight × max_adjustor.
trauma_enhancement_amountdecimalTrauma enhancement amount.
childrens_addondecimalChildren's hospital add-on (source value).
childrens_addon_amountdecimalActual children's add-on calculated.
transfer_adjustment_appliedbooleanWhether transfer adjustment was applied.
transfer_adjusted_amountdecimalPayment after transfer adjustment.
outlier_adjustment_appliedbooleanWhether cost outlier was applied.
outlier_amountdecimalCost outlier adjustment amount.
outlier_thresholdfloatCost outlier threshold ($60,000).
marginal_cost_pctfloatMarginal cost percentage (0.60 or 0.80).
charge_cap_appliedbooleanWhether payment was capped at total charges.
cost_to_charge_ratiodecimalHospital CCR for outlier calc.
casemixdecimalHospital casemix index.
length_of_stay_usedintegerLOS used in calculation.
total_charges_useddecimalTotal charges used.
discharge_date_useddateThe discharge date the rate was priced against, echoed from the request. When you omit discharge_date, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/fl/inpatient/rate?\
  billing_code=140-2&\
  npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "state_provider_id": "100001",
    "provider_name": "FLORIDA GENERAL HOSPITAL",
    "hospital_class": "All Other",
    "trauma_class": null,
    "street_address": "500 HOSPITAL DR",
    "city": "JACKSONVILLE",
    "county": "DUVAL",
    "zip_code": "32209",
    "billing_code": "140-2",
    "billing_code_type": "APR-DRG",
    "payment_rate": "6850.75",
    "payment_rate_type": "claim",
    "calculation_method": "6210.50 (Base Rate) × 0.8500 (FL Weight) × 1.3000 (MAX Adjustor)",
    "apr_drg_code": "140",
    "soi": 2,
    "fl_relative_weight": "0.8500",
    "mean_los": "3.50",
    "service_adjustor": "1.0000",
    "age_adjustor": null,
    "pediatric_service_line": null,
    "adult_service_line": "Pulmonary",
    "provider_adjustor": "1.3000",
    "max_adjustor_used": "1.3000",
    "statewide_base_rate": "6210.50",
    "base_payment": "6850.75",
    "trauma_enhancement_amount": null,
    "childrens_addon": null,
    "childrens_addon_amount": null,
    "transfer_adjustment_applied": false,
    "transfer_adjusted_amount": null,
    "outlier_adjustment_applied": false,
    "outlier_amount": null,
    "outlier_threshold": 60000,
    "marginal_cost_pct": 0.6,
    "charge_cap_applied": false,
    "cost_to_charge_ratio": "0.3500",
    "casemix": "1.2500",
    "length_of_stay_used": 4,
    "total_charges_used": null,
    "discharge_date_used": "2026-08-01",
    "effective_start_date": "2024-07-01",
    "effective_end_date": null
  }
]
POST/fl/inpatient/rate/batch

Look up multiple FL inpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "140-2",
      "npi": "1234567890"
    },
    {
      "billing_code": "640-1",
      "npi": "9876543210",
      "length_of_stay": 3,
      "total_charges": "45000"
    }
  ]
}
GET/fl/providers/search

Florida Provider Search

Search for Florida Medicaid providers by NPI, Provider Base ID, name, or location. Returns provider details with FL-specific specialty codes and rate availability.

Parameters

NameTypeDescription
npistringNational Provider Identifier (10 digits).
state_provider_idstringFL Provider Base ID.
provider_namestringProvider name (partial match).
citystringCity (partial match).
countystringCounty (partial match).
taxonomystringTaxonomy code filter.
provider_typestringState Rates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC.
limitintegerMax results (default 100, max 1000).

Returns

FieldTypeDescription
providersarrayList of matching providers.
npistringProvider NPI.
state_provider_idstringFL Provider Base ID.
provider_namestringProvider name.
provider_typestringState Rates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC.
provider_type_labelstringHuman-readable label for the State Rates provider classification.
entity_typestringIndividual or Organization.
primary_taxonomystringPrimary taxonomy code.
street_addressstringStreet address.
citystringCity.
statestringState.
zip_codestringZIP code.
countystringCounty.
provider_categorystringFL provider category.
op_ratesbooleanHas outpatient rates.
ip_ratesbooleanHas inpatient rates.
total_resultsintegerTotal results found.
limit_appliedintegerLimit applied.
Request
curl "https://staterates.health/api/v1/fl/providers/search?\
  provider_name=jackson&\
  city=miami" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
{
  "providers": [
    {
      "npi": "1234567890",
      "state_provider_id": "100001",
      "provider_name": "JACKSON MEMORIAL HOSPITAL",
      "provider_type": "HOSPITAL",
      "provider_type_label": "Hospital",
      "entity_type": "Organization",
      "primary_taxonomy": "282N00000X",
      "street_address": "1611 NW 12TH AVE",
      "city": "MIAMI",
      "state": "FL",
      "zip_code": "33136",
      "county": "MIAMI-DADE",
      "provider_category": "All Other",
      "op_rates": true,
      "ip_rates": true
    }
  ],
  "total_results": 1,
  "limit_applied": 100
}
GET/ny/outpatient/rate

New York Outpatient Rates

Look up a NY Medicaid outpatient rate. Methodologies are routed by provider type: Hospital, D&TC, and ASC APGs, as well as eMedNY Physician and Lab fee schedules.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringHCPCS code (e.g., 99213) or APG code.
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringNY Medicaid Provider ID (MMIS, 8-digit). NY's state-issued billing identifier (universal across professionals and hospitals).
opcert1 requiredstringHospital-only NY operating certificate. Not all NY providers have one.
provider_name1 requiredstringProvider name (partial match, case-insensitive).
provider_typestringNY provider type filter. Values: HOSPITAL, PHYSICIAN, OUTPATIENT_CLINIC_ASC, LABORATORY. If omitted, returns rates across all matching provider types.
rate_codestringNY 4-digit rate code from UB-04 Value Code 24. HOSPITAL APG: 1400 → OPD visit, 1402 → ED, 1432 → OPD episode. OUTPATIENT_CLINIC_ASC: 1407 / 1422 → D&TC Clinic, 1408 → Amb Surg. If omitted, hospital APG defaults to OPD visit; D&TC/ASC defaults to the NPI's peer-group preferred column (Clinic over Amb Surg).
service_regionstringD&TC/ASC only. Values: Downstate, Upstate. Disambiguates the ~6 multi-region D&TC providers; auto-detected from provider address otherwise.
modifierstringModifier (PHYSICIAN HCPCS only). Values: 26 (Professional Component), TC (Technical Component). NY pre-multiplies at the data layer; modifier_adjustment carries the multiplier.
place_of_servicestringPlace of service (PHYSICIAN HCPCS only). Values: facility, non_facility. If omitted, returns the source default row (typically non_facility).
date_of_servicestringDate of service (MM/DD/YYYY or YYYY-MM-DD). Selects the fee schedule (HCPCS) or APG weight version (APG codes) in effect on this date. Defaults to today.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringNY Medicaid Provider ID (MMIS, 8-digit).
opcertstringNY Operating Certificate number. NULL for non-hospitals.
provider_namestringProvider name.
provider_typestringNY provider type. Values: HOSPITAL, PHYSICIAN, OUTPATIENT_CLINIC_ASC, LABORATORY.
provider_type_labelstringHuman-readable provider type.
ny_profession_or_servicestringNY-published profession/service category (comma-delimited title case where a provider operates under multiple categories). Examples: Physician, Nurse Practitioner, Outpatient Clinic. NULL for some hospital rows.
ny_provider_specialtystringNY-published specialty sub-classification (comma-delimited title case). Examples: Cardiology, Geriatric Medicine, General Dentistry.
primary_taxonomy_codestringNPPES primary taxonomy code (NUCC standard).
primary_taxonomy_display_namestringNPPES primary taxonomy display name (NUCC-enriched).
street_addressstringProvider street address.
citystringProvider city.
countystringProvider county.
statestringProvider state (typically 'NY').
zip_codestringProvider ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system. Values: HCPCS, APR-DRG.
billing_code_descriptionstringHuman-readable code description. Populated for HCPCS Level II codes (CMS-sourced); null for CPT (HCPCS Level I) and EAPG/APG codes, whose descriptions are licensed content.
rate_codestringNY 4-digit rate code echoed from request.
modifierstringModifier applied (e.g., 26, TC).
modifier_adjustmentdecimalMultiplier applied to base rate (PHYSICIAN modifier 26 / TC rows where NY pre-multiplies).
place_of_servicestringPlace of service used.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
apg_weightdecimalAPG relative weight (Solventum 3M v3.17, NY-branded as APG).
px_based_weightdecimalHCPCS procedure-overlay weight (OT/PT/SLP/nutrition codes).
apg_base_rate_useddecimalAPG base rate applied (Hospital APG path or D&TC/ASC peer-group rate).
apg_base_rate_source_columnstringWhich base-rate column was used. Hospital values: apg_base_rate_opd_visit, apg_base_rate_ed, apg_base_rate_opd_episode. D&TC/ASC values: apg_base_rate_dtc_clinic_{upstate|downstate}, apg_base_rate_dtc_ambsurg_{upstate|downstate}.
payment_operatingdecimalOperating portion of payment_rate (apg_weight × apg_base_rate_used). D&TC/ASC + Hospital APG paths.
payment_capitaldecimalCapital add-on per visit (D&TC/ASC only; per-NPI, ~$27 average). Hospital APG capital is bundled into the base rate.
capital_anomalybooleanTRUE when the NPI's published capital add-on falls outside the expected range; surfaces data-quality outliers for review.
units_limitdecimalPer-claim units limit (when published).
anesthesia_base_unitsdecimalAnesthesia base unit count for the code. NY publishes base units but no per-unit conversion factor; anesthesia rates are not computed (rate_found=false). Surfaced for downstream pricing.
is_manually_pricedbooleanTRUE for 'By Report' sentinel codes (payment_rate=NULL with explanatory message).
prior_auth_requiredbooleanTRUE when the code requires prior authorization.
date_of_service_useddateThe date of service the rate was priced against, echoed from the request. When you omit date_of_service, this returns the server default (today), so the resolved date is always visible.
service_region_usedstringThe region used to select the APG base rate (Downstate or Upstate), derived from the rate column actually priced (multi-region NPIs default to Downstate when the region is omitted). Null when region does not apply (hospitals, fee-schedule rows).
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/ny/outpatient/rate?\
  billing_code=99213&\
  npi=1407957863" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1407957863",
    "state_provider_id": "01234567",
    "opcert": null,
    "provider_name": "HAQ INAM UL",
    "provider_type": "PHYSICIAN",
    "provider_type_label": "Physician",
    "ny_profession_or_service": "PHYSICIAN",
    "ny_provider_specialty": "FAMILY PRACTICE",
    "city": "BROOKLYN",
    "county": "KINGS",
    "state": "NY",
    "zip_code": "11201",
    "billing_code": "99213",
    "billing_code_type": "HCPCS",
    "billing_code_description": null,
    "rate_code": null,
    "modifier": null,
    "modifier_adjustment": null,
    "place_of_service": "non_facility",
    "payment_rate": "86.75",
    "payment_rate_type": "fee_schedule",
    "calculation_method": "eMedNY Physician Fee Schedule (Non-Facility): $86.75",
    "apg_weight": null,
    "apg_base_rate_used": null,
    "apg_base_rate_source_column": null,
    "anesthesia_base_units": null,
    "is_manually_priced": false,
    "prior_auth_required": false,
    "date_of_service_used": "2026-08-01",
    "service_region_used": null,
    "effective_start_date": "2024-01-01",
    "effective_end_date": null
  }
]
POST/ny/outpatient/rate/batch

Look up multiple NY outpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "99213",
      "npi": "1407957863"
    },
    {
      "billing_code": "76700",
      "npi": "1407957863",
      "modifier": "26"
    },
    {
      "billing_code": "80048",
      "npi": "1629737200"
    }
  ]
}
GET/ny/inpatient/rate

New York Inpatient Claims

Look up a NY Medicaid inpatient rate. Pricing is routed by service type: acute care via APR-DRG, exempt psychiatric on a per-diem with age, intellectual-disability, and comorbidity factors, and six per-diem categories (Medical Rehab, CAH, Chemical Dependency Rehab, Adult and Child Dual Diagnosis, and Specialty Acute). Payer class (FFS or Managed Medicaid) selects the rate schedule.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringAPR-DRG code (e.g. '140', '140-2'). Required for acute and psychiatric service types; optional for per-diem service types (CAH, med_rehab, etc.) where pricing is hospital-level and DRG isn't used.
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringNY Medicaid Provider ID (MMIS, 8-digit). NY's state-issued billing identifier (universal across professionals and hospitals).
opcert1 requiredstringHospital-only NY operating certificate. Not all NY providers have one.
provider_name1 requiredstringHospital name (partial match, case-insensitive).
service_typestringWhat category of inpatient care was delivered. Values: acute, psychiatric, specialty_acute, cah, med_rehab, chem_dep_rehab, dual_diag_adult, dual_diag_child. Optional; defaults to acute, or can be inferred from rate_code or APR-DRG.
rate_codestringOptional 4-digit code from UB-04 Value Code 24. An alternate way to specify Service Type; e.g., 2946/2960 = acute, 2852 = psychiatric, 2853 = med_rehab, 2999 = cah, 4608 = dual_diag_adult, 4607 = dual_diag_child.
payer_classstringPayer class. Values: FFS = traditional fee-for-service Medicaid claims. MMC = Managed Medicaid (insurer-administered) claims. MMC rates often include additional add-ons (Safety Net SDP + H+H ACR) auto-applied for qualifying hospitals on acute and psychiatric. Defaults to FFS.
discharge_datestringDischarge date (MM/DD/YYYY or YYYY-MM-DD). Selects the rate period. Defaults to today.
length_of_stayintegerLength of stay in days. Required for psychiatric and per-diem service types; optional for acute (used only for transfer calculations).
alc_daysintegerDays within the stay where the patient was medically stable enough to be discharged but couldn't be (e.g., awaiting nursing home placement). ALC days pay at the ALC per-diem rate. Not supported for Adult or Child Dual Diagnosis Psychiatric: NY doesn't publish an ALC per-diem for those service types, so supplying alc_days > 0 returns rate_found=false with an explanatory error.
gross_chargesdecimalBilled charges (acute only). Required to evaluate cost-outlier eligibility.
transfer_outbooleanTrue if this hospital transferred the patient to another facility. Acute only. Payment is rebuilt as a daily rate (the DRG payment divided by the DRG's average length of stay, times a 120% adjustment factor, plus the hospital's capital per diem) applied to each non-ALC day, then capped at what a full discharge would have paid. The 120% factor does not apply when the DRG's average length of stay is 1, and transfer-only DRGs (580/581) are paid the full DRG rate. Per 10 NYCRR §86-1.21.
age_groupstringPsychiatric only. Values: ADULT, CHILD. CHILD applies when the patient is age 17 or under (adds 1.3597 multiplier to operating rate). Defaults to ADULT.
has_intellectual_disabilitybooleanPsychiatric only. True if the patient has an Intellectual Disability diagnosis. Applies 1.0599 MR factor (max 1× per case).
comorbidity_categorystringPsychiatric only. Highest-matching comorbidity from NY's 18-category list (acute_coronary_syndrome, arrhythmia, cancers, cardio_respiratory_failure, cellulitis, chronic_kidney_disease, chronic_obstructive_lung_disease, diabetes, gi_hemorrhage, heart_failure, liver_disease, metabolic_disturbance, neurological_disease, opportunistic_infection, pancreas_disease, pneumonia, sepsis, severe_hematologic_disorder).
ect_treatmentsintegerPsychiatric only. Number of electroconvulsive therapy treatments delivered during the stay.
prior_admission_within_30dbooleanPsychiatric only. Set if the patient was discharged from a NY psychiatric unit within the prior 30 days.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringHospital NPI.
state_provider_idstringNY Medicaid Provider ID (MMIS).
opcertstringNY Operating Certificate number.
provider_namestringHospital name.
provider_type_labelstringHuman-readable provider type (always 'Hospital' for NY IP).
primary_taxonomy_codestringNPPES primary taxonomy code (NUCC standard).
primary_taxonomy_display_namestringNPPES primary taxonomy display name (NUCC-enriched).
street_addressstringHospital street address.
citystringHospital city.
countystringHospital county.
statestringHospital state.
zip_codestringHospital ZIP.
billing_codestringUser-supplied billing_code echoed verbatim. On per-diem service types this is whatever code the caller passed (typically an APR-DRG); it's echoed but not used in pricing. Null when no billing_code was supplied (legal on per-diem; required on acute/psychiatric).
billing_code_typestring'APR-DRG' when the echoed billing_code matches the APR-DRG shape (e.g. '140-2'). Null when no billing_code was supplied.
billing_code_descriptionstringService-type description (per-diem paths only; null on acute/psychiatric DRG lookups).
billing_code_used_in_calculationbooleanFALSE on per-diem service types where billing_code was echoed but not used in pricing. Suppressed (null) on acute/psychiatric where the billing_code (APR-DRG) is the primary pricing input.
rate_codestringNY rate code echoed from request.
service_typestringResolved service type used for calculation.
service_type_sourcestringHow service_type was determined. Values: explicit, inferred_from_rate_code, inferred_from_drg, sole_provider_certification, default_acute.
apr_drg_codestringAPR-DRG code (acute/psychiatric only).
soiintegerSeverity of Illness 1-4.
payer_classstringPayer class echoed. Values: FFS, MMC.
payer_class_labelstringHuman-readable payer class: 'Fee-for-Service' or 'Managed Medicaid'.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
siwdecimalAcute APR-DRG Service Intensity Weight.
psych_siwdecimalPsychiatric APR-DRG SIW (separate from acute SIW).
alosdecimalAverage Length of Stay. Surfaced only on transfer cases (used in the transfer per-diem calc).
statewide_base_price_useddecimalStatewide base price for the payer class (acute); background context, not a formula input.
isaf_useddecimalInput Service Adjustment Factor (acute). Surfaced only when a cost outlier is being evaluated.
discharge_rate_useddecimalDischarge Case Payment Rate for the matched hospital × payer class × period.
dme_useddecimalDirect Medical Education amount paid on FFS acute. Suppressed (null) on MMC acute since DME is bundled into IME and not paid separately.
capital_per_disch_useddecimalCapital per discharge base rate for the payer class (acute): the published base column alone. On MMC the non-comparable add-ons are paid on top and reported separately, so each amount maps to its own published column. Null on transfer claims, which pay capital per diem instead.
capital_addon_ambulance_mmcdecimalNon-comparable capital add-on: Ambulance (MMC acute). Null when zero or on transfer claims.
capital_addon_teaching_election_mmcdecimalNon-comparable capital add-on: Teaching Election Amendment Physician (MMC acute). Null when zero or on transfer claims.
capital_addon_school_nursing_mmcdecimalNon-comparable capital add-on: School of Nursing (MMC acute). Null when zero or on transfer claims.
capital_addon_min_wage_mmcdecimalNon-comparable capital add-on: Minimum Wage (MMC acute). The most widely applied of the four. Null when zero or on transfer claims.
capital_per_diem_useddecimalCapital per diem (acute). Surfaced only on transfer claims, where it replaces capital per discharge inside the daily rate.
high_cost_cc_useddecimalCost-to-charge ratio. Surfaced only when a cost outlier is being evaluated.
base_dr_paymentdecimalComputed: discharge_rate × siw (acute pre-add-ons).
is_outlier_casebooleanTRUE when the cost-outlier rule fired. Suppressed (null) when not applicable; only surfaced as a positive callout.
cost_of_casedecimalgross_charges × high_cost_cc (acute outlier).
cost_outlier_thresholddecimalPer-DRG outlier threshold. Surfaced only when an outlier is being evaluated.
outlier_threshold_adjusteddecimalcost_outlier_threshold × isaf.
outlier_eligible_costdecimalmax(0, cost_of_case − threshold).
outlier_marginal_pctdecimal0.60: NY's marginal cost percentage. Surfaced only when an outlier fired.
outlier_amountdecimalOutlier dollar amount.
is_transfer_casebooleanTRUE when the transfer methodology applied. Suppressed (null) when not applicable; only surfaced as a positive callout. Also null for transfer-only DRGs 580/581, which are paid the full DRG rate per 10 NYCRR §86-1.21(b)(2).
transfer_days_usedintegerDays priced at the transfer per diem: length_of_stay − alc_days. ALC days are paid separately at the ALC per diem.
transfer_adjustment_factordecimal1.20, or 1.00 when the DRG's average length of stay is 1 (10 NYCRR §86-1.21(b); the factor is not applied in that case).
transfer_per_diemdecimal(base_dr_payment / alos × transfer_adjustment_factor) + capital_per_diem. Capital per diem is added after the factor, not multiplied by it.
transfer_adjusted_amountdecimalmin(transfer_per_diem × transfer_days_used, base_dr_payment + capital_per_disch). The cap is the full inlier payment, not the bare DRG base.
acute_alc_per_diem_useddecimalAcute ALC per diem. Surfaced only when alc_days > 0.
safety_net_sdp_per_disch_mmcdecimalSafety Net per-discharge add-on (MMC acute).
hh_acr_per_disch_mmcdecimalH+H Average Commercial Rate per-discharge add-on (MMC acute, NYC public hospitals).
psych_base_per_diem_useddecimalPsych base per-diem for payer class and age group.
age_factor_useddecimalPsych age factor (1.3597 for CHILD ≤17). Suppressed (null) for ADULT; only surfaced when the multiplier shifted the per-diem.
age_factor_reasonstringHuman-readable reason the age factor applied. Suppressed when no factor applied.
mr_factor_useddecimalMR factor (1.0599 when intellectual disability declared). Suppressed (null) when no MR factor applied.
mr_factor_reasonstringHuman-readable reason the MR factor applied. Suppressed when no factor applied.
comorbidity_factor_useddecimalHighest-matching psych comorbidity factor. Suppressed (null) when no comorbidity selected.
comorbidity_category_usedstringComorbidity category label. Suppressed when no comorbidity selected.
psych_non_op_per_diem_useddecimalPsych non-operating per-diem amount.
psych_ect_per_treatment_useddecimalPsych ECT per-treatment rate. Surfaced only when ect_treatments > 0.
ect_treatments_usedintegerECT treatments echoed. Surfaced only when > 0.
psych_alc_per_diem_useddecimalPsych ALC per-diem rate. Surfaced only when alc_days > 0.
psych_sdp_per_diem_mmcdecimalPsych Safety Net SDP per-diem add-on (MMC). Surfaced only on MMC psychiatric when populated.
psych_hh_acr_per_diem_mmcdecimalPsych H+H ACR per-diem add-on (MMC, NYC public hospitals). Surfaced only on MMC psychiatric when populated.
psych_dme_mmcdecimalPsych DME amount paid on MMC. Surfaced only on MMC psychiatric when populated.
los_scale_days_at_1_20integerDays paid at the 1.20 scale factor (Days 1-4).
los_scale_days_at_1_00integerDays paid at 1.00 scale (Day 5 onward).
los_scaled_totaldecimalEffective scaled day count.
prior_admission_within_30d_appliedbooleanTRUE when readmission rule shifted Day 1 to Day-4 scaling. Suppressed (null) when not applicable.
prior_admission_within_30d_usedbooleanEchoed input. Suppressed (null) when FALSE.
has_intellectual_disability_usedbooleanEchoed input. Suppressed (null) when FALSE.
age_group_usedstringEchoed age group (ADULT / CHILD) for psychiatric.
per_diem_useddecimalPer-diem rate (per-diem service types). Suppressed (null) when 0.
alc_per_diem_useddecimalALC per-diem (per-diem service types). Suppressed (null) when alc_days = 0 or per-diem = 0.
specialty_acute_nyc_upl_mmcdecimalNYC UPL Conversion add-on (specialty_acute MMC, NYC public). Surfaced only when populated.
length_of_stay_usedintegerLOS used in computation. Echoed when supplied; surfaced unconditionally on psychiatric / per-diem (required input).
non_alc_daysintegerLOS − alc_days (per-diem).
alc_days_usedintegerALC days echoed. Suppressed (null) when 0.
gross_charges_useddecimalCharges echoed. Surfaced only when supplied.
transfer_out_usedbooleantransfer_out echoed. Suppressed (null) when FALSE; only surfaced as a positive callout.
hcra_surcharge_pct_useddecimalHCRA surcharge percentage (constant 7.04% since 4/1/2009).
hcra_surcharge_amountdecimalHCRA dollar amount included in payment_rate.
discharge_date_useddateThe discharge date the rate was priced against, echoed from the request. When you omit discharge_date, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/ny/inpatient/rate?\
  billing_code=140-2&\
  npi=1659307817&\
  payer_class=FFS&\
  discharge_date=2024-01-15" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1659307817",
    "state_provider_id": "01234567",
    "opcert": "0101000H",
    "provider_name": "ALBANY MEDICAL CENTER HOSPITAL",
    "city": "ALBANY",
    "county": "ALBANY",
    "state": "NY",
    "zip_code": "12208",
    "billing_code": "140-2",
    "billing_code_type": "APR-DRG",
    "billing_code_description": null,
    "service_type": "acute",
    "service_type_source": "explicit",
    "apr_drg_code": "140",
    "soi": 2,
    "payer_class": "FFS",
    "payer_class_label": "Fee-for-Service",
    "payment_rate": "7639.41",
    "payment_rate_type": "claim",
    "calculation_method": "$7,286.37 (Discharge Case Payment Rate) × 0.722 (SIW) = $5,260.76 (Base DRG Payment)\n+ $1,135.51 (Direct Medical Education) + $740.70 (Capital Per Discharge) + $502.44 (HCRA Surcharge 7.04%)\n= $7,639.41 (Total Payment)",
    "siw": "0.722",
    "discharge_rate_used": "7286.37",
    "dme_used": "1135.51",
    "capital_per_disch_used": "740.70",
    "base_dr_payment": "5260.76",
    "hcra_surcharge_pct_used": "0.0704",
    "hcra_surcharge_amount": "502.44",
    "statewide_base_price_used": "7460.06",
    "discharge_date_used": "2024-01-15",
    "effective_start_date": "2024-01-01",
    "effective_end_date": "2024-03-31"
  }
]
POST/ny/inpatient/rate/batch

Look up multiple NY inpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "140-2",
      "npi": "1659307817",
      "payer_class": "FFS"
    },
    {
      "billing_code": "750-1",
      "npi": "1417027558",
      "payer_class": "MMC",
      "service_type": "psychiatric",
      "length_of_stay": 10,
      "age_group": "CHILD"
    }
  ]
}
GET/ny/providers/search

New York Provider Search

Search for NY Medicaid providers by NPI, MMIS ID, OPCERT (Article 28 hospitals), name, location, or taxonomy. Returns provider details with rate availability.

Parameters

NameTypeDescription
npistringProvider NPI (10 digits).
state_provider_idstringNY Medicaid Provider ID (MMIS, 8-digit).
opcertstringNY Operating Certificate (Article 28 hospitals).
provider_namestringProvider name (partial match, case-insensitive).
citystringCity (partial match).
countystringCounty (partial match).
zip_codestringZIP code (exact match).
ny_profession_or_servicestringNY-published profession/service category (partial match). Examples: Physician, Nurse Practitioner, Podiatrist.
ny_provider_specialtystringNY-published specialty sub-classification (partial match). Examples: Cardiology, Geriatric Medicine.
taxonomystringNPPES primary taxonomy display name (partial match). NUCC-enriched display name.
provider_typestringValues: HOSPITAL, PHYSICIAN, OUTPATIENT_CLINIC_ASC, LABORATORY.
limitintegerMax results (default 100, max 1000).

Returns

FieldTypeDescription
providersarrayList of matching providers.
npistringProvider NPI.
state_provider_idstringMMIS ID.
opcertstringOperating Certificate (hospitals only).
provider_namestringProvider name.
provider_typestringNY provider type.
provider_type_labelstringHuman-readable provider type.
entity_typestringIndividual or Organization.
ny_profession_or_servicestringNY profession/service category (comma-delimited title case).
ny_provider_specialtystringNY specialty (comma-delimited title case).
primary_taxonomystringNPPES primary taxonomy display name (NUCC-enriched).
street_addressstringStreet address.
citystringCity.
countystringCounty.
statestringState.
zip_codestringZIP.
op_ratesbooleanHas outpatient rates.
ip_ratesbooleanHas inpatient rates.
available_service_typesstring[]IP service_types this hospital publishes rates for (acute, psychiatric, specialty_acute, cah, med_rehab, chem_dep_rehab, dual_diag_adult, dual_diag_child). Values match the service_type input on /ny/inpatient/rate. Empty for non-hospitals.
total_resultsintegerTotal results found.
limit_appliedintegerLimit applied.
Request
curl "https://staterates.health/api/v1/ny/providers/search?\
  provider_type=HOSPITAL&\
  city=New+York" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
{
  "providers": [
    {
      "npi": "1417027558",
      "state_provider_id": "01234567",
      "opcert": "7000045H",
      "provider_name": "Bronxcare Hospital Center",
      "provider_type": "HOSPITAL",
      "provider_type_label": "Hospital",
      "entity_type": "Organization",
      "ny_profession_or_service": "Hospital - Inpatient, Outpatient",
      "ny_provider_specialty": null,
      "primary_taxonomy": "General Acute Care Hospital",
      "street_address": "1650 Selwyn Avenue",
      "city": "Bronx",
      "county": "Bronx",
      "state": "NY",
      "zip_code": "10457",
      "op_rates": true,
      "ip_rates": true,
      "available_service_types": [
        "acute",
        "psychiatric"
      ]
    }
  ],
  "total_results": 1,
  "limit_applied": 100
}
GET/oh/outpatient/rate

Ohio Outpatient Rates

Look up an Ohio Medicaid outpatient rate. Physicians, imaging centers, and clinical labs are reimbursed by HCPCS code from fee schedules (MSRIAP for physicians and imaging, the Clinical Lab schedule for labs). Hospitals and ASCs are reimbursed per claim using EAPG rates.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringHCPCS code (e.g., 99213) or EAPG code (e.g., 00002).
billing_code_typestringCode system filter. Values: HCPCS, EAPG. If omitted, returns results for all matching code systems.
npi1 requiredstringNational Provider Identifier (10 digits).
provider_name1 requiredstringProvider name (partial match, case-insensitive). Returns rates for all matches.
provider_typestringState Rates provider classification. Values: HOSPITAL, PHYSICIAN, ASC, CLINICAL_LABORATORY, IMAGING_CENTER. If omitted, returns rates across all matching provider types for the code.
modifierstringModifier. Values: 26 (Professional Component), TC (Technical Component). Matched to a pre-multiplied row in the data layer; modifier_adjustment in the response carries the multiplier when one was applied. Other modifiers (e.g., 'QW' for CLIA-waived lab) match published per-modifier rows directly when present.
place_of_servicestringPlace of service (MSRIAP only; ignored for EAPG). Values: facility, non_facility. If omitted, returns the source default rate (typically non-facility).
date_of_servicestringDate of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. Selects the fee schedule (HCPCS) or relative-weight version (EAPG) in effect on this date.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
provider_namestringProvider name.
provider_typestringState Rates provider classification.
provider_type_labelstringHuman-readable provider type label.
hospital_classstringDerived facility-type classification (HOSPITAL only). Values: Critical Access, Children's, Teaching, Rural, Psychiatric, General Acute Care. Psychiatric is assigned when the hospital has a published psych per-diem rate (FSP); other hospitals fall back to peer-group bucketing.
primary_taxonomy_codestringNPPES primary taxonomy code (non-hospital providers).
primary_taxonomy_display_namestringNPPES primary taxonomy display name.
street_addressstringProvider street address.
citystringProvider city.
countystringProvider county.
statestringProvider state (always 'OH').
zip_codestringProvider ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system. Values: HCPCS, APR-DRG.
billing_code_descriptionstringHuman-readable code description. Populated for HCPCS Level II codes (CMS-sourced); null for CPT (HCPCS Level I) and EAPG/APG codes, whose descriptions are licensed content.
modifierstringModifier applied (e.g., '26', 'TC', 'QW').
modifier_adjustmentdecimalMultiplier applied to base_rate to derive payment_rate. Populated only when the rate is a derived modifier row (currently MSRIAP modifier 26 / TC). NULL when payment_rate is published as-is: base rates, Lab modifier rows where ODM publishes the modified rate flat (QW / 26 / TC), and EAPG. HCPCS path only.
place_of_servicestringPlace of service used (MSRIAP only).
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
eapg_weightdecimalEAPG relative weight (Solventum 3M v3.17). EAPG path only.
asc_flat_basedecimalASC statewide flat base rate ($90.98 for 1/1/2024+, $83.34 for 1/2/2020–12/31/2023). ASC path only.
outpatient_base_ratedecimalHospital-specific OP base rate. Hospital EAPG path only.
op_cca_ratedecimalHospital OP Cost-Coverage Add-on per detail line. Hospital EAPG path only.
xix_op_ccrdecimalHospital XIX OP cost-to-charge ratio (reference value). Hospital EAPG path only.
base_ratedecimalSource fee-schedule rate for this code/POS before any modifier adjustment. When modifier_adjustment is populated, payment_rate = base_rate × modifier_adjustment (cent-rounded). When no adjustment was applied, base_rate equals payment_rate. HCPCS path only.
hospital_pa_advisorystringMSRIAP prior-auth advisory text. HCPCS path only.
is_manually_pricedbooleanMSRIAP sentinel: rate is determined case-by-case (BR/FP/PA/PC). payment_rate=$0.00 with explanatory message.
is_flat_ratebooleanEAPG sentinel: flat-rate EAPG paid by OAC policy not weight × base (FR sentinel). payment_rate=NULL with explanatory message.
date_of_service_useddateThe date of service the rate was priced against, echoed from the request. When you omit date_of_service, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/oh/outpatient/rate?\
  billing_code=99213&\
  npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "provider_name": "OHIO MEDICAL GROUP",
    "provider_type": "PHYSICIAN",
    "provider_type_label": "Physician",
    "hospital_class": null,
    "primary_taxonomy_code": "207R00000X",
    "primary_taxonomy_display_name": "Internal Medicine",
    "street_address": "100 MAIN ST",
    "city": "COLUMBUS",
    "county": "FRANKLIN",
    "state": "OH",
    "zip_code": "43215",
    "billing_code": "99213",
    "billing_code_type": "HCPCS",
    "billing_code_description": null,
    "modifier": null,
    "modifier_adjustment": null,
    "place_of_service": "non_facility",
    "payment_rate": "46.23",
    "payment_rate_type": "fee_schedule",
    "calculation_method": "MSRIAP Fee Schedule (Non-Facility) = $46.23",
    "eapg_weight": null,
    "asc_flat_base": null,
    "outpatient_base_rate": null,
    "op_cca_rate": null,
    "xix_op_ccr": null,
    "base_rate": "46.23",
    "hospital_pa_advisory": "No PA",
    "is_manually_priced": false,
    "is_flat_rate": null,
    "date_of_service_used": "2026-08-01",
    "effective_start_date": "2026-01-01",
    "effective_end_date": null
  }
]
POST/oh/outpatient/rate/batch

Look up multiple OH outpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "99213",
      "npi": "1234567890"
    },
    {
      "billing_code": "00002",
      "billing_code_type": "EAPG",
      "npi": "1043641897"
    }
  ]
}
GET/oh/inpatient/rate

Ohio Inpatient Claims

Look up an Ohio Medicaid APR-DRG inpatient payment rate. Incorporates capital and medical-education add-ons, cost outliers, transfer per-diem caps, and special claim types such as Medicare crossovers, organ acquisition, and psychiatric per-diems.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringAPR-DRG code. Accepts '140-2', '140', '0140-2', '0140', or '1402' (composite is parsed into apr_drg_code + soi).
npi1 requiredstringNational Provider Identifier (10 digits).
provider_name1 requiredstringHospital name (partial match, case-insensitive).
discharge_datestringDischarge date (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. Drives all DRG pricing parameter lookups.
transfer_claimbooleanTransfer claim. Discharge status 02, 05, 63, 65, 66, 82, 85, 91, 93, or 94 (transferred to another facility).
interim_claimbooleanInterim claim: a long stay billed in periodic interim increments, reconciled to the final DRG at discharge.
length_of_stayintegerLOS in days. Required for transfer + interim. Defaults to the DRG's average length of stay.
total_chargesdecimalCovered billed charges. Required for the outlier, interim, lesser-of-charges, and organ-acquisition paths.
crossover_claimbooleanMedicare-Medicaid dual-eligible crossover claim? Swaps base rate + IP CCR to medicare_crossover_* columns. Capital, Med-ED, IP CCA stay on standard columns.
organ_acquisitionbooleanOrgan acquisition claim (heart, lung, liver, or pancreas). Requires total_charges.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringHospital NPI.
provider_namestringHospital name.
hospital_classstringDerived facility-type classification. Values: Critical Access, Children's, Teaching, Rural, Psychiatric, General Acute Care. Psychiatric is assigned when the hospital has a published psych per-diem rate (FSP); other hospitals fall back to peer-group bucketing.
street_addressstringHospital street address.
citystringHospital city.
countystringHospital county.
statestringHospital state.
zip_codestringHospital ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system: APR-DRG.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
apr_drg_codestringBase APR-DRG code (3-digit).
soiintegerSeverity of Illness (1–4).
casemix_relative_weightdecimalOH-published DRG relative weight for this (DRG, SOI).
average_length_of_staydecimalStatewide average length of stay for this DRG (drives transfer per-diem calc).
is_not_coveredbooleanDRG flagged 'Not Covered' in source (specific transplants under DRG 772).
inpatient_base_ratedecimalHospital IP base rate (or medicare_crossover_ip_base_rate when crossover_claim=true).
capital_ratedecimalHospital combined capital rate.
meded_ratedecimalHospital Med-ED rate (0 for non-eligible hospitals).
ip_cca_ratedecimalHospital IP CCA per-discharge rate.
xix_ip_ccrdecimalHospital XIX IP cost-to-charge ratio (used for outlier and interim calculations).
psych_per_diem_ratedecimalFSP psych per-diem rate. FSP path only.
drg_base_paymentdecimalDRG Base Payment = inpatient_base_rate × casemix_relative_weight.
capital_allowancedecimalCapital Allowance = capital_rate × casemix_relative_weight.
meded_allowancedecimalMed-ED Allowance = meded_rate × casemix_relative_weight.
cca_amountdecimalIP CCA flat amount per discharge.
outlier_adjustment_appliedbooleanWhether the cost-outlier add-on fired.
outlier_thresholddecimalOutlier threshold = drg_base_payment + fixed_outlier_threshold.
fixed_outlier_thresholddecimalFixed threshold per SPA §F: $50,000 for neonate/tracheostomy, $75,000 otherwise.
outlier_threshold_basisstringBasis used: 'neonate', 'tracheostomy', or 'standard'.
estimated_costdecimalcost_of_case = total_charges × xix_ip_ccr.
outlier_eligible_costdecimaleligible_outlier_cost = estimated_cost − outlier_threshold (when positive).
outlier_marginal_pctdecimalOutlier marginal cost percentage applied (80% per SPA §F).
outlier_amountdecimalOutlier add-on = eligible_outlier_cost × outlier_marginal_pct.
transfer_adjustment_appliedbooleanWhether the transfer per-diem cap reduced the DRG base payment.
statewide_avg_losdecimalStatewide average LOS used for transfer per-diem (= DRG average_length_of_stay).
transfer_per_diemdecimalTransfer per-diem = (inpatient_base_rate × casemix_relative_weight) / statewide_avg_los.
transfer_per_diem_totaldecimaltransfer_per_diem × (length_of_stay + 1).
transfer_adjusted_amountdecimalDRG base after transfer cap = min(transfer_per_diem_total, drg_base_payment).
interim_payment_appliedbooleanWhether the interim-claim cost-based pricing path was used.
interim_payment_amountdecimalInterim payment = xix_ip_ccr × total_charges.
fsp_per_diem_appliedbooleanWhether the FSP psych per-diem path was used (hospital has psych_per_diem_rate > 0).
fsp_per_diem_amountdecimalFSP per-diem payment = length_of_stay × psych_per_diem_rate.
organ_acquisition_appliedbooleanWhether the organ-acquisition 100%-of-charges rule was used.
organ_acquisition_amountdecimalOrgan acquisition payment = total_charges.
crossover_claim_appliedbooleanWhether the Medicare crossover formula path was used.
charge_cap_appliedbooleanWhether the lesser-of-charges cap reduced the final payment (only fires when outlier qualifies, per SPA §F(3)).
length_of_stay_usedintegerLOS used in calculation.
total_charges_useddecimalTotal charges used in calculation.
discharge_date_useddateThe discharge date the rate was priced against, echoed from the request. When you omit discharge_date, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/oh/inpatient/rate?\
  billing_code=140-2&\
  npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "provider_name": "OHIO GENERAL HOSPITAL",
    "hospital_class": "General Acute Care",
    "street_address": "500 HOSPITAL DR",
    "city": "CLEVELAND",
    "county": "CUYAHOGA",
    "state": "OH",
    "zip_code": "44106",
    "billing_code": "140-2",
    "billing_code_type": "APR-DRG",
    "payment_rate": "3794.04",
    "payment_rate_type": "claim",
    "calculation_method": "Standard DRG: ($4897.92 (Hospital IP Base Rate) + $404.37 (Capital Rate) + $235.70 (Med-ED Rate)) × 0.569068 (DRG/SOI Relative Weight) + $642.55 (IP CCA per Discharge) = $3794.04 (Standard Payment).",
    "apr_drg_code": "140",
    "soi": 2,
    "casemix_relative_weight": "0.569068",
    "average_length_of_stay": "4.20",
    "is_not_covered": false,
    "inpatient_base_rate": "5897.21",
    "capital_rate": "954.50",
    "meded_rate": "0.00",
    "ip_cca_rate": "-105.50",
    "xix_ip_ccr": "0.2800",
    "psych_per_diem_rate": null,
    "drg_base_payment": "3356.27",
    "capital_allowance": "543.27",
    "meded_allowance": "0.00",
    "cca_amount": "-105.50",
    "outlier_adjustment_applied": false,
    "outlier_threshold": null,
    "fixed_outlier_threshold": null,
    "outlier_threshold_basis": null,
    "estimated_cost": null,
    "outlier_eligible_cost": null,
    "outlier_marginal_pct": null,
    "outlier_amount": null,
    "transfer_adjustment_applied": false,
    "statewide_avg_los": null,
    "transfer_per_diem": null,
    "transfer_per_diem_total": null,
    "transfer_adjusted_amount": null,
    "interim_payment_applied": false,
    "interim_payment_amount": null,
    "fsp_per_diem_applied": false,
    "fsp_per_diem_amount": null,
    "organ_acquisition_applied": false,
    "organ_acquisition_amount": null,
    "crossover_claim_applied": false,
    "charge_cap_applied": false,
    "length_of_stay_used": 4,
    "total_charges_used": null,
    "discharge_date_used": "2026-08-01",
    "effective_start_date": "2025-07-01",
    "effective_end_date": null
  }
]
POST/oh/inpatient/rate/batch

Look up multiple OH inpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "140-2",
      "npi": "1234567890"
    },
    {
      "billing_code": "194-1",
      "npi": "9876543210",
      "length_of_stay": 7,
      "total_charges": "120000",
      "transfer_claim": true
    }
  ]
}
GET/oh/providers/search

Ohio Provider Search

Search for Ohio Medicaid providers by NPI, name, location, taxonomy, provider type, or hospital class. Returns provider details with rate availability.

Parameters

NameTypeDescription
npistringNational Provider Identifier (10 digits).
provider_namestringProvider name (partial match, case-insensitive).
citystringCity (partial match).
countystringCounty (partial match).
zip_codestringZIP code (exact match).
taxonomystringNUCC taxonomy display name (partial match, non-hospital).
provider_typestringState Rates provider classification. Values: HOSPITAL, PHYSICIAN, ASC, CLINICAL_LABORATORY, IMAGING_CENTER.
hospital_classstringHospital classification filter (HOSPITAL only). Values: Critical Access, Children's, Teaching, Rural, Psychiatric, General Acute Care.
limitintegerMax results (default 100, max 1000).

Returns

FieldTypeDescription
providersarrayList of matching providers.
npistringProvider NPI.
provider_namestringProvider name.
provider_typestringState Rates provider classification.
provider_type_labelstringHuman-readable provider type label.
entity_typestringIndividual or Organization (always 'Organization' for HOSPITAL).
primary_taxonomystringNPPES primary taxonomy display name (non-hospital).
hospital_classstringDerived facility-type classification (HOSPITAL only). Values: Critical Access, Children's, Teaching, Rural, Psychiatric, General Acute Care.
street_addressstringStreet address.
citystringCity.
countystringCounty.
statestringState.
zip_codestringZIP code.
op_ratesbooleanHas outpatient rates.
ip_ratesbooleanHas inpatient rates.
total_resultsintegerTotal results found.
limit_appliedintegerLimit applied.
Request
curl "https://staterates.health/api/v1/oh/providers/search?\
  provider_name=cleveland&\
  provider_type=HOSPITAL" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
{
  "providers": [
    {
      "npi": "1234567890",
      "provider_name": "OHIO GENERAL HOSPITAL",
      "provider_type": "HOSPITAL",
      "provider_type_label": "Hospital",
      "entity_type": "Organization",
      "primary_taxonomy": null,
      "hospital_class": "General Acute Care",
      "street_address": "500 HOSPITAL DR",
      "city": "CLEVELAND",
      "county": "CUYAHOGA",
      "state": "OH",
      "zip_code": "44106",
      "op_rates": true,
      "ip_rates": true
    }
  ],
  "total_results": 1,
  "limit_applied": 100
}
GET/tx/outpatient/rate

Texas Outpatient Rates

Look up a Texas Medicaid outpatient rate by HCPCS code and provider. Professional claims use fee schedules posted by TMHP, while hospital outpatient services use a combination of these same fee schedules and percent-of-charge reimbursement. Rates with and without CHIRP managed-care increases are provided.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringHCPCS/CPT procedure code (e.g., 99213).
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringTPI: Texas Provider Identifier (hospitals only).
ccn1 requiredstringCMS Certification Number (exact match, hospitals only).
provider_name1 requiredstringProvider name (partial match, min 2 characters).
provider_typestringState Rates provider classification. Values: PHYSICIAN, HOSPITAL, ASC_HASC, HOSPITAL_OP_IMAGING, CLINICAL_LABORATORY, OUTPATIENT_BEHAVIORAL_HEALTH, AMBULANCE. If omitted, resolved from taxonomy.
child_patientbooleanTrue if patient is under 21 years of age. Defaults to false (adult).
place_of_servicestringPlace of service (Physician only). Values: facility, non_facility. Defaults to non_facility.
area_typestringHospital classification (Hospital OP Imaging only). Values: urban, rural.
lab_typestringLab fee tier (Clinical Laboratory only). Values: clin_lab, sch, dshs. Defaults to clin_lab.
modifierstringProcedure modifier. Values: 26 (Professional Component), TC (Technical Component), or any TX state-specific modifier published on the row (e.g., U1, U3, UB, TH). Exact-match; unmatched modifiers return rate_found=false.
billed_chargesdecimalTotal billed charges. Required for hospital percent_of_charges codes.
emergency_roombooleanTrue if ER procedure. For hospitals, ASC surgical codes fall back to percent_of_charges (per TAC §355.8061).
date_of_servicestringDate of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringTPI: Texas Provider Identifier.
provider_namestringProvider name.
provider_typestringState Rates provider classification used. Values: PHYSICIAN, HOSPITAL, ASC_HASC, HOSPITAL_OP_IMAGING, CLINICAL_LABORATORY, OUTPATIENT_BEHAVIORAL_HEALTH, AMBULANCE.
provider_type_labelstringHuman-readable label for the State Rates provider classification (e.g., Physician, Hospital).
hospital_classstringHospital classification. Values: Urban, Rural, Childrens, STATE OWNED TEACHING.
high_volume_providerbooleanHigh volume Medicaid provider.
ccnstringCMS Certification Number (hospitals only).
street_addressstringProvider street address.
citystringProvider city.
countystringProvider county.
zip_codestringProvider ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system. Values: HCPCS, APR-DRG.
billing_code_descriptionstringHuman-readable code description. Populated for HCPCS Level II codes (CMS-sourced); null for CPT (HCPCS Level I) and EAPG/APG codes, whose descriptions are licensed content.
payment_ratedecimalPayment rate in dollars. 0.00 when payment_rate_type is not_payable.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, not_payable (TMHP's fee lookup explicitly lists the code as not payable for outpatient hospital claims at the date of service).
ofl_determinationstringTMHP Online Fee Lookup payability class for this code and date (hospital outpatient only). Values: contracted (explicitly payable at contracted rate), not_payable (explicitly not payable), no_determination (the lookup's batch files carry no listing, so the line prices at a percentage of charges per TMPPM Hospital Services Handbook §4.5.2; see the accompanying advisory). Null wherever OFL payability does not gate the row: codes priced from a posted fee schedule, and the emergency-surgery fallback (an on-schedule ASC code performed in an emergency room, which TAC §355.8061 reimburses at a percentage of charges).
calculation_methodstringHuman-readable calculation formula with actual values. Percent-of-charges codes that TMHP's fee lookup explicitly confirms carry “Payable at contracted rate per TMHP's fee lookup.”
procedure_type_usedstringProcedure type used for rate selection.
tos_codestringType of Service code.
tos_descriptionstringType of Service description (e.g., MEDICAL SERVICES, SURGERY).
modifierstringModifier on the matched rate row. Sourced from the row, not echoed from the request; when no row matches the requested modifier, rate_found=false.
modifier_adjustmentdecimalDerived ratio against the unmodified base rate, populated on PC (modifier=26) and TC (modifier=TC) rows where a base sibling exists in the same partition. Typical values: ~0.3 for PC, ~0.7 for TC; PC + TC sums to 1.0 when both come from the same partition. NULL on base rows, state-modifier rows, hospital rows, and the ~4% of PC/TC rows where no base sibling is published in the source.
place_of_servicestringPlace of service used.
area_typestringUrban/Rural (Hospital OP Imaging only).
lab_typestringLab tier (Clinical Laboratory only).
age_groupstringAge group used. Values: ADULT, CHILD, ALL.
is_manually_pricedbooleanTrue if rate requires manual review.
emergency_roombooleanTrue if ER procedure was specified.
medicaid_feedecimalPre-adjustment Medicaid fee (professional only).
total_rvusdecimalRVUs (Physician only).
conversion_factordecimalConversion factor (Physician only).
outpatient_rccdecimalOutpatient interim rate (RCC).
pct_allowable_chargesdecimalPercentage of allowable charges.
effective_ratedecimalPre-calculated effective rate: RCC × pct allowable.
source_fee_schedulestringSource fee schedule: ASC_HASC, HOSPITAL_OP_IMAGING.
billed_chargesdecimalBilled charges provided.
calculation_notestringNote when charges not provided or manual pricing.
chirp_adjustmentsobjectCHIRP adjustment per managed care program (STAR, STAR_PLUS, STAR_KIDS). Hospital only. Each contains outpatient_rate_increase, chirp_multiplier, and adjusted_payment.
advisoriesarrayInformational advisories (hospital claims only), each with code and message. Present only when applicable; e.g., NO_CODE_LEVEL_DETERMINATION when TMHP's fee lookup batch files do not list the code and it is priced at a percentage of charges per TMPPM Hospital Services Handbook §4.5.2.
date_of_service_useddateThe date of service the rate was priced against, echoed from the request. When you omit date_of_service, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/tx/outpatient/rate?\
  billing_code=99213&\
  npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "state_provider_id": null,
    "provider_name": "SMITH FAMILY MEDICINE",
    "provider_type": "PHYSICIAN",
    "provider_type_label": "Physician",
    "hospital_class": null,
    "high_volume_provider": null,
    "ccn": null,
    "street_address": "200 MAIN ST",
    "city": "HOUSTON",
    "county": "HARRIS",
    "zip_code": "77001",
    "billing_code": "99213",
    "billing_code_type": "HCPCS",
    "billing_code_description": null,
    "payment_rate": "62.84",
    "payment_rate_type": "fee_schedule",
    "calculation_method": "Medicaid Fee (non-facility)",
    "procedure_type_used": null,
    "tos_code": "1",
    "tos_description": "MEDICAL SERVICES",
    "modifier": null,
    "modifier_adjustment": null,
    "place_of_service": "non_facility",
    "area_type": null,
    "lab_type": null,
    "age_group": "ADULT",
    "is_manually_priced": false,
    "emergency_room": null,
    "medicaid_fee": "62.84",
    "total_rvus": "2.40",
    "conversion_factor": "26.18",
    "outpatient_rcc": null,
    "pct_allowable_charges": null,
    "effective_rate": null,
    "source_fee_schedule": null,
    "billed_charges": null,
    "calculation_note": null,
    "chirp_adjustments": null,
    "date_of_service_used": "2026-08-01",
    "effective_start_date": "2024-09-01",
    "effective_end_date": null
  }
]
POST/tx/outpatient/rate/batch

Look up multiple TX outpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "npi": "1234567890",
      "billing_code": "99213"
    },
    {
      "npi": "1234567890",
      "billing_code": "99214",
      "child_patient": true
    }
  ]
}
POST/tx/outpatient/claim

Texas Outpatient Claims

Price a whole Texas Medicaid institutional outpatient claim (UB-04, type of bill 131) in one request: claim header plus up to 99 lines, with optional per-line service dates for claims spanning multiple days. Identify the billing hospital by NPI or CCN. Applies Texas claims-level outpatient reimbursement rules per the Texas Medicaid Provider Procedures Manual (TMPPM), 1 Tex. Admin. Code §355.8061, and Texas HHS billing guidance, and screens every claim against the CMS Medicaid NCCI procedure-to-procedure and MUE unit-limit edit files. Returns per-line allowed amounts, the fee-for-service claim total, CHIRP managed care adjusted totals, and informational flags. Returns expected reimbursement for a clean, payable claim.

Parameters

NameTypeDescription
npi1 requiredstringBilling hospital NPI (10 digits). Provide npi or ccn.
ccn1 requiredstringCMS Certification Number (6 characters, e.g. 450035). Provide npi or ccn.
date_of_servicerequiredstringStatement date of service (MM/DD/YYYY or YYYY-MM-DD). Drives the rate and provider period used.
emergencybooleanTrue for emergency/unscheduled claims. Emergency surgery prices itemized (cost-reimbursed) instead of the day-surgery global fee; false applies the non-emergent ER differential to ER visit lines. Defaults to false.
child_patientbooleanTrue if patient is under 21 years of age. Defaults to false (adult).
type_of_billstringUB-04 type of bill. Only 131 (hospital outpatient) is supported; omit or pass 131. Nonpatient lab (141) and Medicare crossover claims are rejected.
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
linesrequiredarrayClaim lines (1–99). Each line: revenue_code (required; 3 or 4 digits), hcpcs (required for revenue codes Texas marks procedure-code-required: lab, imaging, ER, therapy), modifier, units (defaults to 1), billed_charges (required for cost-reimbursed lines; enables the lesser-of rule on fee schedule lines), and service_date (optional; defaults to the header date_of_service). On claims spanning multiple days, set service_date per line so the same-day checks (NCCI code pairs, daily unit limits, panel consolidation, ER bundling) group lines by the day the service actually occurred. Rates and the provider period always follow the header date_of_service.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
claim_pricedbooleanFalse when the claim could not be priced at all (hospital not found, no cost-report data).
error_messagestringExplanation when claim_priced is false.
npistringBilling hospital NPI (echoed).
child_patient_usedbooleanEcho of child_patient. True when submitted as true; null otherwise.
provider_namestringHospital name.
ccnstringCMS Certification Number.
hospital_classstringHospital classification. Values: Urban, Rural, Childrens, STATE OWNED TEACHING.
area_typestringurban or rural (derived from hospital_class).
high_volume_providerbooleanHigh volume Medicaid provider.
pricing_pathstringHow the claim priced. Values: day_surgery (global payment: the highest-rated surgical procedure pays, other lines bundle to $0), itemized (each line priced independently and summed).
claim_totaldecimalFee-for-service expected reimbursement for the claim (sum of line allowed amounts).
total_billed_chargesdecimalSum of line billed charges, when provided.
total_linesintegerNumber of lines submitted.
lines_pricedintegerNumber of lines with an allowed amount (including $0 bundled lines).
linesarrayPer-line results, in submitted order. Each line: rate_found, pricing_bucket (asc_hasc_fee_schedule, clinical_lab_fee_schedule, imaging_fee_schedule, percent_of_charges, bundled, manually_priced, not_a_benefit, not_separately_payable, not_payable_to_facility, not_payable, or fee_schedule as a rare fallback), bundled, allowed_amount, hcpcs_description, calculation_method, ofl_determination, advisories, and echoes of the inputs including the line's service_date. ofl_determination carries the same payability class as the single-code endpoint (contracted, not_payable, no_determination, or null), and is unaffected by bundling rules, which change what a line pays rather than the code's payability. advisories carries the same {code, message} shape as the single-code endpoint, and is null on lines a claim-level rule repriced (bundling, ER/observation absorption, the non-emergent ER cap), where the flag and calculation_method explain the amount instead.
claim_calculationstringHow the claim total was assembled: pricing path, bundling, reductions, and total, with actual values.
rules_appliedarrayMachine-readable claim-rule events in the order applied (e.g., day_surgery_global, obs_absorbs_er, non_emergent_er_cap, lesser_of). claim_calculation is rendered from exactly these events.
chirp_adjustmentsobjectCHIRP managed care adjusted claim totals per program (STAR, STAR_PLUS, STAR_KIDS), each with the rate increase, multiplier, adjusted total, and the arithmetic. Models the fee-for-service floor. Individual MCO contract terms can pay differently.
flagsarrayInformational flags, each {code, line, message}: a machine-readable code, the claim line it refers to (null when claim-level), and a plain-English explanation with the Texas Medicaid manual citation. Flags never change the returned pricing. Every code is listed in the flag legend below.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.

Flag legend

Flags are informational. They never change the returned pricing. Applied-rule flags accompany amounts the pricing already reflects; denial-risk flags mark amounts an adjudicator may pay differently; line-handling flags explain lines that could not be priced as submitted.

Applied payment rules (amounts already reflect these)
ER_ABSORBED_BY_OBSERVATIONObservation of 8+ hours absorbs the ER visit; ER lines pay $0.
BRIEF_OBSERVATION_NOT_REIMBURSEDObservation under 8 hours folds into the ER visit; observation lines pay $0.
ER_INJECTION_ADMIN_BUNDLEDInjection/infusion administration is included in the ER charge; pays $0.
CRITICAL_CARE_NOT_PAYABLE_TO_FACILITYCritical care visit codes pay the treating physician, not the hospital.
NON_EMERGENT_ER_REDUCTIONNon-emergent ER visit reduced: flat fee, or 55% of allowed at rural hospitals.
HIGH_VOLUME_UPLIFT_APPLIEDDesignated high-volume provider; day-surgery payment increased 5.2%.
DEVICE_BUNDLEDDevice bundled into the day-surgery global payment.
DEVICE_PAID_SEPARATELYDevice with its own published fee; paid separately from the day-surgery global.
NOT_A_BENEFITRevenue code is not a Texas Medicaid benefit; pays $0.
INCOMPLETE_SURGERY_MODIFIERModifier 73/74: the state suspends these claims for manual review; priced at the full rate.
Denial-risk notices (line still priced in full)
NCCI_PTP_CONFLICTBilled with its NCCI column-1 partner code on the same day; the component line denies on adjudication.
MUE_UNITS_EXCEEDEDUnits exceed the Medicaid daily maximum for this code.
MULTICHANNEL_LAB_PANEL_SUSPECTEDSame-day automated lab panels are consolidated to a combined fee.
PACKAGED_SERVICE_EXCLUSION_RISKPriced under cost reimbursement, but payers commonly package or exclude this service.
OBSERVATION_OVER_48HObservation beyond 48 total hours is denied.
OBS_761_CONFLICTRevenue code 761 denies when billed the same day as 760, 762, or 769.
EMTALA_451_STANDALONEEMTALA screening pays as a stand-alone service; other lines are not separately reimbursed.
OBS_CONCURRENT_ACTIVE_MONITORINGObservation may overlap a procedure whose active monitoring is already included.
RECOVERY_OBS_OVERLAPRecovery room hours and observation hours cannot be billed for the same time.
IIP_E0782_E0783_MUTEXOnly one implantable infusion pump code is payable per day.
TMHP_CODE_PAIR_EDITA Texas code-pair rule denies or bundles this line with another code on the claim.
RURAL_ER_SCOPE_UNCERTAINThe rural ER reduction was applied to the visit line only; its exact scope is unconfirmed.
Line handling
INVALID_REVENUE_CODENot a valid Texas outpatient hospital revenue code; line skipped, claim still prices.
MISSING_REQUIRED_HCPCSThis revenue code requires a procedure code on the line; line skipped, claim still prices.
MANUALLY_PRICED_LINENo published fee: the state prices this code manually; excluded from the claim total.
PROFESSIONAL_MODIFIER_IGNOREDModifier 26/TC ignored; facilities do not bill professional/technical splits.
Request
curl -X POST "https://staterates.health/api/v1/tx/outpatient/claim" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "npi": "1234567890",
    "date_of_service": "2026-04-16",
    "emergency": false,
    "lines": [
      {"revenue_code": "0360", "hcpcs": "33208", "units": 1, "billed_charges": 45200.00},
      {"revenue_code": "0278", "hcpcs": "C1785", "units": 1, "billed_charges": 22900.00},
      {"revenue_code": "0300", "hcpcs": "85025", "units": 1, "billed_charges": 2180.00}
    ]
  }'
Sample response
{
  "reference_id": null,
  "claim_priced": true,
  "error_message": null,
  "npi": "1234567890",
  "provider_name": "EXAMPLE MEDICAL CENTER",
  "ccn": "450000",
  "hospital_class": "Urban",
  "area_type": "urban",
  "high_volume_provider": false,
  "date_of_service": "2026-04-16",
  "emergency": false,
  "child_patient_used": null,
  "type_of_bill": "131",
  "pricing_path": "day_surgery",
  "claim_total": "6450.90",
  "total_billed_charges": "70280.00",
  "total_lines": 3,
  "lines_priced": 3,
  "lines": [
    {
      "line": 1,
      "revenue_code": "360",
      "hcpcs": "33208",
      "modifier": null,
      "units": 1,
      "service_date": "2026-04-16",
      "billed_charges": "45200.00",
      "rate_found": true,
      "pricing_bucket": "asc_hasc_fee_schedule",
      "bundled": false,
      "allowed_amount": "6450.90",
      "hcpcs_description": null,
      "calculation_method": "$6,450.90 (ASC/HASC fee schedule): highest-rated surgical procedure; pays the day-surgery global fee"
    },
    {
      "line": 2,
      "revenue_code": "278",
      "hcpcs": "C1785",
      "modifier": null,
      "units": 1,
      "service_date": "2026-04-16",
      "billed_charges": "22900.00",
      "rate_found": true,
      "pricing_bucket": "bundled",
      "bundled": true,
      "allowed_amount": "0.00",
      "hcpcs_description": "PACEMAKER, DUAL CHAMBER, RATE-RESPONSIVE (IMPLANTABLE)",
      "calculation_method": "$0.00: bundled into the day-surgery global payment (implantable device; not on the separately-payable exception list)"
    },
    {
      "line": 3,
      "revenue_code": "300",
      "hcpcs": "85025",
      "modifier": null,
      "units": 1,
      "service_date": "2026-04-16",
      "billed_charges": "2180.00",
      "rate_found": true,
      "pricing_bucket": "bundled",
      "bundled": true,
      "allowed_amount": "0.00",
      "hcpcs_description": null,
      "calculation_method": "$0.00: bundled into the day-surgery global payment (service provided in conjunction with the surgery)"
    }
  ],
  "claim_calculation": "Day surgery (scheduled): highest-rated surgical procedure 33208 pays $6,450.90 (ASC/HASC fee schedule); 2 other lines bundled to $0 per the global payment rule (TMPPM 2.11 §6.4.2.1). Claim total = $6,450.90.",
  "rules_applied": [
    {
      "rule": "day_surgery_global",
      "winning_line": 1,
      "winning_code": "33208",
      "fee": "6450.90",
      "bundled_count": 2,
      "separately_paid_devices": 0,
      "high_volume_uplift": false
    }
  ],
  "chirp_adjustments": {
    "STAR": {
      "outpatient_rate_increase": "2.3200",
      "chirp_multiplier": "3.3200",
      "adjusted_claim_total": "21416.99",
      "calculation": "$6,450.90 x (1 + 232.0%) = $21,416.99"
    },
    "STAR_PLUS": {
      "outpatient_rate_increase": "2.3200",
      "chirp_multiplier": "3.3200",
      "adjusted_claim_total": "21416.99",
      "calculation": "$6,450.90 x (1 + 232.0%) = $21,416.99"
    },
    "STAR_KIDS": null
  },
  "flags": [
    {
      "code": "DEVICE_BUNDLED",
      "line": 2,
      "message": "Device C1785 ($22,900.00 billed) is bundled into the day-surgery global payment. TMPPM pays separately only equipment with its own ASC/HASC fee (e.g., implantable infusion pumps E0782/E0783) per §6.2.9/§6.2.11."
    }
  ],
  "effective_start_date": "2026-04-01",
  "effective_end_date": null
}
GET/tx/inpatient/rate

Texas Inpatient Claims

Look up a Texas Medicaid APR-DRG inpatient payment rate, with transfer adjustments, day and cost outlier pricing, PPC/PPR penalty reductions, and CHIRP managed care adjustments. The discharge date determines the effective rate period.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringAPR-DRG code (e.g., 140 or 140-2).
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringTPI: Texas Provider Identifier.
ccn1 requiredstringCMS Certification Number (exact match).
provider_name1 requiredstringHospital name (partial match).
discharge_datestringDischarge date (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. Texas uses the discharge date (not admission date) to determine which rate period applies.
transfer_claimbooleanTransfer claim. Discharge status 02 (transferred to another facility).
child_patientbooleanTrue if patient is under 21 years of age. Defaults to false (adult).
length_of_stayintegerLength of stay in days. Required for transfers. Defaults to mean LOS.
total_chargesdecimalTotal charges for outlier calc and lesser-of rule.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringTPI: Texas Provider Identifier.
provider_namestringProvider name.
hospital_classstringHospital classification. Values: Urban, Rural, Childrens, STATE OWNED TEACHING.
ccnstringCMS Certification Number.
street_addressstringHospital street address.
citystringHospital city.
countystringHospital county.
zip_codestringHospital ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system: APR-DRG.
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
apr_drg_codestringBase DRG code.
soiintegerSeverity of Illness (1–4).
relative_weightdecimalDRG relative weight.
mean_losdecimalMean length of stay.
is_delivery_drgbooleanWhether this is a delivery-related DRG.
inpatient_sdadecimalHospital Final SDA.
delivery_sdadecimalDelivery SDA (Rural/Children's only).
sda_useddecimalSDA used in this calculation.
base_paymentdecimalBase payment: SDA × relative_weight.
transfer_adjustment_appliedbooleanWhether transfer adjustment was applied.
transfer_per_diemdecimalPer-diem used for the transfer calculation: base_payment / mean_los, rounded to cents before multiplying by length_of_stay_used. Populated only when a transfer adjustment was applied.
transfer_adjusted_amountdecimalPayment after transfer adjustment.
outlier_adjustment_appliedbooleanWhether outlier was applied.
outlier_amountdecimalOutlier adjustment amount.
outlier_typestringType of outlier applied. Values: day_outlier, cost_outlier.
outlier_adjusted_amountdecimalRunning payment after the outlier was added, before the charge cap and any PPC/PPR reduction. Populated only when an outlier adjustment was applied.
estimated_costdecimalEstimated cost for cost outlier calc.
cost_outlier_thresholddecimalCost outlier threshold.
day_outlier_thresholdintegerDay outlier threshold.
marginal_cost_pctfloatMarginal cost percentage (0.60).
outlier_reduction_factorfloatOutlier reduction factor by hospital class.
inpatient_rccfloatHospital inpatient cost-to-charge ratio.
universal_meandecimalUniversal mean cost for cost outlier threshold.
charge_cap_appliedbooleanWhether lesser-of rule reduced payment.
ppc_pct_applieddecimalHospital-specific PPC penalty.
ppr_pct_applieddecimalHospital-specific PPR penalty.
ppc_ppr_adjusted_amountdecimalPayment after PPC/PPR reduction.
length_of_stay_usedintegerLOS used in calculation.
total_charges_useddecimalTotal charges used.
total_charges_sourcestringSource of charges used. Values: actual, estimated.
chirp_adjustmentsobjectCHIRP IP adjustment per program (STAR, STAR_PLUS, STAR_KIDS). Each contains inpatient_rate_increase, chirp_multiplier, and adjusted_payment.
discharge_date_useddateThe discharge date the rate was priced against, echoed from the request. When you omit discharge_date, this returns the server default (today), so the resolved date is always visible.
child_patient_usedbooleanEcho of child_patient. True when submitted as true; null otherwise.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/tx/inpatient/rate?\
  billing_code=140-2&\
  npi=1234567890" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1234567890",
    "state_provider_id": "000001",
    "provider_name": "TEXAS GENERAL HOSPITAL",
    "hospital_class": "Urban",
    "ccn": "450001",
    "street_address": "1000 MEDICAL CENTER BLVD",
    "city": "HOUSTON",
    "county": "HARRIS",
    "zip_code": "77030",
    "billing_code": "140-2",
    "billing_code_type": "APR-DRG",
    "payment_rate": "8245.30",
    "payment_rate_type": "claim",
    "calculation_method": "SDA ($8,962.28) × Weight (0.9200) = $8,245.30 (Estimated Payment)",
    "apr_drg_code": "140",
    "soi": 2,
    "relative_weight": "0.9200",
    "mean_los": "3.80",
    "is_delivery_drg": false,
    "inpatient_sda": "8962.28",
    "delivery_sda": null,
    "sda_used": "8962.28",
    "base_payment": "8245.30",
    "transfer_adjustment_applied": false,
    "transfer_per_diem": null,
    "transfer_adjusted_amount": null,
    "outlier_adjustment_applied": false,
    "outlier_amount": null,
    "outlier_type": null,
    "outlier_adjusted_amount": null,
    "estimated_cost": null,
    "cost_outlier_threshold": null,
    "day_outlier_threshold": null,
    "marginal_cost_pct": 0.6,
    "outlier_reduction_factor": 0.9,
    "inpatient_rcc": 0.35,
    "universal_mean": "12500.00",
    "charge_cap_applied": false,
    "ppc_pct_applied": "0.0000",
    "ppr_pct_applied": "0.0000",
    "ppc_ppr_adjusted_amount": "8245.30",
    "length_of_stay_used": 4,
    "total_charges_used": null,
    "total_charges_source": null,
    "chirp_adjustments": {
      "STAR": {
        "inpatient_rate_increase": "0.57",
        "chirp_multiplier": "1.57",
        "adjusted_payment": "12945.12"
      },
      "STAR_PLUS": {
        "inpatient_rate_increase": "0.57",
        "chirp_multiplier": "1.57",
        "adjusted_payment": "12945.12"
      },
      "STAR_KIDS": {
        "inpatient_rate_increase": "0.57",
        "chirp_multiplier": "1.57",
        "adjusted_payment": "12945.12"
      }
    },
    "discharge_date_used": "2026-08-01",
    "child_patient_used": null,
    "effective_start_date": "2024-09-01",
    "effective_end_date": null
  }
]
POST/tx/inpatient/rate/batch

Look up multiple TX inpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "140-2",
      "npi": "1234567890"
    },
    {
      "billing_code": "560-1",
      "npi": "9876543210",
      "length_of_stay": 4,
      "total_charges": "62000",
      "child_patient": true
    }
  ]
}
GET/tx/providers/search

Texas Provider Search

Search for Texas Medicaid providers by NPI, TPI, CCN, name, or location. Returns provider details including hospital classification and rate availability.

Parameters

NameTypeDescription
npistringNational Provider Identifier (10 digits).
state_provider_idstringTPI: Texas Provider Identifier.
ccnstringCMS Certification Number.
provider_namestringProvider name (partial match, min 2 characters).
citystringCity (partial match).
zip_codestringZIP code (exact match).
countystringCounty (partial match).
taxonomystringTaxonomy code filter.
provider_typestringState Rates provider classification. Values: PHYSICIAN, HOSPITAL, ASC_HASC, HOSPITAL_OP_IMAGING, CLINICAL_LABORATORY, OUTPATIENT_BEHAVIORAL_HEALTH, AMBULANCE.
hospital_classstringHospital classification. Values: Urban, Rural, Childrens, STATE OWNED TEACHING.
limitintegerMax results (default 100, max 1000).

Returns

FieldTypeDescription
providersarrayList of matching providers.
npistringProvider NPI.
state_provider_idstringTPI: Texas Provider Identifier.
provider_namestringProvider name.
provider_typestringState Rates provider classification.
provider_type_labelstringHuman-readable label for the State Rates provider classification.
entity_typestringIndividual or Organization.
primary_taxonomystringPrimary taxonomy code.
street_addressstringStreet address.
citystringCity.
statestringState.
zip_codestringZIP code.
countystringCounty.
ccnstringCMS Certification Number (hospitals only).
hospital_classstringHospital classification (hospitals only). Values: Urban, Rural, Childrens, STATE OWNED TEACHING.
op_ratesbooleanHas outpatient rates.
ip_ratesbooleanHas inpatient rates.
total_resultsintegerTotal results found.
limit_appliedintegerLimit applied.
Request
curl "https://staterates.health/api/v1/tx/providers/search?\
  provider_name=memorial&\
  city=houston" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
{
  "providers": [
    {
      "npi": "1234567890",
      "state_provider_id": "000001",
      "provider_name": "MEMORIAL HERMANN HOSPITAL",
      "provider_type": "HOSPITAL",
      "provider_type_label": "Hospital",
      "entity_type": "Organization",
      "primary_taxonomy": "282N00000X",
      "street_address": "6411 FANNIN ST",
      "city": "HOUSTON",
      "state": "TX",
      "zip_code": "77030",
      "county": "HARRIS",
      "ccn": "450001",
      "hospital_class": "Urban",
      "op_rates": true,
      "ip_rates": true
    }
  ],
  "total_results": 1,
  "limit_applied": 100
}
GET/wv/outpatient/rate

West Virginia Outpatient Rates

Look up a West Virginia Medicaid outpatient rate. Pricing routes by provider type across WV's outpatient fee schedules: RBRVS, clinical lab, emergency department, outpatient surgery, and ASC.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringHCPCS/CPT code (e.g., 99213).
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringWV Medicaid Provider ID (e.g., '0001258000'). Published for hospitals only; other provider types have none.
provider_name1 requiredstringProvider name (partial match, case-insensitive). Returns rates for all matches.
provider_typestringState Rates provider classification. Values: HOSPITAL, PHYSICIAN, ASC, CLINICAL_LABORATORY, IMAGING_CENTER. If omitted, resolved from the provider's NPI.
modifierstringModifier. Values: 26 (Professional Component), TC (Technical Component), QW (CLIA-waived lab). Matched exactly to a published rate row. For hospital/imaging-center imaging, the TC row is auto-selected when no modifier is passed. RBRVS only.
place_of_servicestringPlace of service (RBRVS only). Values: facility, non_facility. If omitted, the non_facility rate is returned. No effect on lab / ED / surgery / ASC paths.
unitsintegerNumber of 15-minute time units billed. Applies to outpatient surgery codes only, capped at the code's maximum payable units. Ignored for other code types. Defaults to 1.
date_of_servicestringDate of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. Selects the fee schedule in effect on this date.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringProvider NPI.
state_provider_idstringWV Medicaid Provider ID (hospitals only; NULL for non-hospital providers).
provider_namestringProvider name.
provider_typestringState Rates provider classification.
provider_type_labelstringHuman-readable provider type label.
hospital_classstringHospital peer-group classification (HOSPITAL only). Values: RRC, SCH, ACH, MDH and combinations (e.g., 'SCH/RRC').
primary_taxonomy_codestringNPPES primary taxonomy code (non-hospital providers).
primary_taxonomy_display_namestringNPPES primary taxonomy display name.
street_addressstringProvider street address.
citystringProvider city.
countystringProvider county.
statestringProvider state (always 'WV').
zip_codestringProvider ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system. Values: HCPCS, APR-DRG.
billing_code_descriptionstringHuman-readable code description. Populated for HCPCS Level II codes (CMS-sourced); null for CPT (HCPCS Level I) and EAPG/APG codes, whose descriptions are licensed content.
modifierstringModifier on the matched row (e.g., '26', 'TC', 'QW'). Sourced from the row, not the request input.
modifier_adjustmentdecimalMultiplier applied to base_rate to derive payment_rate on a derived modifier row (e.g., 26/TC split). NULL when the rate is published as-is.
base_ratedecimalSource fee-schedule rate before any modifier adjustment. When modifier_adjustment is populated, payment_rate = base_rate × modifier_adjustment; otherwise base_rate equals payment_rate.
place_of_servicestringPlace of service on the matched row (RBRVS only).
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
service_categorystringWhich fee schedule priced the code. Values: physician_rbrvs, clinical_lab, emergency_department, op_surgery, asc.
cbsastringCBSA used to select the ASC rate tab (ASC only), resolved from the provider's county.
per_unit_ratedecimalPer-15-minute-unit rate before the units multiplier (op_surgery only).
units_usedintegerUnits applied to the per-unit rate (op_surgery only), after capping at max_units.
max_unitsintegerMaximum payable 15-minute units for this surgery code (op_surgery only).
unit_max_reimbursementdecimalCeiling reimbursement at max_units (op_surgery only, context).
is_manually_pricedbooleanTRUE when the code is priced case-by-case (carrier/manual/unlisted/cost-invoice). payment_rate NULL with an explanatory message.
is_packagedbooleanTRUE for ASC packaged rows: covered, no separate payment. payment_rate $0.00 with an explanatory message.
date_of_service_useddateThe date of service the rate was priced against, echoed from the request. When you omit date_of_service, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/wv/outpatient/rate?\
  billing_code=99213&\
  npi=1063737765" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1063737765",
    "state_provider_id": null,
    "provider_name": "WEST VIRGINIA PHYSICIANS GROUP",
    "provider_type": "PHYSICIAN",
    "provider_type_label": "Physician",
    "hospital_class": null,
    "primary_taxonomy_code": "207R00000X",
    "primary_taxonomy_display_name": "Internal Medicine",
    "street_address": "100 MAIN ST",
    "city": "HUNTINGTON",
    "county": "CABELL",
    "state": "WV",
    "zip_code": "25701",
    "billing_code": "99213",
    "billing_code_type": "HCPCS",
    "billing_code_description": null,
    "modifier": null,
    "modifier_adjustment": null,
    "base_rate": "63.48",
    "place_of_service": "non_facility",
    "payment_rate": "63.48",
    "payment_rate_type": "fee_schedule",
    "calculation_method": "RBRVS Fee Schedule (Non-Facility) = $63.48",
    "service_category": "physician_rbrvs",
    "cbsa": null,
    "per_unit_rate": null,
    "units_used": null,
    "max_units": null,
    "unit_max_reimbursement": null,
    "is_manually_priced": false,
    "is_packaged": false,
    "date_of_service_used": "2026-08-01",
    "effective_start_date": "2026-04-01",
    "effective_end_date": null
  }
]
POST/wv/outpatient/rate/batch

Look up multiple WV outpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "99213",
      "npi": "1063737765"
    },
    {
      "billing_code": "71046",
      "npi": "1841271459"
    }
  ]
}
GET/wv/inpatient/rate

West Virginia Inpatient Rates

Look up a West Virginia Medicaid MS-DRG inpatient payment rate, with adjustments for cost outliers, transfer per-diem pricing, and same-day and next-day claims. The discharge date determines the effective rate year.

Parameters

NameTypeDescription
reference_idstringA correlation ID (max 128 chars) echoed back unchanged in the response, so you can match each rate result to the source claim or account in your system. **Do NOT pass PHI in this field.** Use a hashed value, UUID, or per-batch synthetic ID; never raw account numbers, MRNs, or claim numbers from your billing or EHR system. State Rates does not log, persist, or inspect this value; it is stripped from request logs and error tracking.
billing_coderequiredstringMS-DRG code (e.g., '470', 'N90').
npi1 requiredstringNational Provider Identifier (10 digits).
state_provider_id1 requiredstringWV Medicaid Provider ID for the hospital (e.g., '0001258000').
provider_name1 requiredstringHospital name (partial match, case-insensitive).
discharge_datestringDischarge date (MM/DD/YYYY or YYYY-MM-DD). Selects the rate year. Defaults to today.
length_of_stayintegerLength of stay in days. Required to price transfer claims correctly: the graduated per-diem is paid per day, and when omitted the calculation assumes a 1-day stay.
transfer_claimbooleanTransfer claim. Discharge status 02 (transferred to another acute-care facility).
same_day_claimbooleanSame-day or next-day claim. Check when admission and discharge fall on the same or next day. Requires total charges.
total_chargesdecimalTotal covered charges (UB-04 FL47). Used for the cost-outlier and same-day calculations.
room_and_board_chargesdecimalRoom and board charges: the sum billed under room-and-board revenue codes. Used on the same-day path.
observation_chargesdecimalObservation charges: the sum billed under the observation revenue code (0762). Used on the same-day path.
observation_hoursdecimalThe number of hours the patient was in observation status. Used on the same-day path.

Returns

FieldTypeDescription
reference_idstringEcho of the `reference_id` from the request (null if not sent). Use this to match each result back to your source claim or account.
rate_foundbooleanWhether a rate was found.
error_messagestringError details if rate not found. Null on success.
npistringHospital NPI.
state_provider_idstringWV Medicaid Provider ID.
provider_namestringHospital name.
provider_typestringProvider type (HOSPITAL).
provider_type_labelstringHuman-readable provider type label.
hospital_classstringHospital peer-group classification. Values: RRC, SCH, ACH, MDH and combinations.
ccnstringMedicare CCN.
market_areastringWV market area (1–6).
street_addressstringHospital street address.
citystringHospital city.
countystringHospital county.
statestringHospital state.
zip_codestringHospital ZIP code.
billing_codestringBilling code submitted.
billing_code_typestringCode system. Values: HCPCS, APR-DRG.
billing_code_descriptionstringHuman-readable code description. Populated for HCPCS Level II codes (CMS-sourced); null for CPT (HCPCS Level I) and EAPG/APG codes, whose descriptions are licensed content.
drg_code_usedstringDRG actually priced. Differs from billing_code when the neonatal remap applies (789–794 → N89–N94 at the four Level III hospitals).
neonatal_remap_appliedbooleanTRUE when billing_code 789–794 was remapped to an N89–N94 Level III neonatal DRG for this hospital.
wv_specific_drgbooleanTRUE for WV-specific Level III neonatal pseudo-DRGs (N89–N94).
grouper_versionstringMedicare MS-DRG grouper version for the rate year (e.g., 'V43').
payment_ratedecimalPayment rate in dollars.
payment_rate_typestringRate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem.
calculation_methodstringHuman-readable calculation formula with actual values.
drg_weightdecimalWV-specific DRG relative weight.
alosdecimalAverage length of stay for the DRG (drives the transfer per-diem).
base_amountdecimalProvider Price Factor: (WV Std Cost × (1 + IME) × Wage Index + Std Cap) × 1.025.
base_paymentdecimalBase DRG payment = base_amount × drg_weight.
wv_std_costdecimalHospital WV standardized cost amount.
std_cap_amtdecimalHospital standardized capital amount.
ime_adjustmentdecimalIndirect medical education adjustment.
wage_index_gafdecimalProvider wage index / geographic adjustment factor.
cost_charge_ratiodecimalHospital cost-to-charge ratio.
outlier_adjustment_appliedbooleanTRUE when a cost-outlier add-on was applied.
outlier_amountdecimalIME/tax-adjusted cost-outlier add-on included in the payment.
outlier_thresholddecimalCost-outlier threshold = (WV Std Cost × weight + $112,918) × Wage Index.
estimated_costdecimalEstimated cost = total charges × adjusted CCR.
adjusted_cost_charge_ratiodecimalCCR ÷ (1 + IME), used to estimate cost for the outlier.
total_charges_useddecimalTotal charges used in the outlier / same-day calculation.
outlier_notestringSet when the cost outlier could not be computed; e.g., discharges before 2025-10-01 (RY2026), where the historical outlier constants are not published.
transfer_adjustment_appliedbooleanTRUE when transfer per-diem pricing was applied.
transfer_payment_amountdecimalGraduated per-diem transfer payment (before the lesser-of comparison).
per_diem_amountdecimalPer-diem = (base + outlier) ÷ ALOS.
first_day_per_diemdecimalFirst-day per-diem = 3 × per-diem.
length_of_stay_usedintegerDays used for the transfer per-diem.
transfer_full_drg_exceptionbooleanTRUE when the transfer full-DRG exception applied (neonate transfer/death or burn DRG): the full DRG is paid despite the transfer.
same_day_appliedbooleanTRUE when same-day/next-day lesser-of pricing was applied.
same_day_payment_amountdecimalSame-day payment = ancillary × CCR + $10 × obs hours + $245 (before the lesser-of comparison).
total_ancillary_chargesdecimalTotal charges − room & board − observation charges (same-day path).
room_and_board_useddecimalRoom & board charges used in the same-day calculation (subtracted from total charges to get ancillary).
observation_charges_useddecimalObservation charges used in the same-day calculation (subtracted from total charges to get ancillary).
observation_hours_useddecimalObservation hours used in the same-day calculation.
same_day_notestringSet when the same-day path could not be computed; e.g., discharges before 2025-10-01 (RY2026).
discharge_date_useddateThe discharge date the rate was priced against, echoed from the request. When you omit discharge_date, this returns the server default (today), so the resolved date is always visible.
effective_start_datedateRate period start date.
effective_end_datedateRate period end date. Null if currently active.
Request
curl "https://staterates.health/api/v1/wv/inpatient/rate?\
  billing_code=470&\
  npi=1841271459&\
  discharge_date=2025-11-15" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
[
  {
    "rate_found": true,
    "error_message": null,
    "npi": "1841271459",
    "state_provider_id": "0001258000",
    "provider_name": "WEST VIRGINIA UNIVERSITY HOSPITALS",
    "provider_type": "HOSPITAL",
    "provider_type_label": "Hospital",
    "hospital_class": "RRC",
    "ccn": "510001",
    "market_area": "6",
    "street_address": "1 MEDICAL CENTER DR",
    "city": "MORGANTOWN",
    "county": "MONONGALIA",
    "state": "WV",
    "zip_code": "26506",
    "billing_code": "470",
    "billing_code_type": "MS-DRG",
    "billing_code_description": "MAJOR HIP AND KNEE JOINT REPLACEMENT OR REATTACHMENT OF LOWER EXTREMITY WITHOUT MCC",
    "drg_code_used": "470",
    "neonatal_remap_applied": false,
    "wv_specific_drg": false,
    "grouper_version": "V43",
    "payment_rate": "11188.66",
    "payment_rate_type": "claim",
    "calculation_method": "$5,402.02 (Provider Price Factor) × 2.0712 (DRG Weight) = $11,188.66 (Total Payment)",
    "drg_weight": "2.0712",
    "alos": "1.30",
    "base_amount": "5402.02",
    "base_payment": "11188.66",
    "wv_std_cost": "4211.47",
    "std_cap_amt": "436.66",
    "ime_adjustment": "0.165320",
    "wage_index_gaf": "0.9849",
    "cost_charge_ratio": "0.2590",
    "outlier_adjustment_applied": false,
    "outlier_amount": null,
    "outlier_threshold": null,
    "estimated_cost": null,
    "adjusted_cost_charge_ratio": null,
    "total_charges_used": null,
    "outlier_note": null,
    "transfer_adjustment_applied": false,
    "transfer_payment_amount": null,
    "per_diem_amount": null,
    "first_day_per_diem": null,
    "length_of_stay_used": null,
    "transfer_full_drg_exception": false,
    "same_day_applied": false,
    "same_day_payment_amount": null,
    "total_ancillary_charges": null,
    "room_and_board_used": null,
    "observation_charges_used": null,
    "observation_hours_used": null,
    "same_day_note": null,
    "discharge_date_used": "2025-11-15",
    "effective_start_date": "2025-10-01",
    "effective_end_date": null
  }
]
POST/wv/inpatient/rate/batch

Look up multiple WV inpatient rates in a single POST request. Maximum 1,000 lookups per batch.

Batch request
{
  "requests": [
    {
      "billing_code": "470",
      "npi": "1841271459",
      "discharge_date": "2025-11-15"
    },
    {
      "billing_code": "470",
      "npi": "1841271459",
      "discharge_date": "2025-11-15",
      "total_charges": "900000",
      "transfer_claim": false
    }
  ]
}
GET/wv/providers/search

West Virginia Provider Search

Search for West Virginia Medicaid providers by NPI, WV Medicaid Provider ID (hospitals only), name, location, taxonomy, provider type, or hospital class. Returns provider details with rate availability.

Parameters

NameTypeDescription
npistringNational Provider Identifier (10 digits).
state_provider_idstringWV Medicaid Provider ID (hospitals only).
provider_namestringProvider name (partial match, case-insensitive).
citystringCity (partial match).
countystringCounty (partial match).
zip_codestringZIP code (exact match).
taxonomystringNUCC taxonomy display name (partial match, non-hospital).
provider_typestringState Rates provider classification. Values: HOSPITAL, PHYSICIAN, ASC, CLINICAL_LABORATORY, IMAGING_CENTER.
hospital_classstringHospital classification filter (HOSPITAL only), matched exactly. Values: ACH, RRC, SCH, MDH, EACH/RRC, MDH/RRC, SCH/RRC.
limitintegerMax results (default 100, max 1000).

Returns

FieldTypeDescription
providersarrayList of matching providers.
npistringProvider NPI.
state_provider_idstringWV Medicaid Provider ID (hospitals only; NULL for non-hospital providers).
provider_namestringProvider name.
provider_typestringState Rates provider classification.
provider_type_labelstringHuman-readable provider type label.
entity_typestringIndividual or Organization (always 'Organization' for HOSPITAL).
primary_taxonomystringNPPES primary taxonomy display name (non-hospital).
hospital_classstringHospital peer-group classification (HOSPITAL only). Values: RRC, SCH, ACH, MDH and combinations.
street_addressstringStreet address.
citystringCity.
countystringCounty.
statestringState.
zip_codestringZIP code.
op_ratesbooleanHas outpatient rates.
ip_ratesbooleanHas inpatient rates.
total_resultsintegerTotal results found.
limit_appliedintegerLimit applied.
Request
curl "https://staterates.health/api/v1/wv/providers/search?\
  provider_name=huntington&\
  provider_type=HOSPITAL" \
  -H "Authorization: Bearer YOUR_API_KEY"
Sample response
{
  "providers": [
    {
      "npi": "1073518007",
      "state_provider_id": "0001144000",
      "provider_name": "CABELL HUNTINGTON HOSPITAL",
      "provider_type": "HOSPITAL",
      "provider_type_label": "Hospital",
      "entity_type": "Organization",
      "primary_taxonomy": null,
      "hospital_class": "RRC",
      "street_address": "1340 HAL GREER BLVD",
      "city": "HUNTINGTON",
      "county": "CABELL",
      "state": "WV",
      "zip_code": "25701",
      "op_rates": true,
      "ip_rates": true
    }
  ],
  "total_results": 1,
  "limit_applied": 100
}

Errors

StatusCommon codeMeaning
400api_key_in_queryKey sent in a URL query string. Put it in the Authorization header.
401missing_api_keyNo Authorization header or the Bearer scheme is missing.
401invalid_api_keyKey is unknown, revoked, or past its expiry.
403state_not_enabledYour key isn't scoped to the state you called. Email support to add it.
404Endpoint path doesn't exist. Check the URL against the reference above.
422Request parsed but violated a schema rule (e.g. batch over 1000 items). See detail for field-level errors.
429token_bucket_exceededToken bucket exhausted for the current billing period, or per-key burst limit tripped (burst 429s have no JSON body). See Rate Limits.
500Our bug. Don't retry blindly. Email support with the timestamp.
502API briefly unreachable (usually a deploy restart). Safe to retry after ~5s.
Error response
{
  "detail": {
    "error": {
      "type": "authentication_error",
      "code": "invalid_api_key",
      "message": "Invalid or revoked API key"
    }
  }
}

Rate Limits & Quotas

Two limits, both return 429:

  1. Short-term throttle: 1 request per second per key, with bursts up to 30. Go over and you'll get a 429; wait a second and try again.
  2. Token bucket: each org gets a contract-sized token bucket that pools across every state on the key. Costs per call: 1 token per inpatient rate, 0.25 tokens per outpatient line item,1 token per whole outpatient claim,0 tokens for provider search. A 500-IP-claim batch costs 500 tokens; the same shape of OP batch costs 125. When the bucket runs out you'll get a 429 with a JSON body showing exactly where you stand.

Every metered 2xx and 429 response includes these headers so you can monitor headroom:

X-RateLimit-Reset is the timestamp your current bucket expires. Provider search responses carry no rate-limit headers (the call is free).

If a batch would push you over the bucket, the entire batch is rejected; no partial fulfillment. The requested / remaining / resets_at fields let you split the batch and retry precisely.

Rate-limit headers
X-RateLimit-Limit:     1000
X-RateLimit-Remaining: 873.75
X-RateLimit-Reset:     2026-07-01T00:00:00Z
429 token-bucket body
{
  "detail": {
    "error": {
      "type": "rate_limit_error",
      "code": "token_bucket_exceeded",
      "message": "Token bucket exhausted for this billing period",
      "state": "TX",
      "requested": "125.00",
      "remaining": "73.50",
      "resets_at": "2026-07-01T00:00:00+00:00"
    }
  }
}