Medicaid Rate API
Programmatic access to Medicaid reimbursement rates across California, Florida, New York, Ohio, and Texas. 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
Request access
Fill out the form and we'll set up your account. Usually same-day.
Get your API key
We'll send you an API key. Evaluating? We offer trial keys on request.
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.
curl "https://api.staterates.health/api/v1/ca/outpatient/rate?billing_code=99213&npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
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, "admit_date": "2026-03-01",
}]
print(price_claims(claims))/ca/outpatient/rateCalifornia Outpatient Rates
Look up a Medi-Cal fee schedule rate by HCPCS code and provider. Returns the payment rate with full calculation detail including conversion factors, HOPD multipliers, and modifier adjustments.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | HCPCS procedure code (e.g., 99213). |
npi1 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | OSHPD ID — California hospital identifier. |
provider_name1 required | string | Provider name (partial match, min 2 characters). Returns rates for all matches. |
provider_type | string | StateRates provider classification. Values: hospital, physician_office, surgical_clinic, free_clinic, podiatrist, nurse_anesthetist, other_clinic. If omitted, resolved from provider's taxonomy. |
procedure_type | string | Medi-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_type | string | Medi-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_patient | boolean | True if patient is under 21 years of age. Defaults to false (adult). |
family_planning_primary_dx | boolean | True if billed with a primary family planning diagnosis code. Adds 90.9% to the rate for qualifying E&M codes. |
emergency_room | boolean | True to use ER pricing. ER rates use a higher conversion factor with no HOPD add-on or cutback. |
modifier | string | HCPCS modifier. Values: 26 (Professional Component), TC (Technical Component). |
date_of_service | string | Date of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
state_provider_id | string | OSHPD ID (hospitals) or Medi-Cal Provider Number (professionals). |
provider_name | string | Provider name. |
provider_type | string | StateRates provider classification used for rate lookup. Values: hospital, physician_office, surgical_clinic, free_clinic, podiatrist, nurse_anesthetist, other_clinic. |
provider_type_label | string | Human-readable label for the StateRates provider classification (e.g., Hospital, Physician Office). |
cbsa_code | string | Core Based Statistical Area code. |
cbsa_description | string | CBSA area description. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
basic_rate | decimal | Basic rate (unit value) from fee schedule. |
conversion_factor | decimal | Conversion factor applied to basic rate. |
modifier | string | HCPCS modifier applied (e.g., 26, TC). |
modifier_adjustment | decimal | Modifier adjustment factor (e.g., 0.29 for 26, 0.71 for TC). |
cutback_ind | integer | Cutback indicator (1 = 20% reduction applied to hospital/surgical clinic rates). |
hopd_multiplier | float | Hospital Outpatient Department add-on multiplier (1.4344) when applied. |
family_planning_multiplier | float | Family Planning add-on multiplier (1.909) when applied. |
emergency_room | boolean | True if emergency room conversion factor was applied. |
procedure_type_used | string | Procedure type used for pricing. |
service_type_used | string | Service type used for pricing. |
is_default_selection | boolean | True if the API auto-selected the procedure/service type because none was specified. |
available_procedure_types | string[] | Other procedure types available for this code. Only present when defaults were used. |
available_service_types | string[] | Other service types available for this code. Only present when defaults were used. |
is_manually_priced | boolean | True if code has no fee schedule rate — payment determined per claim. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/ca/outpatient/rate?\ billing_code=99213&\ npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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": "OFFICE/OUTPATIENT VISIT EST",
"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,
"effective_start_date": "2025-01-01",
"effective_end_date": null
}
]/ca/outpatient/rate/batchLook up multiple rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"npi": "1234567890",
"billing_code": "99213"
},
{
"npi": "1234567890",
"billing_code": "99214",
"child_patient": true
}
]
}/ca/inpatient/rateCalifornia Inpatient Rates
Look up a Medi-Cal APR-DRG inpatient payment rate. Payment = DRG Base Rate × Payment Relative Weight, with adjustments for transfers, cost outliers, and interim claims. California uses the admission date to determine the effective rate period.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | APR-DRG code (e.g., 593-4 for DRG 593, SOI 4). |
npi1 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | OSHPD ID — California hospital identifier. |
provider_name1 required | string | Hospital name (partial match). |
soi | integer | Severity of Illness (1–4). If omitted, returns rates for all 4 SOI levels. |
admit_date | string | Admission date (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. California uses the admission date to determine which rate period applies. |
transfer_claim | boolean | Is this the transferring hospital's claim? Applies per-diem transfer adjustment. |
interim_claim | boolean | Discharge status = 30 (interim claim). Uses per-diem calculation. |
child_patient | boolean | True if patient is under 21 years of age. Defaults to false (adult). |
length_of_stay | integer | Length of stay in days. If omitted, defaults to the national average LOS for this APR-DRG. |
total_charges | decimal | Total charges from the claim. If omitted, charges are estimated for outlier calculations. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
state_provider_id | string | OSHPD ID — California hospital identifier. |
provider_name | string | Provider name. |
street_address | string | Hospital street address. |
city | string | Hospital city. |
zip_code | string | Hospital ZIP code. |
county | string | Hospital county. |
cbsa_code | string | CBSA code. |
cbsa_description | string | CBSA area description. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
apr_drg | string | APR-DRG code. |
soi | integer | Severity of Illness level (1–4). |
grouper_version | string | APR-DRG grouper version. |
mdc_code | string | Major Diagnostic Category code. |
mdc_description | string | Major Diagnostic Category description. |
drg_base_rate | decimal | Hospital-specific DRG base rate (wage-adjusted). |
payment_relative_weight | float | Payment relative weight (casemix weight × policy adjustor). |
casemix_adjustment_factor | float | Hospital casemix adjustment factor. |
policy_adjustor_used | string | Policy adjustor letter used. Values: A, B, C, D (based on age and NICU status). |
policy_adjustor_value | float | Policy adjustor numeric value. |
designated_nicu | boolean | Whether the hospital is a designated NICU facility. |
estimated_cost | decimal | Estimated cost (total_charges × cost_to_charge_ratio). |
drg_base_payment | decimal | Base DRG payment before adjustments. |
transfer_adjustment_applied | boolean | Whether transfer adjustment was applied. |
transfer_adjusted_amount | decimal | Payment after transfer adjustment. |
outlier_adjustment_applied | boolean | Whether cost outlier adjustment was applied. |
outlier_adjustment_amount | decimal | Outlier adjustment amount. |
cost_to_charge_ratio | float | Hospital cost-to-charge ratio. |
outlier_threshold | float | Outlier threshold amount ($99,000). |
marginal_cost_percentage | float | Marginal cost percentage applied to outlier excess (0.53). |
charge_cap_applied | boolean | Whether payment was capped to total charges (lesser-of rule). |
is_interim_claim | boolean | Whether calculated as an interim claim. |
interim_per_diem_amount | float | Per diem rate for interim claim calculation. |
length_of_stay_used | integer | Length of stay used in calculation. |
national_average_los | decimal | National average LOS for this APR-DRG. |
total_charges_used | decimal | Total charges used (actual or estimated). |
total_charges_source | string | Whether charges were 'actual' or 'estimated'. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
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"
[
{
"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",
"billing_code_description": "NEONATE BWT >2499G, NORMAL NEWBORN OR NEONATE W OTHER PROBLEM",
"payment_rate": "194522.35",
"payment_rate_type": "claim",
"calculation_method": "standard_drg_payment",
"apr_drg": "593",
"soi": 4,
"grouper_version": "41",
"mdc_code": "15",
"mdc_description": "Newborns And Other Neonates",
"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",
"effective_start_date": "2025-07-01",
"effective_end_date": null
}
]/ca/inpatient/rate/batchLook up multiple CA inpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"billing_code": "593-4",
"npi": "1234567890"
},
{
"billing_code": "194-1",
"npi": "9876543210",
"length_of_stay": 5,
"total_charges": "85000",
"child_patient": true
}
]
}/ca/providers/searchCalifornia Provider Search
Search for California Medicaid providers by NPI, OSHPD ID, name, location, or taxonomy. Returns provider details with outpatient/inpatient rate availability.
Parameters
| Name | Type | Description |
|---|---|---|
npi | string | National Provider Identifier (10 digits). |
state_provider_id | string | OSHPD ID or Medi-Cal Provider Number. |
provider_name | string | Provider name (partial match, min 2 characters). |
city | string | City (partial match). |
zip_code | string | ZIP code (exact match). |
taxonomy | string | Taxonomy code filter. |
provider_type | string | StateRates provider classification. Values: hospital, physician_office, surgical_clinic, free_clinic, podiatrist, nurse_anesthetist, other_clinic. |
limit | integer | Max results (default 100, max 1000). |
Returns
| Field | Type | Description |
|---|---|---|
providers | array | List of matching providers. |
↳npi | string | Provider NPI. |
↳state_provider_id | string | OSHPD ID or Medi-Cal Provider Number. |
↳provider_name | string | Provider name. |
↳provider_type | string | StateRates provider classification. |
↳provider_type_label | string | Human-readable label for the StateRates provider classification. |
↳entity_type | string | Individual or Organization. |
↳primary_taxonomy | string | Primary taxonomy code. |
↳city | string | City. |
↳state | string | State. |
↳zip_code | string | ZIP code. |
↳street_address | string | Street address. |
↳cbsa_code | string | CBSA code. |
↳cbsa_description | string | CBSA area description. |
↳op_rates | boolean | Has outpatient rates. |
↳ip_rates | boolean | Has inpatient rates. |
total_results | integer | Total number of results found. |
limit_applied | integer | Limit applied to results. |
curl "https://staterates.health/api/v1/ca/providers/search?\ provider_name=community&\ city=los+angeles" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"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
}/fl/outpatient/rateFlorida Outpatient Rates
Look up a Florida Medicaid outpatient rate. Supports two methodologies: HCPCS fee schedule rates (professional) and EAPG-based hospital payments. HCPCS codes return fee schedule rates; EAPG codes require a hospital identifier for per-provider payment calculation.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | HCPCS code (e.g., 99213) or EAPG code (e.g., 00002). |
billing_code_type | string | Code type filter. Values: HCPCS, EAPG. If omitted, returns results for all matching types. |
npi1 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | FL Provider Base ID. |
provider_name1 required | string | Provider name (partial match). Returns rates for all matches. |
provider_type | string | StateRates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC. |
modifier | string | Modifier for component selection. Values: 26 (Professional), TC (Technical). |
place_of_service | string | Place of service. Values: facility, non_facility. Facility POS codes (19, 21, 22, 23, 24) use the facility rate. Defaults to non-facility. |
child_patient | boolean | True if patient is under 21 years of age. Defaults to false (adult). |
date_of_service | string | Date of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. |
paf_* | boolean | EAPG Payment Adjustor Flags (hospital only): paf_multiple_significant, paf_same_significant, paf_clinical_significant, paf_packaging, paf_repeat_ancillary, paf_bilateral, paf_terminated. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
state_provider_id | string | FL Provider Base ID. |
provider_name | string | Provider name. |
provider_type | string | StateRates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC. |
provider_type_label | string | Human-readable label for the StateRates provider classification. |
fl_provider_type_code | string | Florida'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_description | string | Florida's description for the provider type code. |
fl_specialty_code | string | Florida's own provider specialty code from source files (e.g., 01 = General Practice, 65 = Maternal Fetal Medicine). |
fl_specialty_description | string | Florida's description for the specialty code. |
hospital_class | string | Hospital category (EAPG only). |
street_address | string | Provider street address. |
city | string | Provider city. |
county | string | Provider county. |
zip_code | string | Provider ZIP code. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
modifier | string | Modifier applied (sourced from the matched rate row, not request input). |
modifier_adjustment | decimal | Derived 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_service | string | 'non_facility' / 'facility' on PRACTITIONER rows where the source has the distinction; NULL on PCI/TCI / lab / EAPG rows. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
prior_auth_required | boolean | Prior authorization required. |
specialty_multiplier | float | Specialty-based rate multiplier. |
age_multiplier_applied | decimal | Age multiplier if applied. |
provider_type_multiplier_applied | decimal | Provider type multiplier (0.80 for APRN/PA). |
eapg_weight | decimal | EAPG relative weight (hospital only). |
eapg_type | string | EAPG type code. |
eapg_type_description | string | EAPG type description. |
eapg_category | string | EAPG category code. |
eapg_category_description | string | EAPG category description. |
eapg_base_rate | decimal | Hospital-specific EAPG base rate. |
eapg_policy_adjustor | decimal | Hospital policy adjustor. |
eapg_childrens_addon | decimal | Children's hospital add-on. |
paf_multiple_significant | decimal | PAF: Multiple Significant Procedures adjustment. |
paf_same_significant | decimal | PAF: Same Significant Procedure adjustment. |
paf_clinical_significant | decimal | PAF: Clinical Significant Procedure adjustment. |
paf_packaging | decimal | PAF: Packaging adjustment. |
paf_repeat_ancillary | decimal | PAF: Repeat Ancillary adjustment. |
paf_bilateral | decimal | PAF: Bilateral adjustment. |
paf_terminated | decimal | PAF: Terminated Procedure adjustment. |
paf_adjustment | decimal | Combined PAF adjustment factor (product of selected flags). |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/fl/outpatient/rate?\ billing_code=99213&\ npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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": "OFFICE/OUTPATIENT VISIT EST",
"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_type": null,
"eapg_type_description": null,
"eapg_category": null,
"eapg_category_description": 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,
"effective_start_date": "2024-07-01",
"effective_end_date": null
}
]/fl/outpatient/rate/batchLook up multiple FL outpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"billing_code": "99213",
"npi": "1234567890"
},
{
"billing_code": "99214",
"npi": "1234567890",
"child_patient": true
}
]
}/fl/inpatient/rateFlorida Inpatient Rates
Look up a Florida Medicaid APR-DRG inpatient payment rate. Payment = Statewide Base Rate × FL Weight × MAX(service, age, provider adjustor) + Children's Hospital Add-On. Florida uses the discharge date to determine the effective rate period.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | APR-DRG code (e.g., 140 or 140-2). |
npi1 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | FL Provider Base ID. |
provider_name1 required | string | Hospital name (partial match). |
soi | integer | Severity of Illness (1–4). If omitted, returns rates for all SOI levels. |
discharge_date | string | Discharge 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_claim | boolean | Is this the transferring hospital's claim? |
child_patient | boolean | True if patient is under 21 years of age. Defaults to false (adult). |
length_of_stay | integer | Length of stay in days. Defaults to average LOS. |
total_charges | decimal | Total charges for outlier calc and charge cap. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
state_provider_id | string | FL Provider Base ID. |
provider_name | string | Provider name. |
hospital_class | string | Provider category. Values: All Other, Rural, LTAC, Childrens, Teaching. |
trauma_class | string | Trauma designation. Values: Level I, Level II, Pediatric. Null if not a trauma center. |
street_address | string | Hospital street address. |
city | string | Hospital city. |
county | string | Hospital county. |
zip_code | string | Hospital ZIP code. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
apr_drg_code | string | Base DRG code. |
soi | integer | Severity of Illness (1–4). |
grouper_version | string | APR-DRG grouper version. |
mdc_code | string | Major Diagnostic Category code. |
mdc_description | string | Major Diagnostic Category description. |
fl_relative_weight | decimal | Florida-specific DRG weight. |
national_relative_weight | decimal | National DRG weight (reference). |
mean_los | decimal | Average length of stay for this DRG. |
service_adjustor | decimal | Service adjustor (1.0 or 1.3 for neonatal). |
age_adjustor | decimal | Age adjustor (applied when age < 21). |
pediatric_service_line | string | Pediatric service line classification. |
adult_service_line | string | Adult service line classification. |
provider_adjustor | decimal | Provider category adjustor. |
max_adjustor_used | decimal | MAX(service, age, provider) adjustor used. |
statewide_base_rate | decimal | FL statewide base rate. |
base_payment | decimal | Base payment: base_rate × weight × max_adjustor. |
trauma_enhancement_amount | decimal | Trauma enhancement amount. |
childrens_addon | decimal | Children's hospital add-on (source value). |
childrens_addon_amount | decimal | Actual children's add-on calculated. |
transfer_adjustment_applied | boolean | Whether transfer adjustment was applied. |
transfer_adjusted_amount | decimal | Payment after transfer adjustment. |
outlier_adjustment_applied | boolean | Whether cost outlier was applied. |
outlier_amount | decimal | Cost outlier adjustment amount. |
outlier_threshold | float | Cost outlier threshold ($60,000). |
marginal_cost_pct | float | Marginal cost percentage (0.60 or 0.80). |
charge_cap_applied | boolean | Whether payment was capped at total charges. |
cost_to_charge_ratio | decimal | Hospital CCR for outlier calc. |
casemix | decimal | Hospital casemix index. |
length_of_stay_used | integer | LOS used in calculation. |
total_charges_used | decimal | Total charges used. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/fl/inpatient/rate?\ billing_code=140-2&\ npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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",
"billing_code_description": "CHRONIC OBSTRUCTIVE PULMONARY DISEASE",
"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,
"grouper_version": "41",
"mdc_code": "04",
"mdc_description": "Diseases And Disorders Of The Respiratory System",
"fl_relative_weight": "0.8500",
"national_relative_weight": "0.8200",
"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,
"effective_start_date": "2024-07-01",
"effective_end_date": null
}
]/fl/inpatient/rate/batchLook up multiple FL inpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"billing_code": "140-2",
"npi": "1234567890"
},
{
"billing_code": "640-1",
"npi": "9876543210",
"length_of_stay": 3,
"total_charges": "45000"
}
]
}/fl/providers/searchFlorida 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
| Name | Type | Description |
|---|---|---|
npi | string | National Provider Identifier (10 digits). |
state_provider_id | string | FL Provider Base ID. |
provider_name | string | Provider name (partial match). |
city | string | City (partial match). |
county | string | County (partial match). |
taxonomy | string | Taxonomy code filter. |
provider_type | string | StateRates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC. |
limit | integer | Max results (default 100, max 1000). |
Returns
| Field | Type | Description |
|---|---|---|
providers | array | List of matching providers. |
↳npi | string | Provider NPI. |
↳state_provider_id | string | FL Provider Base ID. |
↳provider_name | string | Provider name. |
↳provider_type | string | StateRates provider classification. Values: PRACTITIONER, HOSPITAL, INDEPENDENT_LAB, ASC. |
↳provider_type_label | string | Human-readable label for the StateRates provider classification. |
↳entity_type | string | Individual or Organization. |
↳primary_taxonomy | string | Primary taxonomy code. |
↳street_address | string | Street address. |
↳city | string | City. |
↳state | string | State. |
↳zip_code | string | ZIP code. |
↳county | string | County. |
↳provider_category | string | FL provider category. |
↳op_rates | boolean | Has outpatient rates. |
↳ip_rates | boolean | Has inpatient rates. |
total_results | integer | Total results found. |
limit_applied | integer | Limit applied. |
curl "https://staterates.health/api/v1/fl/providers/search?\ provider_name=jackson&\ city=miami" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"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
}/ny/outpatient/rateNew York Outpatient Rates
Look up a NY Medicaid outpatient rate. Methodologies are routed by provider type: Hospital, D&TC, and ASC APGs (APG Base Rate × APG Weight), as well as eMedNY Physician and Lab fee schedules.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | HCPCS code (e.g., 99213) or APG code. |
npi1 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | NY Medicaid Provider ID (MMIS, 8-digit). NY's state-issued billing identifier — universal across professionals and hospitals. |
opcert1 required | string | Hospital-only NY operating certificate. Not all NY providers have one. |
provider_name1 required | string | Provider name (partial match, case-insensitive). |
provider_type | string | NY provider type filter. Values: HOSPITAL, PHYSICIAN, OUTPATIENT_CLINIC_ASC, LABORATORY. If omitted, returns rates across all matching provider types. |
rate_code | string | NY 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_region | string | D&TC/ASC only. Values: Downstate, Upstate. Disambiguates the ~6 multi-region D&TC providers; auto-detected from provider address otherwise. |
modifier | string | Modifier (PHYSICIAN HCPCS only). Values: 26 (Professional Component), TC (Technical Component). NY pre-multiplies at the data layer; modifier_adjustment carries the multiplier. |
place_of_service | string | Place of service (PHYSICIAN HCPCS only). Values: facility, non_facility. If omitted, returns the source default row (typically non_facility). |
date_of_service | string | Date 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
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
state_provider_id | string | NY Medicaid Provider ID (MMIS, 8-digit). |
opcert | string | NY Operating Certificate number. NULL for non-hospitals. |
provider_name | string | Provider name. |
provider_type | string | NY provider type. Values: HOSPITAL, PHYSICIAN, OUTPATIENT_CLINIC_ASC, LABORATORY. |
provider_type_label | string | Human-readable provider type. |
ny_profession_or_service | string | NY-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_specialty | string | NY-published specialty sub-classification (comma-delimited title case). Examples: Cardiology, Geriatric Medicine, General Dentistry. |
primary_taxonomy_code | string | NPPES primary taxonomy code (NUCC standard). |
primary_taxonomy_display_name | string | NPPES primary taxonomy display name (NUCC-enriched). |
street_address | string | Provider street address. |
city | string | Provider city. |
county | string | Provider county. |
state | string | Provider state (typically 'NY'). |
zip_code | string | Provider ZIP code. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
rate_code | string | NY 4-digit rate code echoed from request. |
modifier | string | Modifier applied (e.g., 26, TC). |
modifier_adjustment | decimal | Multiplier applied to base rate (PHYSICIAN modifier 26 / TC rows where NY pre-multiplies). |
place_of_service | string | Place of service used. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
apg_weight | decimal | APG relative weight (Solventum 3M v3.17, NY-branded as APG). |
px_based_weight | decimal | HCPCS procedure-overlay weight (OT/PT/SLP/nutrition codes). |
apg_base_rate_used | decimal | APG base rate applied (Hospital APG path or D&TC/ASC peer-group rate). |
apg_base_rate_source_column | string | Which 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_operating | decimal | Operating portion of payment_rate (apg_weight × apg_base_rate_used). D&TC/ASC + Hospital APG paths. |
payment_capital | decimal | Capital add-on per visit (D&TC/ASC only; per-NPI, ~$27 average). Hospital APG capital is bundled into the base rate. |
capital_anomaly | boolean | TRUE when the NPI's published capital add-on falls outside the expected range — surfaces data-quality outliers for review. |
service_region | string | Region used for D&TC/ASC base-rate resolution: Downstate or Upstate. Echoed from request when supplied; otherwise auto-detected. |
units_limit | decimal | Per-claim units limit (when published). |
anesthesia_base_units | decimal | Anesthesia 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_priced | boolean | TRUE for 'By Report' sentinel codes (payment_rate=NULL with explanatory message). |
prior_auth_required | boolean | TRUE when the code requires prior authorization. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/ny/outpatient/rate?\ billing_code=99213&\ npi=1407957863" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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": "OFFICE/OUTPATIENT VISIT EST",
"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,
"effective_start_date": "2024-01-01",
"effective_end_date": null
}
]/ny/outpatient/rate/batchLook up multiple NY outpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"billing_code": "99213",
"npi": "1407957863"
},
{
"billing_code": "76700",
"npi": "1407957863",
"modifier": "26"
},
{
"billing_code": "80048",
"npi": "1629737200"
}
]
}/ny/inpatient/rateNew York Inpatient Rates
Look up a NY Medicaid inpatient rate. Pricing is routed by service type: Acute APR-DRG (DRG × SIW per case), Exempt Psychiatric (per-diem with age, intellectual disability, and comorbidity factors + LOS scaling), and six per-diem categories (Medical Rehab, CAH, Chemical Dependency Rehab, Adult/Child Dual Diagnosis, Specialty Acute). Payer class (FFS or Managed Medicaid) selects the rate schedule.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | APR-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 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | NY Medicaid Provider ID (MMIS, 8-digit). NY's state-issued billing identifier — universal across professionals and hospitals. |
opcert1 required | string | Hospital-only NY operating certificate. Not all NY providers have one. |
provider_name1 required | string | Hospital name (partial match, case-insensitive). |
service_type | string | What 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_code | string | Optional 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. |
soi | integer | Severity of Illness 1-4 (acute / psychiatric only). Defaults from billing_code suffix (e.g., '140-2' → soi=2) when present. |
payer_class | string | Payer 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_date | string | Discharge date (MM/DD/YYYY or YYYY-MM-DD). Drives all parameter lookups (DRG weights, base rates, MMC adjustments) per NY Inpatient Billing Guidelines §2.3.1.2. Defaults to today. |
length_of_stay | integer | Length of stay in days. Required for psychiatric and per-diem service types; optional for acute (used only for transfer calculations). |
alc_days | integer | Days 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_charges | decimal | Billed charges (acute only). Required to evaluate cost-outlier eligibility per 10 NYCRR §86-1.21. |
transfer_out | boolean | True if this hospital transferred the patient to another facility. Acute only — payment is capped at per-diem × LOS × 1.20. |
age_group | string | Psychiatric 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_disability | boolean | Psychiatric only. True if the patient has an Intellectual Disability diagnosis. Applies 1.0599 MR factor (max 1× per case). |
comorbidity_category | string | Psychiatric 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_treatments | integer | Psychiatric only. Number of electroconvulsive therapy treatments delivered during the stay. |
prior_admission_within_30d | boolean | Psychiatric only. True if the patient was discharged from a NY psych unit within the prior 30 days. Shifts LOS scaling per NY guidelines §2.3.1.2. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Hospital NPI. |
state_provider_id | string | NY Medicaid Provider ID (MMIS). |
opcert | string | NY Operating Certificate number. |
provider_name | string | Hospital name. |
provider_type_label | string | Human-readable provider type (always 'Hospital' for NY IP). |
primary_taxonomy_code | string | NPPES primary taxonomy code (NUCC standard). |
primary_taxonomy_display_name | string | NPPES primary taxonomy display name (NUCC-enriched). |
street_address | string | Hospital street address. |
city | string | Hospital city. |
county | string | Hospital county. |
state | string | Hospital state. |
zip_code | string | Hospital ZIP. |
billing_code | string | User-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_type | string | '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_description | string | DRG description (acute/psychiatric) or service-type description (per-diem). |
billing_code_used_in_calculation | boolean | FALSE 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_code | string | NY rate code echoed from request. |
service_type | string | Resolved service type used for calculation. |
service_type_source | string | How service_type was determined. Values: explicit, inferred_from_rate_code, inferred_from_drg, sole_provider_certification, default_acute. |
apr_drg_code | string | APR-DRG code (acute/psychiatric only). |
soi | integer | Severity of Illness 1-4. |
mdc_code | string | Major Diagnostic Category code. |
mdc_description | string | MDC description. |
grouper_version | string | APR-DRG grouper version (NY: '34', frozen 7/1/2018 through SFY 2025-26). |
payer_class | string | Payer class echoed. Values: FFS, MMC. |
payer_class_label | string | Human-readable payer class: 'Fee-for-Service' or 'Managed Medicaid'. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
siw | decimal | Acute APR-DRG Service Intensity Weight. |
psych_siw | decimal | Psychiatric APR-DRG SIW (separate from acute SIW). |
alos | decimal | Average Length of Stay. Surfaced only on transfer cases (used in the transfer per-diem calc). |
statewide_base_price_used | decimal | Statewide base price for the payer class (acute) — background context, not a formula input. |
isaf_used | decimal | Input Service Adjustment Factor (acute). Surfaced only when a cost outlier is being evaluated. |
discharge_rate_used | decimal | Discharge Case Payment Rate for the matched hospital × payer class × period. |
dme_used | decimal | Direct 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_used | decimal | Capital per discharge for the payer class (acute). |
capital_per_diem_used | decimal | Capital per diem (acute). Surfaced only on transfer cases (consumed via the transfer per-diem calc). |
high_cost_cc_used | decimal | Cost-to-charge ratio. Surfaced only when a cost outlier is being evaluated. |
base_dr_payment | decimal | Computed: discharge_rate × siw (acute pre-add-ons). |
is_outlier_case | boolean | TRUE when the cost-outlier rule fired. Suppressed (null) when not applicable — only surfaced as a positive callout. |
cost_of_case | decimal | gross_charges × high_cost_cc (acute outlier). |
cost_outlier_threshold | decimal | Per-DRG outlier threshold. Surfaced only when an outlier is being evaluated. |
outlier_threshold_adjusted | decimal | cost_outlier_threshold × isaf. |
outlier_eligible_cost | decimal | max(0, cost_of_case − threshold). |
outlier_marginal_pct | decimal | 0.60 — NY's marginal cost percentage. Surfaced only when an outlier fired. |
outlier_amount | decimal | Outlier dollar amount. |
is_transfer_case | boolean | TRUE when the transfer per-diem rule applied. Suppressed (null) when not applicable — only surfaced as a positive callout. |
transfer_per_diem | decimal | base_dr_payment / alos. |
transfer_adjusted_amount | decimal | min(transfer_per_diem × LOS × 1.20, base_dr_payment). |
acute_alc_per_diem_used | decimal | Acute ALC per diem. Surfaced only when alc_days > 0. |
safety_net_sdp_per_disch_mmc | decimal | Safety Net per-discharge add-on (MMC acute). |
hh_acr_per_disch_mmc | decimal | H+H Average Commercial Rate per-discharge add-on (MMC acute, NYC public hospitals). |
psych_base_per_diem_used | decimal | Psych base per-diem for payer class and age group. |
age_factor_used | decimal | Psych age factor (1.3597 for CHILD ≤17). Suppressed (null) for ADULT — only surfaced when the multiplier shifted the per-diem. |
age_factor_reason | string | Human-readable reason the age factor applied. Suppressed when no factor applied. |
mr_factor_used | decimal | MR factor (1.0599 when intellectual disability declared). Suppressed (null) when no MR factor applied. |
mr_factor_reason | string | Human-readable reason the MR factor applied. Suppressed when no factor applied. |
comorbidity_factor_used | decimal | Highest-matching psych comorbidity factor. Suppressed (null) when no comorbidity selected. |
comorbidity_category_used | string | Comorbidity category label. Suppressed when no comorbidity selected. |
psych_non_op_per_diem_used | decimal | Psych non-operating per-diem amount. |
psych_ect_per_treatment_used | decimal | Psych ECT per-treatment rate. Surfaced only when ect_treatments > 0. |
ect_treatments_used | integer | ECT treatments echoed. Surfaced only when > 0. |
psych_alc_per_diem_used | decimal | Psych ALC per-diem rate. Surfaced only when alc_days > 0. |
psych_sdp_per_diem_mmc | decimal | Psych Safety Net SDP per-diem add-on (MMC). Surfaced only on MMC psychiatric when populated. |
psych_hh_acr_per_diem_mmc | decimal | Psych H+H ACR per-diem add-on (MMC, NYC public hospitals). Surfaced only on MMC psychiatric when populated. |
psych_dme_mmc | decimal | Psych DME amount paid on MMC. Surfaced only on MMC psychiatric when populated. |
los_scale_days_at_1_20 | integer | Days paid at the 1.20 scale factor (Days 1-4). |
los_scale_days_at_1_00 | integer | Days paid at 1.00 scale (Day 5 onward). |
los_scaled_total | decimal | Effective scaled day count. |
prior_admission_within_30d_applied | boolean | TRUE when readmission rule shifted Day 1 to Day-4 scaling. Suppressed (null) when not applicable. |
prior_admission_within_30d_used | boolean | Echoed input. Suppressed (null) when FALSE. |
has_intellectual_disability_used | boolean | Echoed input. Suppressed (null) when FALSE. |
age_group_used | string | Echoed age group (ADULT / CHILD) for psychiatric. |
per_diem_used | decimal | Per-diem rate (per-diem service types). Suppressed (null) when 0. |
alc_per_diem_used | decimal | ALC per-diem (per-diem service types). Suppressed (null) when alc_days = 0 or per-diem = 0. |
specialty_acute_nyc_upl_mmc | decimal | NYC UPL Conversion add-on (specialty_acute MMC, NYC public). Surfaced only when populated. |
length_of_stay_used | integer | LOS used in computation. Echoed when supplied; surfaced unconditionally on psychiatric / per-diem (required input). |
non_alc_days | integer | LOS − alc_days (per-diem). |
alc_days_used | integer | ALC days echoed. Suppressed (null) when 0. |
gross_charges_used | decimal | Charges echoed. Surfaced only when supplied. |
transfer_out_used | boolean | transfer_out echoed. Suppressed (null) when FALSE — only surfaced as a positive callout. |
hcra_surcharge_pct_used | decimal | HCRA surcharge percentage (constant 7.04% since 4/1/2009). |
hcra_surcharge_amount | decimal | HCRA dollar amount included in payment_rate. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
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"
[
{
"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": "MAJOR RESPIRATORY INFECTIONS AND INFLAMMATIONS",
"service_type": "acute",
"service_type_source": "explicit",
"apr_drg_code": "140",
"soi": 2,
"mdc_code": "04",
"mdc_description": "Diseases & Disorders of the Respiratory System",
"grouper_version": "34",
"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",
"effective_start_date": "2024-01-01",
"effective_end_date": "2024-03-31"
}
]/ny/inpatient/rate/batchLook up multiple NY inpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"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"
}
]
}/ny/providers/searchNew 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
| Name | Type | Description |
|---|---|---|
npi | string | Provider NPI (10 digits). |
state_provider_id | string | NY Medicaid Provider ID (MMIS, 8-digit). |
opcert | string | NY Operating Certificate (Article 28 hospitals). |
provider_name | string | Provider name (partial match, case-insensitive). |
city | string | City (partial match). |
county | string | County (partial match). |
zip_code | string | ZIP code (exact match). |
ny_profession_or_service | string | NY-published profession/service category (partial match). Examples: Physician, Nurse Practitioner, Podiatrist. |
ny_provider_specialty | string | NY-published specialty sub-classification (partial match). Examples: Cardiology, Geriatric Medicine. |
taxonomy | string | NPPES primary taxonomy display name (partial match). NUCC-enriched display name. |
provider_type | string | Values: HOSPITAL, PHYSICIAN, OUTPATIENT_CLINIC_ASC, LABORATORY. |
limit | integer | Max results (default 100, max 1000). |
Returns
| Field | Type | Description |
|---|---|---|
providers | array | List of matching providers. |
↳npi | string | Provider NPI. |
↳state_provider_id | string | MMIS ID. |
↳opcert | string | Operating Certificate (hospitals only). |
↳provider_name | string | Provider name. |
↳provider_type | string | NY provider type. |
↳provider_type_label | string | Human-readable provider type. |
↳entity_type | string | Individual or Organization. |
↳ny_profession_or_service | string | NY profession/service category (comma-delimited title case). |
↳ny_provider_specialty | string | NY specialty (comma-delimited title case). |
↳primary_taxonomy | string | NPPES primary taxonomy display name (NUCC-enriched). |
↳street_address | string | Street address. |
↳city | string | City. |
↳county | string | County. |
↳state | string | State. |
↳zip_code | string | ZIP. |
↳op_rates | boolean | Has outpatient rates. |
↳ip_rates | boolean | Has inpatient rates. |
↳available_service_types | string[] | 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_results | integer | Total results found. |
limit_applied | integer | Limit applied. |
curl "https://staterates.health/api/v1/ny/providers/search?\ provider_type=HOSPITAL&\ city=New+York" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"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
}/oh/outpatient/rateOhio Outpatient Rates
Look up an Ohio Medicaid outpatient rate. Supports two methodologies, routed by code system: HCPCS codes price via fee schedule (MSRIAP for physicians/imaging, Clinical Lab schedule for lab codes); EAPG codes price per-claim for hospital outpatient (per-hospital base rate × weight + OP CCA) and ASC (statewide flat base × weight). Ohio publishes no state-specific provider ID; NPI is the only provider identifier.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | HCPCS code (e.g., 99213) or EAPG code (e.g., 00002). |
billing_code_type | string | Code system filter. Values: HCPCS, EAPG. If omitted, returns results for all matching code systems. |
npi1 required | string | National Provider Identifier (10 digits). |
provider_name1 required | string | Provider name (partial match, case-insensitive). Returns rates for all matches. |
provider_type | string | StateRates provider classification. Values: HOSPITAL, PHYSICIAN, ASC, CLINICAL_LABORATORY, IMAGING_CENTER. If omitted, returns rates across all matching provider types for the code. |
modifier | string | Modifier. 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_service | string | Place of service (MSRIAP only; ignored for EAPG). Values: facility, non_facility. If omitted, returns the source default rate (typically non-facility). |
date_of_service | string | Date 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
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
provider_name | string | Provider name. |
provider_type | string | StateRates provider classification. |
provider_type_label | string | Human-readable provider type label. |
hospital_class | string | Derived 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_code | string | NPPES primary taxonomy code (non-hospital providers). |
primary_taxonomy_display_name | string | NPPES primary taxonomy display name. |
street_address | string | Provider street address. |
city | string | Provider city. |
county | string | Provider county. |
state | string | Provider state (always 'OH'). |
zip_code | string | Provider ZIP code. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
modifier | string | Modifier applied (e.g., '26', 'TC', 'QW'). |
modifier_adjustment | decimal | Multiplier 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_service | string | Place of service used (MSRIAP only). |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
eapg_weight | decimal | EAPG relative weight (Solventum 3M v3.17). EAPG path only. |
eapg_category | string | EAPG category code. |
eapg_category_description | string | EAPG category description (NULL for OH-only EAPG codes). |
eapg_type | string | EAPG type code. |
eapg_type_description | string | EAPG type description. |
eapg_service_line | string | EAPG service line code. |
eapg_service_line_description | string | EAPG service line description. |
asc_flat_base | decimal | ASC statewide flat base rate ($90.98 for 1/1/2024+, $83.34 for 1/2/2020–12/31/2023). ASC path only. |
outpatient_base_rate | decimal | Hospital-specific OP base rate. Hospital EAPG path only. |
op_cca_rate | decimal | Hospital OP Cost-Coverage Add-on per detail line. Hospital EAPG path only. |
xix_op_ccr | decimal | Hospital XIX OP cost-to-charge ratio (reference value). Hospital EAPG path only. |
base_rate | decimal | Source 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_advisory | string | MSRIAP prior-auth advisory text. HCPCS path only. |
is_manually_priced | boolean | MSRIAP sentinel: rate is determined case-by-case (BR/FP/PA/PC). payment_rate=$0.00 with explanatory message. |
is_flat_rate | boolean | EAPG sentinel: flat-rate EAPG paid by OAC policy not weight × base (FR sentinel). payment_rate=NULL with explanatory message. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/oh/outpatient/rate?\ billing_code=99213&\ npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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": "OFFICE/OUTPATIENT VISIT EST",
"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,
"eapg_category": null,
"eapg_category_description": null,
"eapg_type": null,
"eapg_type_description": null,
"eapg_service_line": null,
"eapg_service_line_description": 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,
"effective_start_date": "2026-01-01",
"effective_end_date": null
}
]/oh/outpatient/rate/batchLook up multiple OH outpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"billing_code": "99213",
"npi": "1234567890"
},
{
"billing_code": "00002",
"billing_code_type": "EAPG",
"npi": "1043641897"
}
]
}/oh/inpatient/rateOhio Inpatient Rates
Look up an Ohio Medicaid APR-DRG inpatient payment rate per SPA OH-23-0037 / OAC 5160-2-65. Standard formula: base × weight + capital × weight + Med-ED × weight + IP CCA. Discharge date drives all rate-period lookups. Edge cases: cost outlier (with total charges), transfer per-diem cap, interim cost-based payment, Medicare crossover, organ acquisition (100% of charges), and FSP psychiatric per-diem (auto-detected from hospital). Ohio publishes no state-specific provider ID; NPI is the only provider identifier.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | APR-DRG code. Accepts '140-2', '140', '0140-2', '0140', or '1402' (composite is parsed into apr_drg_code + soi). |
npi1 required | string | National Provider Identifier (10 digits). |
provider_name1 required | string | Hospital name (partial match, case-insensitive). |
soi | integer | Severity of Illness (1–4). If omitted and not embedded in billing_code, returns all 4 SOI levels. |
discharge_date | string | Discharge date (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. Drives all DRG pricing parameter lookups. |
transfer_claim | boolean | Is this the transferring hospital's claim? Triggers per-diem transfer cap on the DRG base payment per SPA OH-23-0037 §H(2). |
interim_claim | boolean | Interim claim per SPA OH-23-0037 §H(1)? Pays cost-based: xix_ip_ccr × charges. Reconciled to final DRG at discharge. |
length_of_stay | integer | LOS in days. Required for transfer + interim. Defaults to the DRG's average length of stay. |
total_charges | decimal | Covered billed charges. Required for outlier calc, interim calc, lesser-of cap, and organ-acquisition 100%-of-charges rule. |
crossover_claim | boolean | Medicare-Medicaid dual-eligible crossover claim? Swaps base rate + IP CCR to medicare_crossover_* columns. Capital, Med-ED, IP CCA stay on standard columns. |
organ_acquisition | boolean | Organ acquisition per OAC 5160-2-65 §L? Pays 100% of total_charges (heart/lung/liver/pancreas). Bone marrow's three-way split is not yet encoded. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Hospital NPI. |
provider_name | string | Hospital name. |
hospital_class | string | Derived 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_address | string | Hospital street address. |
city | string | Hospital city. |
county | string | Hospital county. |
state | string | Hospital state. |
zip_code | string | Hospital ZIP code. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
apr_drg_code | string | Base APR-DRG code (3-digit). |
soi | integer | Severity of Illness (1–4). |
grouper_version | string | APR-DRG grouper version (e.g., '43', '42', '41'). |
mdc_code | string | Major Diagnostic Category code. |
mdc_description | string | Major Diagnostic Category description (NULL for v43 pending upstream contribution). |
casemix_relative_weight | decimal | OH-published DRG relative weight for this (DRG, SOI). |
average_length_of_stay | decimal | Statewide average length of stay for this DRG (drives transfer per-diem calc). |
is_not_covered | boolean | DRG flagged 'Not Covered' in source (specific transplants under DRG 772). |
inpatient_base_rate | decimal | Hospital IP base rate (or medicare_crossover_ip_base_rate when crossover_claim=true). |
capital_rate | decimal | Hospital combined capital rate. |
meded_rate | decimal | Hospital Med-ED rate (0 for non-eligible hospitals). |
ip_cca_rate | decimal | Hospital IP CCA per-discharge rate. |
xix_ip_ccr | decimal | Hospital XIX IP cost-to-charge ratio (used for outlier and interim calculations). |
psych_per_diem_rate | decimal | FSP psych per-diem rate. FSP path only. |
drg_base_payment | decimal | DRG Base Payment = inpatient_base_rate × casemix_relative_weight. |
capital_allowance | decimal | Capital Allowance = capital_rate × casemix_relative_weight. |
meded_allowance | decimal | Med-ED Allowance = meded_rate × casemix_relative_weight. |
cca_amount | decimal | IP CCA flat amount per discharge. |
outlier_adjustment_applied | boolean | Whether the cost-outlier add-on fired. |
outlier_threshold | decimal | Outlier threshold = drg_base_payment + fixed_outlier_threshold. |
fixed_outlier_threshold | decimal | Fixed threshold per SPA §F: $50,000 for neonate/tracheostomy, $75,000 otherwise. |
outlier_threshold_basis | string | Basis used: 'neonate', 'tracheostomy', or 'standard'. |
estimated_cost | decimal | cost_of_case = total_charges × xix_ip_ccr. |
outlier_eligible_cost | decimal | eligible_outlier_cost = estimated_cost − outlier_threshold (when positive). |
outlier_marginal_pct | decimal | Outlier marginal cost percentage applied (80% per SPA §F). |
outlier_amount | decimal | Outlier add-on = eligible_outlier_cost × outlier_marginal_pct. |
transfer_adjustment_applied | boolean | Whether the transfer per-diem cap reduced the DRG base payment. |
statewide_avg_los | decimal | Statewide average LOS used for transfer per-diem (= DRG average_length_of_stay). |
transfer_per_diem | decimal | Transfer per-diem = (inpatient_base_rate × casemix_relative_weight) / statewide_avg_los. |
transfer_per_diem_total | decimal | transfer_per_diem × (length_of_stay + 1). |
transfer_adjusted_amount | decimal | DRG base after transfer cap = min(transfer_per_diem_total, drg_base_payment). |
interim_payment_applied | boolean | Whether the interim-claim cost-based pricing path was used. |
interim_payment_amount | decimal | Interim payment = xix_ip_ccr × total_charges. |
fsp_per_diem_applied | boolean | Whether the FSP psych per-diem path was used (hospital has psych_per_diem_rate > 0). |
fsp_per_diem_amount | decimal | FSP per-diem payment = length_of_stay × psych_per_diem_rate. |
organ_acquisition_applied | boolean | Whether the organ-acquisition 100%-of-charges rule was used. |
organ_acquisition_amount | decimal | Organ acquisition payment = total_charges. |
crossover_claim_applied | boolean | Whether the Medicare crossover formula path was used. |
charge_cap_applied | boolean | Whether the lesser-of-charges cap reduced the final payment (only fires when outlier qualifies, per SPA §F(3)). |
length_of_stay_used | integer | LOS used in calculation. |
total_charges_used | decimal | Total charges used in calculation. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/oh/inpatient/rate?\ billing_code=140-2&\ npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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",
"billing_code_description": "MAJOR RESPIRATORY INFECTIONS & INFLAMMATIONS",
"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,
"grouper_version": "43",
"mdc_code": null,
"mdc_description": null,
"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,
"effective_start_date": "2025-07-01",
"effective_end_date": null
}
]/oh/inpatient/rate/batchLook up multiple OH inpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"billing_code": "140-2",
"npi": "1234567890"
},
{
"billing_code": "194-1",
"npi": "9876543210",
"length_of_stay": 7,
"total_charges": "120000",
"transfer_claim": true
}
]
}/oh/providers/searchOhio Provider Search
Search for Ohio Medicaid providers by NPI, name, location, taxonomy, provider type, or hospital class. Ohio publishes no state-specific provider ID. Returns provider details with rate availability.
Parameters
| Name | Type | Description |
|---|---|---|
npi | string | National Provider Identifier (10 digits). |
provider_name | string | Provider name (partial match, case-insensitive). |
city | string | City (partial match). |
county | string | County (partial match). |
zip_code | string | ZIP code (exact match). |
taxonomy | string | NUCC taxonomy display name (partial match, non-hospital). |
provider_type | string | StateRates provider classification. Values: HOSPITAL, PHYSICIAN, ASC, CLINICAL_LABORATORY, IMAGING_CENTER. |
hospital_class | string | Hospital classification filter (HOSPITAL only). Values: Critical Access, Children's, Teaching, Rural, Psychiatric, General Acute Care. |
limit | integer | Max results (default 100, max 1000). |
Returns
| Field | Type | Description |
|---|---|---|
providers | array | List of matching providers. |
↳npi | string | Provider NPI. |
↳provider_name | string | Provider name. |
↳provider_type | string | StateRates provider classification. |
↳provider_type_label | string | Human-readable provider type label. |
↳entity_type | string | Individual or Organization (always 'Organization' for HOSPITAL). |
↳primary_taxonomy | string | NPPES primary taxonomy display name (non-hospital). |
↳hospital_class | string | Derived facility-type classification (HOSPITAL only). Values: Critical Access, Children's, Teaching, Rural, Psychiatric, General Acute Care. |
↳street_address | string | Street address. |
↳city | string | City. |
↳county | string | County. |
↳state | string | State. |
↳zip_code | string | ZIP code. |
↳op_rates | boolean | Has outpatient rates. |
↳ip_rates | boolean | Has inpatient rates. |
total_results | integer | Total results found. |
limit_applied | integer | Limit applied. |
curl "https://staterates.health/api/v1/oh/providers/search?\ provider_name=cleveland&\ provider_type=HOSPITAL" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"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
}/tx/outpatient/rateTexas Outpatient Rates
Look up a Texas Medicaid outpatient rate by HCPCS code and provider. Automatically routes to professional fee schedule or hospital facility pricing based on the provider's type. Hospital rates include RCC-based pricing and CHIRP managed care adjustments.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | HCPCS/CPT procedure code (e.g., 99213). |
npi1 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | TPI — Texas Provider Identifier (hospitals only). |
ccn1 required | string | CMS Certification Number (exact match, hospitals only). |
provider_name1 required | string | Provider name (partial match, min 2 characters). |
provider_type | string | StateRates provider classification. Values: PHYSICIAN, HOSPITAL, ASC_HASC, HOSPITAL_OP_IMAGING, CLINICAL_LABORATORY, OUTPATIENT_BEHAVIORAL_HEALTH, AMBULANCE. If omitted, resolved from taxonomy. |
child_patient | boolean | True if patient is under 21 years of age. Defaults to false (adult). |
place_of_service | string | Place of service (Physician only). Values: facility, non_facility. Defaults to non_facility. |
area_type | string | Hospital classification (Hospital OP Imaging only). Values: urban, rural. |
lab_type | string | Lab fee tier (Clinical Laboratory only). Values: clin_lab, sch, dshs. Defaults to clin_lab. |
modifier | string | Procedure 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_charges | decimal | Total billed charges. Required for hospital percent_of_charges codes. |
emergency_room | boolean | True if ER procedure. For hospitals, ASC surgical codes fall back to percent_of_charges (per TAC §355.8061). |
date_of_service | string | Date of service (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
state_provider_id | string | TPI — Texas Provider Identifier. |
provider_name | string | Provider name. |
provider_type | string | StateRates provider classification used. Values: PHYSICIAN, HOSPITAL, ASC_HASC, HOSPITAL_OP_IMAGING, CLINICAL_LABORATORY, OUTPATIENT_BEHAVIORAL_HEALTH, AMBULANCE. |
provider_type_label | string | Human-readable label for the StateRates provider classification (e.g., Physician, Hospital). |
hospital_class | string | Hospital classification. Values: Urban, Rural, Childrens, STATE OWNED TEACHING. |
high_volume_provider | boolean | High volume Medicaid provider. |
ccn | string | CMS Certification Number (hospitals only). |
street_address | string | Provider street address. |
city | string | Provider city. |
county | string | Provider county. |
zip_code | string | Provider ZIP code. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
procedure_type_used | string | Procedure type used for rate selection. |
tos_code | string | Type of Service code. |
tos_description | string | Type of Service description (e.g., MEDICAL SERVICES, SURGERY). |
modifier | string | Modifier 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_adjustment | decimal | Derived 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_service | string | Place of service used. |
area_type | string | Urban/Rural (Hospital OP Imaging only). |
lab_type | string | Lab tier (Clinical Laboratory only). |
age_group | string | Age group used. Values: ADULT, CHILD, ALL. |
is_manually_priced | boolean | True if rate requires manual review. |
emergency_room | boolean | True if ER procedure was specified. |
medicaid_fee | decimal | Pre-adjustment Medicaid fee (professional only). |
total_rvus | decimal | RVUs (Physician only). |
conversion_factor | decimal | Conversion factor (Physician only). |
outpatient_rcc | decimal | Outpatient interim rate (RCC). |
pct_allowable_charges | decimal | Percentage of allowable charges. |
effective_rate | decimal | Pre-calculated effective rate: RCC × pct allowable. |
source_fee_schedule | string | Source fee schedule: ASC_HASC, HOSPITAL_OP_IMAGING. |
billed_charges | decimal | Billed charges provided. |
calculation_note | string | Note when charges not provided or manual pricing. |
chirp_adjustments | object | CHIRP adjustment per managed care program (STAR, STAR_PLUS, STAR_KIDS). Hospital only. Each contains outpatient_rate_increase, chirp_multiplier, and adjusted_payment. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/tx/outpatient/rate?\ billing_code=99213&\ npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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": "OFFICE/OUTPATIENT VISIT EST",
"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,
"effective_start_date": "2024-09-01",
"effective_end_date": null
}
]/tx/outpatient/rate/batchLook up multiple TX outpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"npi": "1234567890",
"billing_code": "99213"
},
{
"npi": "1234567890",
"billing_code": "99214",
"child_patient": true
}
]
}/tx/inpatient/rateTexas Inpatient Rates
Look up a Texas Medicaid APR-DRG inpatient payment rate. Payment = Final SDA × DRG Relative Weight. Includes transfer adjustments, day/cost outlier calculations (patients under 21), PPC/PPR penalty reductions, and CHIRP managed care adjustments. Texas uses the admission date to determine the effective rate period.
Parameters
| Name | Type | Description |
|---|---|---|
reference_id | string | A 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. StateRates does not log, persist, or inspect this value; it is stripped from request logs and error tracking. |
billing_coderequired | string | APR-DRG code (e.g., 140 or 140-2). |
npi1 required | string | National Provider Identifier (10 digits). |
state_provider_id1 required | string | TPI — Texas Provider Identifier. |
ccn1 required | string | CMS Certification Number (exact match). |
provider_name1 required | string | Hospital name (partial match). |
soi | integer | Severity of Illness (1–4). If omitted, returns rates for all SOI levels. |
admit_date | string | Admission date (MM/DD/YYYY or YYYY-MM-DD). Defaults to today. |
transfer_claim | boolean | Is this the transferring hospital's claim? |
child_patient | boolean | True if patient is under 21 years of age. Defaults to false (adult). |
length_of_stay | integer | Length of stay in days. Required for transfers. Defaults to mean LOS. |
total_charges | decimal | Total charges for outlier calc and lesser-of rule. |
Returns
| Field | Type | Description |
|---|---|---|
reference_id | string | Echo 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_found | boolean | Whether a rate was found. |
error_message | string | Error details if rate not found. Null on success. |
npi | string | Provider NPI. |
state_provider_id | string | TPI — Texas Provider Identifier. |
provider_name | string | Provider name. |
hospital_class | string | Hospital classification. Values: Urban, Rural, Childrens, STATE OWNED TEACHING. |
ccn | string | CMS Certification Number. |
street_address | string | Hospital street address. |
city | string | Hospital city. |
county | string | Hospital county. |
zip_code | string | Hospital ZIP code. |
billing_code | string | Billing code submitted. |
billing_code_type | string | Code system. Values: HCPCS, APR-DRG. |
billing_code_description | string | Human-readable code description. |
payment_rate | decimal | Payment rate in dollars. |
payment_rate_type | string | Rate type. Values: fee_schedule, percent_of_charges, manually_priced, claim, per_diem. |
calculation_method | string | Human-readable calculation formula with actual values. |
apr_drg_code | string | Base DRG code. |
soi | integer | Severity of Illness (1–4). |
relative_weight | decimal | DRG relative weight. |
mean_los | decimal | Mean length of stay. |
is_delivery_drg | boolean | Whether this is a delivery-related DRG. |
grouper_version | string | APR-DRG grouper version. |
mdc_code | string | Major Diagnostic Category code. |
mdc_description | string | Major Diagnostic Category description. |
inpatient_sda | decimal | Hospital Final SDA. |
delivery_sda | decimal | Delivery SDA (Rural/Children's only). |
sda_used | decimal | SDA used in this calculation. |
base_payment | decimal | Base payment: SDA × relative_weight. |
transfer_adjustment_applied | boolean | Whether transfer adjustment was applied. |
transfer_adjusted_amount | decimal | Payment after transfer adjustment. |
outlier_adjustment_applied | boolean | Whether outlier was applied. |
outlier_amount | decimal | Outlier adjustment amount. |
outlier_type | string | Type of outlier applied. Values: day_outlier, cost_outlier. |
estimated_cost | decimal | Estimated cost for cost outlier calc. |
cost_outlier_threshold | decimal | Cost outlier threshold. |
day_outlier_threshold | integer | Day outlier threshold. |
marginal_cost_pct | float | Marginal cost percentage (0.60). |
outlier_reduction_factor | float | Outlier reduction factor by hospital class. |
inpatient_rcc | float | Hospital inpatient cost-to-charge ratio. |
universal_mean | decimal | Universal mean cost for cost outlier threshold. |
charge_cap_applied | boolean | Whether lesser-of rule reduced payment. |
ppc_pct_applied | decimal | Hospital-specific PPC penalty. |
ppr_pct_applied | decimal | Hospital-specific PPR penalty. |
ppc_ppr_adjusted_amount | decimal | Payment after PPC/PPR reduction. |
length_of_stay_used | integer | LOS used in calculation. |
total_charges_used | decimal | Total charges used. |
total_charges_source | string | Source of charges used. Values: actual, estimated. |
chirp_adjustments | object | CHIRP IP adjustment per program (STAR, STAR_PLUS, STAR_KIDS). Each contains inpatient_rate_increase, chirp_multiplier, and adjusted_payment. |
effective_start_date | date | Rate period start date. |
effective_end_date | date | Rate period end date. Null if currently active. |
curl "https://staterates.health/api/v1/tx/inpatient/rate?\ billing_code=140-2&\ npi=1234567890" \ -H "Authorization: Bearer YOUR_API_KEY"
[
{
"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",
"billing_code_description": "CHRONIC OBSTRUCTIVE PULMONARY DISEASE",
"payment_rate": "8245.30",
"payment_rate_type": "claim",
"calculation_method": "8962.28 (SDA) × 0.9200 (Relative Weight)",
"apr_drg_code": "140",
"soi": 2,
"relative_weight": "0.9200",
"mean_los": "3.80",
"is_delivery_drg": false,
"grouper_version": "41",
"mdc_code": "04",
"mdc_description": "Diseases And Disorders Of The Respiratory System",
"inpatient_sda": "8962.28",
"delivery_sda": null,
"sda_used": "8962.28",
"base_payment": "8245.30",
"transfer_adjustment_applied": false,
"transfer_adjusted_amount": null,
"outlier_adjustment_applied": false,
"outlier_amount": null,
"outlier_type": 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"
}
},
"effective_start_date": "2024-09-01",
"effective_end_date": null
}
]/tx/inpatient/rate/batchLook up multiple TX inpatient rates in a single POST request. Maximum 1,000 lookups per batch.
{
"requests": [
{
"billing_code": "140-2",
"npi": "1234567890"
},
{
"billing_code": "560-1",
"npi": "9876543210",
"length_of_stay": 4,
"total_charges": "62000",
"child_patient": true
}
]
}/tx/providers/searchTexas Provider Search
Search for Texas Medicaid providers by NPI, TPI, CCN, name, or location. Returns provider details including hospital classification and rate availability.
Parameters
| Name | Type | Description |
|---|---|---|
npi | string | National Provider Identifier (10 digits). |
state_provider_id | string | TPI — Texas Provider Identifier. |
ccn | string | CMS Certification Number. |
provider_name | string | Provider name (partial match, min 2 characters). |
city | string | City (partial match). |
zip_code | string | ZIP code (exact match). |
county | string | County (partial match). |
taxonomy | string | Taxonomy code filter. |
provider_type | string | StateRates provider classification. Values: PHYSICIAN, HOSPITAL, ASC_HASC, HOSPITAL_OP_IMAGING, CLINICAL_LABORATORY, OUTPATIENT_BEHAVIORAL_HEALTH, AMBULANCE. |
hospital_class | string | Hospital classification. Values: Urban, Rural, Childrens, STATE OWNED TEACHING. |
limit | integer | Max results (default 100, max 1000). |
Returns
| Field | Type | Description |
|---|---|---|
providers | array | List of matching providers. |
↳npi | string | Provider NPI. |
↳state_provider_id | string | TPI — Texas Provider Identifier. |
↳provider_name | string | Provider name. |
↳provider_type | string | StateRates provider classification. |
↳provider_type_label | string | Human-readable label for the StateRates provider classification. |
↳entity_type | string | Individual or Organization. |
↳primary_taxonomy | string | Primary taxonomy code. |
↳street_address | string | Street address. |
↳city | string | City. |
↳state | string | State. |
↳zip_code | string | ZIP code. |
↳county | string | County. |
↳ccn | string | CMS Certification Number (hospitals only). |
↳hospital_class | string | Hospital classification (hospitals only). Values: Urban, Rural, Childrens, STATE OWNED TEACHING. |
↳op_rates | boolean | Has outpatient rates. |
↳ip_rates | boolean | Has inpatient rates. |
total_results | integer | Total results found. |
limit_applied | integer | Limit applied. |
curl "https://staterates.health/api/v1/tx/providers/search?\ provider_name=memorial&\ city=houston" \ -H "Authorization: Bearer YOUR_API_KEY"
{
"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
}Errors
| Status | Common code | Meaning |
|---|---|---|
| 400 | api_key_in_query | Key sent in a URL query string. Put it in the Authorization header. |
| 401 | missing_api_key | No Authorization header or the Bearer scheme is missing. |
| 401 | invalid_api_key | Key is unknown, revoked, or past its expiry. |
| 403 | state_not_enabled | Your key isn't scoped to the state you called. Email support to add it. |
| 404 | — | Endpoint path doesn't exist. Check the URL against the reference above. |
| 422 | — | Request parsed but violated a schema rule (e.g. batch over 1000 items). See detail for field-level errors. |
| 429 | token_bucket_exceeded | Token bucket exhausted for the current billing period, or per-key burst limit tripped (burst 429s have no JSON body). See Rate Limits. |
| 500 | — | Our bug. Don't retry blindly — email support with the timestamp. |
| 502 | — | API briefly unreachable (usually a deploy restart). Safe to retry after ~5s. |
{
"detail": {
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid or revoked API key"
}
}
}Rate Limits & Quotas
Two limits, both return 429:
- 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.
- Token bucket — each org gets a contract-sized token bucket that pools across every state on the key. Costs per call:
1 tokenper inpatient rate,0.25 tokensper outpatient line item,0 tokensfor 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.
X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 873.75 X-RateLimit-Reset: 2026-07-01T00:00:00Z
{
"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"
}
}
}