Rates
One code or a list. One consistent answer.
Retrieve a rate
GET /api/v1/rates/{code} returns one fee-schedule amount. GET /api/v1/rates?codes[]=99213&codes[]=99214&setting=non_facility retrieves a batch with shared date, setting and location.
All data endpoints require a bearer key and an active plan. Each successful response consumes one request, including a bounded batch, search, an empty collection or unavailable amounts. Non-success responses do not consume quota. The account endpoint remains unmetered. Requests share the plan's per-minute limit and billing-period allowance.
Required attributes
- Name
code- Type
- string
- Description
Five-character procedure code supplied in the URL path.
- Name
setting- Type
- string
- Description
facility or non_facility.
Optional attributes
- Name
date- Type
- string
- Description
Service date in YYYY-MM-DD format. Defaults to today in UTC.
- Name
zip- Type
- string
- Description
Five-digit ZIP or hyphenated ZIP+4. Cannot be combined with locality.
- Name
locality- Type
- string
- Description
Contractor-locality identifier, such as 13202-01. Cannot be combined with zip.
- Name
qp_status- Type
- string
- Description
non_qp (default) or qp. Selects the payment schedule; does not establish eligibility.
- Name
modifier- Type
- string
- Description
26 for the professional component, or TC for the technical component.
- Name
provider_type- Type
- string
- Description
Defaults to physician. See Provider pricing for supported categories and restrictions.
- Name
participation- Type
- string
- Description
participating (default) or non_participating.
- Name
include- Type
- string
- Description
breakdown, sources, or breakdown,sources.
Parameter usage notes
For a single rate, put the code in the path. For a batch, supply 1–50 distinct codes[]. setting is required: facility or non_facility. The date defaults to today UTC; qp_status defaults to non_qp. Use exactly one of zip (five digits or hyphenated ZIP+4) and locality (contractor-locality ID), or omit both for a national amount.
Optional modifier is 26 or TC. It selects an actual professional/technical component row, never a percentage of the global rate. Other modifiers are rejected.
Optional include=breakdown, include=sources, or include=breakdown,sources expands the answer. See provider pricing for provider_type and participation. Unknown parameters are rejected.
Response
- Name
release- Type
- integer | null
- Description
The accepted PFS release used for this result.
- Name
payment_status- Type
- string | null
- Description
CMS PFS status indicator for the code. A, R (restricted coverage) and T (paid only without another same-day service) are priced; R and T carry coverage rules the amount does not apply. Null when the code has no rate row.
- Name
breakdown- Type
- object | null · opt-in
- Description
Exact calculation factors and base amount when include=breakdown.
- Name
sources- Type
- array · opt-in
- Description
Immutable release citations and available excerpts when include=sources.
- Name
code- Type
- string
- Description
The five-character procedure code requested. The response has no data wrapper.
- Name
amount- Type
- integer | null
- Description
Allowed amount in USD cents, including requested provider adjustments. Null means unavailable, not zero.
- Name
currency- Type
- string · usd
- Description
The currency of the amount. Always usd.
- Name
setting- Type
- string · facility | non_facility
- Description
The setting used to calculate the amount.
- Name
date- Type
- string · YYYY-MM-DD
- Description
Resolved service date, including the UTC date used when omitted.
- Name
qp_status- Type
- string · non_qp | qp
- Description
The payment schedule used. Defaults to non_qp.
- Name
location- Type
- object
- Description
The geography used to calculate the amount.
- Name
location.type- Type
- string · national | locality
- Description
National uses geographically unadjusted factors. ZIP requests resolve to a locality.
- Name
location.id- Type
- string | null · conditional
- Description
Contractor-locality identifier, such as 13202-01. Present only for locality responses; null when no geography release covers the date.
- Name
location.geography_match- Type
- string · exact | prior_release · conditional
- Description
Present for ZIP requests. prior_release means CMS has no surviving crosswalk for the requested quarter, so the latest earlier one resolved the ZIP.
- Name
unavailable_reason- Type
- string · conditional
- Description
Present only when amount is null: data_unavailable, code_not_in_release, rate_not_in_release, contractor_priced, unsupported_payment_status, setting_unavailable, or unsupported_rule.
- Name
release- Type
- integer | null
- Description
Accepted PFS release ID, or null if unavailable.
- Name
breakdown- Type
- object | null · optional
- Description
With include=breakdown: work_rvu, work_gpci, pe_rvu, pe_gpci, mp_rvu, mp_gpci, conversion_factor, base_amount, and calculation_version.
- Name
sources- Type
- object[] · optional
- Description
With include=sources: exact release provenance, source URL, file, line, and optional excerpt.
Response behavior and edge cases
Single rates have no wrapper. Batches return { "data": [...] } in requested order, one result per code. Each result echoes the code, setting, resolved date, QP status and location, and includes the accepted PFS release ID (null when no PFS release was available).
amount is integer USD cents; currency is usd. Unavailable amounts are null with an unavailable_reason. A real zero stays zero. An unknown single code returns 404 code_not_found; an unknown batch code is retained with amount: null and unavailable_reason: code_not_found. Invalid or unresolved request-level locations reject the entire batch.
breakdown contains decimal-string work_rvu, work_gpci, pe_rvu, pe_gpci, mp_rvu, and mp_gpci, plus conversion_factor, integer-cent base_amount, and calculation_version. It is null when no base calculation exists.
sources contains exact citations used by the calculation: kind, release provenance, source URL, file, line and optional excerpt. Excerpts come from the cited immutable archive; missing local archives produce null excerpts without losing the citation. National GPCIs of one have no geographic source row.
Defaults and scope
Without provider options, amounts are base participating-physician PFS rates before claim-level adjustments. They are not patient liability or a guarantee of payment. Selecting qp does not establish clinician eligibility.
A service date selects the latest accepted applicable revision; it does not pin a revision. Store the returned release ID and request sources for an audit trail. Use releases for available periods and localities for selectors. Contract percentages, productivity totals and comparisons can be calculated from these primitives in your integration.
Request
curl -G 'https://feebase.co/api/v1/rates/99214' \
-H 'Authorization: Bearer YOUR_API_KEY' \
--data-urlencode 'setting=non_facility'Response
{
"code": "99214",
"amount": 13561,
"currency": "usd",
"setting": "non_facility",
"date": "2026-01-01",
"qp_status": "non_qp",
"location": {
"type": "national"
},
"release": 1
}Illustrative response. Values and release IDs are examples.
Try this endpoint with your API key
Request
curl --get 'https://feebase.co/api/v1/rates/99214' \
--header "Authorization: Bearer $FEEBASE_API_KEY" \
--header 'Accept: application/json' \
--data-urlencode 'setting=non_facility'Example response · 200
{
"code": "99214",
"amount": 13561,
"currency": "usd",
"setting": "non_facility",
"date": "2026-01-01",
"qp_status": "non_qp",
"location": {
"type": "national"
}
}Illustrative national, non-facility response for 99214 on January 1, 2026. This example does not change with the form. Run a request to see your actual response below.
List rates
Retrieve rates for 1–50 distinct codes[] with a shared setting, date, location, modifier, and provider options. All options and amount semantics are the same as the single-rate endpoint above.
Required attributes
- Name
codes[]- Type
- string[]
- Description
1–50 distinct five-character codes, returned in requested order.
- Name
setting- Type
- string
- Description
facility or non_facility.
Optional attributes
- Name
date- Type
- string
- Description
Service date in YYYY-MM-DD format. Defaults to today in UTC.
- Name
zip- Type
- string
- Description
Five-digit ZIP or hyphenated ZIP+4. Cannot be combined with locality.
- Name
locality- Type
- string
- Description
Contractor-locality identifier, such as 13202-01. Cannot be combined with zip.
- Name
qp_status- Type
- string
- Description
non_qp (default) or qp. Selects the payment schedule; does not establish eligibility.
- Name
modifier- Type
- string
- Description
26 for the professional component, or TC for the technical component.
- Name
provider_type- Type
- string
- Description
Defaults to physician. See Provider pricing for supported categories and restrictions.
- Name
participation- Type
- string
- Description
participating (default) or non_participating.
- Name
include- Type
- string
- Description
breakdown, sources, or breakdown,sources.
Parameter usage notes
codes[] and setting are required. Each code is five characters. Use the same optional date, QP status, location, modifier, include, provider_type, and participation parameters as a single lookup.
Response
- Name
data- Type
- object[]
- Description
One result per requested code, preserving request order.
- Name
data[].release- Type
- integer | null
- Description
The accepted PFS release used for this result.
- Name
data[].payment_status- Type
- string | null
- Description
CMS PFS status indicator for the code. A, R (restricted coverage) and T (paid only without another same-day service) are priced; R and T carry coverage rules the amount does not apply. Null when the code has no rate row.
- Name
data[].breakdown- Type
- object | null · opt-in
- Description
Exact calculation factors and base amount when include=breakdown.
- Name
data[].sources- Type
- array · opt-in
- Description
Immutable release citations and available excerpts when include=sources.
- Name
data[].code- Type
- string
- Description
The five-character procedure code requested. The response has no data wrapper.
- Name
data[].amount- Type
- integer | null
- Description
Allowed amount in USD cents, including requested provider adjustments. Null means unavailable, not zero.
- Name
data[].currency- Type
- string · usd
- Description
The currency of the amount. Always usd.
- Name
data[].setting- Type
- string · facility | non_facility
- Description
The setting used to calculate the amount.
- Name
data[].date- Type
- string · YYYY-MM-DD
- Description
Resolved service date, including the UTC date used when omitted.
- Name
data[].qp_status- Type
- string · non_qp | qp
- Description
The payment schedule used. Defaults to non_qp.
- Name
data[].location- Type
- object
- Description
The geography used to calculate the amount.
- Name
data[].location.type- Type
- string · national | locality
- Description
National uses geographically unadjusted factors. ZIP requests resolve to a locality.
- Name
data[].location.id- Type
- string | null · conditional
- Description
Contractor-locality identifier, such as 13202-01. Present only for locality responses; null when no geography release covers the date.
- Name
data[].location.geography_match- Type
- string · exact | prior_release · conditional
- Description
Present for ZIP requests. prior_release means CMS has no surviving crosswalk for the requested quarter, so the latest earlier one resolved the ZIP.
- Name
data[].unavailable_reason- Type
- string · conditional
- Description
Present only when amount is null: data_unavailable, code_not_in_release, rate_not_in_release, contractor_priced, unsupported_payment_status, setting_unavailable, or unsupported_rule.
- Name
data[].release- Type
- integer | null
- Description
Accepted PFS release ID.
Response behavior and edge cases
Returns { "data": [...] } in requested code order. Unknown codes are retained with amount: null and unavailable_reason: code_not_found. Invalid request-level locations reject the entire batch. A successful batch consumes one request.
Request
curl -G 'https://feebase.co/api/v1/rates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
--data-urlencode 'codes[]=99213' \
--data-urlencode 'codes[]=99214' \
--data-urlencode 'setting=non_facility'Response
{
"data": [
{
"code": "99213",
"amount": 13561,
"currency": "usd",
"setting": "non_facility",
"date": "2026-01-01",
"qp_status": "non_qp",
"location": {
"type": "national"
},
"release": 1
},
{
"code": "99214",
"amount": 13561,
"currency": "usd",
"setting": "non_facility",
"date": "2026-01-01",
"qp_status": "non_qp",
"location": {
"type": "national"
},
"release": 1
}
]
}Illustrative response. Values and release IDs are examples.
