Codes
Date-specific RVUs and payment indicators.
Search codes
GET /api/v1/search returns ranked matches from the current code search index. Use it for autocomplete; use codes for deterministic, date-specific records. Search is code-only and has no pagination.
Optional attributes
- Name
q- Type
- string
- Description
Search text, up to 100 characters. Empty queries use popularity ordering.
- Name
limit- Type
- integer
- Description
Results per page. Defaults to 12; accepts 1–25.
- Name
priced- Type
- boolean
- Description
1 restricts results to priced codes; 0 leaves them unrestricted.
- Name
therapy- Type
- boolean
- Description
1 restricts results to therapy codes.
- Name
sections[]- Type
- string[]
- Description
em, anesthesia, surgery, radiology, lab, medicine, cat3, cat2, hcpcs, or other.
- Name
global[]- Type
- string[]
- Description
000, 010, 090, XXX, YYY, ZZZ, or MMM.
Parameter usage notes
q is optional text, up to 100 characters. With an empty query, results use the site's popularity ordering. limit defaults to 12 and accepts 1–25.
Optional filters: priced=1, therapy=1, global[]=090, and sections[]=surgery. Boolean filters accept 0 or 1. Sections are em, anesthesia, surgery, radiology, lab, medicine, cat3, cat2, hcpcs, and other. Global values are 000, 010, 090, XXX, YYY, ZZZ, and MMM.
Response
- Name
data- Type
- object[]
- Description
Ranked code matches; exact code matches first.
- Name
data[].code- Type
- string
- Description
Five-character code.
- Name
data[].name- Type
- string | null
- Description
Display name.
- Name
data[].subname- Type
- string | null
- Description
Additional display context.
- Name
data[].category- Type
- string | null
- Description
Code category.
- Name
data[].section- Type
- string
- Description
Search section identifier.
- Name
data[].priced- Type
- boolean
- Description
Whether a price is available in the search index.
- Name
data[].therapy- Type
- boolean
- Description
Whether the code is indexed as a therapy code.
- Name
data[].global_days- Type
- string | null
- Description
Global-surgery indicator.
Response behavior and edge cases
The response is { "data": [...] }. Each result contains code, name, subname, category, section, and priced. Names and categories may be null. Results intentionally omit full RVUs, rates and editorial content. Exact code matches rank first, followed by prefix and text relevance; ranking may improve without an API version change.
Integration
Debounce input, cancel superseded requests, and cache recent results in your integration. Keep the API key on your server. Every successful search consumes one request from the plan allowance. Date and catalog-pagination parameters are rejected; current search results are discovery hints, not proof that a code existed on a historical service date.
Request
curl -G 'https://feebase.co/api/v1/search' \
-H 'Authorization: Bearer YOUR_API_KEY' \
--data-urlencode 'q=therapy' \
--data-urlencode 'limit=8'Response
{
"data": [
{
"code": "97110",
"name": null,
"subname": null,
"category": null,
"section": "medicine",
"priced": true,
"therapy": true,
"global_days": "XXX"
}
]
}Illustrative response. Values and release IDs are examples.
List codes
Browse the date-specific catalog or retrieve a known list of codes.
Optional attributes
- Name
date- Type
- string
- Description
Service date in YYYY-MM-DD format. Defaults to today in UTC.
- Name
codes[]- Type
- string[]
- Description
1–50 distinct five-character codes.
- Name
page- Type
- integer
- Description
Page number, starting at 1. Defaults to 1; maximum 10,000.
- Name
limit- Type
- integer
- Description
Results per page. Defaults to 25; accepts 1–50.
- Name
include- Type
- string
- Description
Set to insight to include the AI-assisted editorial explanation.
Parameter usage notes
date defaults to today in UTC. codes[] accepts 1–50 distinct five-character codes. Without a code list, use page (default 1) and limit (default 25, maximum 50). Catalog order is ascending code. A supplied code list returns all matching records in ascending code order; pagination is not applied to that list.
include=insight adds optional AI-assisted editorial explanations. q is rejected: use search. The single-code route uses date and include; use the collection route for codes, page, and limit.
Response
- Name
data- Type
- object[]
- Description
Matching code records, in ascending code order.
- Name
data[].code- Type
- string
- Description
Five-character procedure code.
- Name
data[].name- Type
- string | null
- Description
Display name when available.
- Name
data[].category- Type
- string | null
- Description
Code category when available.
- Name
data[].date- Type
- string
- Description
Resolved service date in YYYY-MM-DD format.
- Name
data[].release- Type
- integer
- Description
Accepted PFS release identifier.
- Name
data[].payment_status- Type
- string | null
- Description
CMS payment status indicator.
- Name
data[].rvus- Type
- object | null
- Description
Relative value units. Missing facts are null.
- Name
data[].rvus.work- Type
- decimal string | null
- Description
work RVUs, represented as an exact decimal string.
- Name
data[].rvus.pe_non_facility- Type
- decimal string | null
- Description
pe non facility RVUs, represented as an exact decimal string.
- Name
data[].rvus.pe_facility- Type
- decimal string | null
- Description
pe facility RVUs, represented as an exact decimal string.
- Name
data[].rvus.mp- Type
- decimal string | null
- Description
mp RVUs, represented as an exact decimal string.
- Name
data[].indicators- Type
- object | null
- Description
CMS payment and procedure indicators.
- Name
data[].indicators.global_days- Type
- string | null
- Description
global days indicator from the selected release.
- Name
data[].indicators.pctc- Type
- string | null
- Description
pctc indicator from the selected release.
- Name
data[].indicators.multiple_procedure- Type
- string | null
- Description
multiple procedure indicator from the selected release.
- Name
data[].indicators.bilateral- Type
- string | null
- Description
bilateral indicator from the selected release.
- Name
data[].indicators.preop- Type
- string | null
- Description
preop indicator from the selected release.
- Name
data[].indicators.intraop- Type
- string | null
- Description
intraop indicator from the selected release.
- Name
data[].indicators.postop- Type
- string | null
- Description
postop indicator from the selected release.
- Name
data[].indicators.assistant- Type
- string | null
- Description
assistant indicator from the selected release.
- Name
data[].indicators.co_surgeon- Type
- string | null
- Description
co surgeon indicator from the selected release.
- Name
data[].indicators.team- Type
- string | null
- Description
team indicator from the selected release.
- Name
data[].components- Type
- object | array
- Description
Available 26 and TC component RVUs, keyed by modifier. Empty when no components exist.
- Name
data[].insight- Type
- object | null · optional
- Description
Included only with include=insight. Contains summary, description, FAQs, related codes, comparisons, editorial source, release, and generated_at.
- Name
meta.page- Type
- integer
- Description
Current page number.
- Name
meta.limit- Type
- integer
- Description
Maximum results per page.
- Name
meta.total- Type
- integer
- Description
Total matching records.
- Name
meta.next_page- Type
- integer | null
- Description
Next page number, or null when there are no more pages.
- Name
meta.date- Type
- string
- Description
Resolved date.
- Name
meta.release- Type
- integer
- Description
Accepted PFS release ID.
- Name
meta.missing_codes- Type
- string[]
- Description
Requested codes absent from the selected release.
Response behavior and edge cases
A single record has no wrapper. Collections return data and meta, including date, release, page, limit, total, next_page, and missing_codes. next_page is null at the end. Missing requested codes appear in missing_codes, never disappear without explanation.
Records contain code, nullable name and category, date, release, payment_status, rvus, indicators, and components. RVUs are exact decimal strings: work, pe_non_facility, pe_facility, and mp. Indicators include global_days, pctc, multiple_procedure, bilateral, preop, intraop, postop, assistant, co_surgeon, and team. Missing facts are null. components contains available 26 and TC RVUs. Use rates to price them.
Editorial content and missing data
An included insight is null when no renderable explanation exists. Otherwise it contains summary, description, faqs, related_codes, comparisons, source, its own release, and generated_at. Editorial content is not historical CMS data; its source release can differ from the requested code release.
A missing single code returns 404 code_not_in_release. A date without an accepted dataset returns 422 data_unavailable. No record is fabricated from an earlier release.
Request
curl -G 'https://feebase.co/api/v1/codes' \
-H 'Authorization: Bearer YOUR_API_KEY' \
--data-urlencode 'codes[]=97110' \
--data-urlencode 'codes[]=97530'Response
{
"data": [
{
"code": "97110",
"name": null,
"category": null,
"date": "2026-10-06",
"release": 1,
"payment_status": "A",
"rvus": {
"work": "1.920",
"pe_non_facility": "1.810",
"pe_facility": "0.740",
"mp": "0.140"
},
"indicators": {
"global_days": "XXX",
"pctc": "0",
"multiple_procedure": "0",
"bilateral": "0",
"preop": "0.0000",
"intraop": "0.0000",
"postop": "0.0000",
"assistant": "0",
"co_surgeon": "0",
"team": "0"
},
"components": []
},
{
"code": "97530",
"name": null,
"category": null,
"date": "2026-10-06",
"release": 1,
"payment_status": "A",
"rvus": {
"work": "1.920",
"pe_non_facility": "1.810",
"pe_facility": "0.740",
"mp": "0.140"
},
"indicators": {
"global_days": "XXX",
"pctc": "0",
"multiple_procedure": "0",
"bilateral": "0",
"preop": "0.0000",
"intraop": "0.0000",
"postop": "0.0000",
"assistant": "0",
"co_surgeon": "0",
"team": "0"
},
"components": []
}
],
"meta": {
"date": "2026-10-06",
"release": 1,
"page": 1,
"limit": 50,
"total": 2,
"next_page": null,
"missing_codes": []
}
}Illustrative response. Values and release IDs are examples.
Retrieve a code
Retrieve one code’s RVUs, payment indicators, and available professional or technical components.
Required attributes
- Name
code- Type
- string
- Description
Five-character procedure code supplied in the URL path.
Optional attributes
- Name
date- Type
- string
- Description
Service date in YYYY-MM-DD format. Defaults to today in UTC.
- Name
include- Type
- string
- Description
Set to insight to include the AI-assisted editorial explanation.
Parameter usage notes
code is the five-character path parameter. date defaults to today UTC. include=insight adds the optional editorial explanation described above. Collection parameters are not accepted.
Response
- Name
code- Type
- string
- Description
Five-character procedure code.
- Name
name- Type
- string | null
- Description
Display name when available.
- Name
category- Type
- string | null
- Description
Code category when available.
- Name
date- Type
- string
- Description
Resolved service date in YYYY-MM-DD format.
- Name
release- Type
- integer
- Description
Accepted PFS release identifier.
- Name
payment_status- Type
- string | null
- Description
CMS payment status indicator.
- Name
rvus- Type
- object | null
- Description
Relative value units. Missing facts are null.
- Name
rvus.work- Type
- decimal string | null
- Description
work RVUs, represented as an exact decimal string.
- Name
rvus.pe_non_facility- Type
- decimal string | null
- Description
pe non facility RVUs, represented as an exact decimal string.
- Name
rvus.pe_facility- Type
- decimal string | null
- Description
pe facility RVUs, represented as an exact decimal string.
- Name
rvus.mp- Type
- decimal string | null
- Description
mp RVUs, represented as an exact decimal string.
- Name
indicators- Type
- object | null
- Description
CMS payment and procedure indicators.
- Name
indicators.global_days- Type
- string | null
- Description
global days indicator from the selected release.
- Name
indicators.pctc- Type
- string | null
- Description
pctc indicator from the selected release.
- Name
indicators.multiple_procedure- Type
- string | null
- Description
multiple procedure indicator from the selected release.
- Name
indicators.bilateral- Type
- string | null
- Description
bilateral indicator from the selected release.
- Name
indicators.preop- Type
- string | null
- Description
preop indicator from the selected release.
- Name
indicators.intraop- Type
- string | null
- Description
intraop indicator from the selected release.
- Name
indicators.postop- Type
- string | null
- Description
postop indicator from the selected release.
- Name
indicators.assistant- Type
- string | null
- Description
assistant indicator from the selected release.
- Name
indicators.co_surgeon- Type
- string | null
- Description
co surgeon indicator from the selected release.
- Name
indicators.team- Type
- string | null
- Description
team indicator from the selected release.
- Name
components- Type
- object | array
- Description
Available 26 and TC component RVUs, keyed by modifier. Empty when no components exist.
- Name
insight- Type
- object | null · optional
- Description
Included only with include=insight. Contains summary, description, FAQs, related codes, comparisons, editorial source, release, and generated_at.
Response behavior and edge cases
The code record is returned without a wrapper, using the same fields as the collection. A missing code returns 404 code_not_in_release; a date without an accepted dataset returns 422 data_unavailable.
Request
curl -G 'https://feebase.co/api/v1/codes/99214' \
-H 'Authorization: Bearer YOUR_API_KEY'Response
{
"code": "99214",
"name": null,
"category": null,
"date": "2026-10-06",
"release": 1,
"payment_status": "A",
"rvus": {
"work": "1.920",
"pe_non_facility": "1.810",
"pe_facility": "0.740",
"mp": "0.140"
},
"indicators": {
"global_days": "XXX",
"pctc": "0",
"multiple_procedure": "0",
"bilateral": "0",
"preop": "0.0000",
"intraop": "0.0000",
"postop": "0.0000",
"assistant": "0",
"co_surgeon": "0",
"team": "0"
},
"components": []
}Illustrative response. Values and release IDs are examples.
