localis
API key

Describe a service in plain words, or type a CPT/HCPCS code.

Claims & MPPR API

API v1

Check cross-line claim rules, NCCI edits, unit ceilings, and multiple-procedure reductions.

Claim check

Check the lines of one claim (one patient, one date of service) against the rules that only exist between lines: the multiple-procedure reduction (MPPR) ranks the surgical lines and pays 100%/50%/50%…, NCCI procedure-to-procedure (PTP) edits flag pairs that bundle (including whether a 59/X{EPSU} modifier bypasses the edit), and medically unlikely edits (MUE) check units per line or summed per date of service, per each code's adjudication indicator.

PTP and MUE verdicts are edit facts, not deductions — a flagged line keeps its computed amount and the flag says why a payer would deny it. Two releases answer a claim check and both are echoed: the PFS release that priced the lines and the NCCI release that supplied the edits. When no NCCI release covers the period, the edit sections are absent and a warning says so.

POST /v1/claims/check
lines
array — required
Up to 50 claim lines, each an object { code, modifier?, units?, time_minutes? }. The whole claim is one patient on one date of service — that scope is what makes the cross-line rules meaningful.
lines.*.modifier
string
The billed modifier. Informational modifiers (59, XE/XS/XP/XU, 25, 51, …) are accepted: they don't change the fee-schedule amount, but 59/X{EPSU} drive the NCCI PTP bypass check.
lines.*.units
integer
Units of service on the line (default 1). Feeds the MUE check for every indicator; also multiplies into MPPR ranking for indicator-5 (therapy) lines specifically — a 2-unit line contributes 2 ranking slots.
qpp
boolean
Claim-level (one claim has one rendering provider): use the QP conversion factor (CY2026+).
claim_type
professional|institutional
Disambiguates indicator-5 (therapy) MPPR for a date of service in 2013-01-01–2013-03-31 only, when CMS's reduction depends on claim format (837P vs 837I), not date alone. Applies to every line on the claim.
locality / locality_id / zip
string / integer / string
Same as the single lookup — shared across every line on the claim.
setting, sequestration, year, quarter, as_of
Same as the single lookup. as_of doubles as the claim's date of service for the PTP effective/deletion windows.
request
curl -X POST https://localishealth.com/v1/claims/check \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"lines": [{"code": "27447"}, {"code": "27369", "modifier": "59", "units": 1}], "locality": "01182-18"}'
response — 200
{
  "release": { "schedule": "pfs", "year": 2026, "quarter": "A", "revision": 1 },
  "ncci_release": { "schedule": "ncci", "year": 2026, "quarter": "A", "revision": 1 },
  "locality": { "mac": "01182", "code": "18", "state": "CA", "name": "Los Angeles, CA" },
  "setting": "non_facility",
  "sequestration_requested": false,
  "count": 2,
  "lines": [
    {
      "line": 0, "hcpcs": "27447", "modifier": null, "units": 1,
      "payable": true, "amount": 1391.42, "gross_amount": 1391.42,
      "rate": { "hcpcs": "27447", "amount": 1391.42, "payable": true, … },
      "mppr": { "rank": 1, "percentage_applied": 1.0, "adjusted_amount": 1391.42, "reduction_applied": false, "silo": "standard" },
      "mue": { "within_limit": true, "limit": 1, "adjudication_indicator": 2, "units_counted": 1, … }
    },
    {
      "line": 1, "hcpcs": "27369", "modifier": "59", "units": 1,
      "payable": true, "amount": 103.55, "gross_amount": 103.55,
      "rate": { "hcpcs": "27369", "amount": 207.10, "gross_amount": 207.10, "payable": true, … },
      "mppr": { "rank": 2, "percentage_applied": 0.5, "base_allowed": 207.10, "adjusted_amount": 103.55, "reduction_applied": true, "silo": "standard" },
      "mue": { … }
    }
  ],
  "ptp_edits": [
    {
      "column1": { "line": 0, "hcpcs": "27447" },
      "column2": { "line": 1, "hcpcs": "27369" },
      "modifier_indicator": "1",
      "bundled": true, "bypassable": true, "billable": true,
      "reason": "Modifier indicator 1: bypassed by modifier 59.",
      "citation": { "file": "ccipra-…csv", "row": 118204, … }
    }
  ]
}

The per-line audit chain reads rate.gross_amount (the base allowed amount) → mppr.adjusted_amount (after ranking) → amount (after sequestration, when requested). mppr.silo names which MPPR ranking pool priced the line (standard, endoscopy, imaging, therapy, cardio, or ophtho) and, when a reduction cites a specific CMS transmittal or manual section, mppr.citation carries it. A line whose silo couldn't price it (missing component data, an unresolvable endoscopy base code) is never guessed — it comes back at full amount with a reason.

NCCI procedure-to-procedure edit

Whether CMS bundles a code pair, without constructing a claim. Same rows that drive claim check — reach for this when the question is the reference fact rather than a specific claim.

PTP pairs are directional: column 2 is the component code that gets denied. You don't have to know which side yours is on — both orders are checked, and the response names the real column assignment. A pair with no edit is not thereby payable together; MUE, medical necessity, and each code's fee-schedule status are separate gates.

GET /v1/ncci/ptp
code_1
string — required
One of the two codes. Order doesn't matter — both directions are checked, and the response reports which code CMS files in column 2.
code_2
string — required
The other code.
as_of
date
Selects the NCCI release effective on this date and supplies the date of service for the edit's effective/deletion window. Defaults to today.
year, quarter
integer, A|B|C|D
Answer from a specific NCCI release instead of the latest.
request
curl "https://localishealth.com/v1/ncci/ptp?code_1=11111&code_2=22222" \
  -H "Authorization: Bearer sk_live_…"
response — 200
{
  "codes": ["11111", "22222"],
  "as_of": "2026-08-10",
  "edit": {
    "column_1": "11111",
    "column_2": "22222",
    "modifier_indicator": "1",
    "effective_date": "2013-01-01",
    "deletion_date": null
  },
  "bundled": true,
  "bypassable": true,
  "bypass_modifiers": ["59", "XE", "XS", "XP", "XU"],
  "reason": "Modifier indicator 1: bundled without an NCCI-associated modifier …",
  "release": { "schedule": "ncci", "year": 2026, "quarter": "A", "revision": 1 }
}

Medically unlikely edit

The unit ceiling for a code, with the window it applies over — which is what makes the bare number safe to act on. Indicator 1 is a claim-line edit; 2 and 3 apply across every line of the code on one date of service, so three lines of two units is six units against the ceiling, not two.

2 and 3 are both date-of-service edits but are not interchangeable, and the response distinguishes them: an indicator of 2 is absolute, and CMS instructs contractors that overriding it would be contrary to CMS policy, while an indicator of 3 rests on clinical benchmarks and a contractor may bypass it given evidence the units were provided, correctly coded, and medically necessary. Either way the denial is appealable — the indicator governs the contractor's bypass, not your right to appeal.

GET /v1/mue/{hcpcs}
mue_value
integer
The unit ceiling CMS publishes for the code.
adjudication_indicator
integer
1 is a claim-line edit; 2 and 3 apply per date of service.
adjudication
string
The window the ceiling applies over, spelled out — "claim line" or "date of service".
adjudication_basis
string|null
What a date-of-service ceiling rests on — "absolute" for indicator 2, "clinical benchmarks" for 3. Null for a claim-line edit, where the question doesn't arise in this form.
contractor_may_bypass
boolean
Whether a contractor may allow units above the ceiling on evidence. True only for indicator 3. False for 1 not because the units are unrecoverable, but because the remedy there is reporting them correctly across lines rather than a contractor override.
notes[]
array
Rule statements, each with a stable code and — where it states a rule rather than describes our data — a source naming the CMS document, passage, and sentence.
year, quarter
integer, A|B|C|D
Answer from a specific NCCI release instead of the latest.
as_of
date
Answer from the NCCI release effective on this date instead of the latest.
response — 200
{
  "hcpcs": "11111",
  "mue_value": 3,
  "adjudication_indicator": 3,
  "adjudication": "date of service",
  "adjudication_basis": "clinical benchmarks",
  "contractor_may_bypass": true,
  "release": { "schedule": "ncci", "year": 2026, "quarter": "A", "revision": 1 },
  "notes": [
    {
      "code": "mue_adjudicated_per_day_clinical",
      "message": "Adjudication indicator 3 is a date-of-service edit based on clinical benchmarks: …",
      "source": {
        "label": "CMS Medicare NCCI Policy Manual (2026)",
        "url": "https://www.cms.gov/files/document/2026-ncci-medicare-policy-manual-all-chapters.pdf",
        "locator": "Chapter 1, pages I-27–I-28",
        "quote": "the contractor may bypass the MUE for a HCPCS code with an MAI of \"3\" …"
      }
    }
  ]
}

Each entry in notes carries a stable code you can branch on, and — where the statement is a rule rather than a description of our own data — a source naming the CMS document, the passage, and the sentence it rests on. The codes are part of the API contract; we won't rename or reuse one once it ships.

MPPR calculator

The dedicated Multiple Procedure Payment Reduction endpoint — same engine as claim check, with a response shaped for the MPPR question specifically. Every reduction — and every non-reduction — carries a reason and a citation, and the response adds a summary block grouping lines by ranking silo (standard, endoscopy, imaging, therapy, cardio, ophtho) with the unreduced-vs-reduced totals, so you don't have to compute the delta by hand.

POST /v1/mppr
lines
array — required
Up to 50 claim lines, each an object { code, modifier?, units?, time_minutes? }. The whole claim is one patient on one date of service — that scope is what makes the cross-line rules meaningful.
lines.*.modifier
string
The billed modifier. Informational modifiers (59, XE/XS/XP/XU, 25, 51, …) are accepted: they don't change the fee-schedule amount, but 59/X{EPSU} drive the NCCI PTP bypass check.
lines.*.units
integer
Units of service on the line (default 1). Feeds the MUE check for every indicator; also multiplies into MPPR ranking for indicator-5 (therapy) lines specifically — a 2-unit line contributes 2 ranking slots.
qpp
boolean
Claim-level (one claim has one rendering provider): use the QP conversion factor (CY2026+).
claim_type
professional|institutional
Disambiguates indicator-5 (therapy) MPPR for a date of service in 2013-01-01–2013-03-31 only, when CMS's reduction depends on claim format (837P vs 837I), not date alone. Applies to every line on the claim.
locality / locality_id / zip
string / integer / string
Same as the single lookup — shared across every line on the claim.
setting, sequestration, year, quarter, as_of
Same as the single lookup. as_of doubles as the claim's date of service for the PTP effective/deletion windows.
request
curl -X POST https://localishealth.com/v1/mppr \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"lines": [{"code": "70450"}, {"code": "71250"}], "locality": "01182-18"}'
response — 200
{
  "release": { "schedule": "pfs", "year": 2026, "quarter": "A", "revision": 1 },
  "count": 2,
  "lines": [
    {
      "line": 0, "hcpcs": "70450", "modifier": null, "units": 1,
      "payable": true, "amount": 60.00,
      "mppr": { "rank": 1, "silo": "imaging", "adjusted_amount": 60.00, "reduction_applied": false, "reason": "TC ranked 1 …" }
    },
    {
      "line": 1, "hcpcs": "71250", "modifier": null, "units": 1,
      "payable": true, "amount": 19.50,
      "mppr": {
        "silo": "imaging", "adjusted_amount": 19.50, "reduction_applied": true,
        "reason": "TC rank 2: TC −50%, ACA §3135(b), effective 2010-07-01. PC rank 2: PC −5%, CAA 2016 §502(a)(2), effective 2017-01-01.",
        "citation": { "label": "CMS Transmittal R694OTN: MPPR on the Technical Component of Certain Diagnostic Imaging Procedures", "url": "https://www.cms.gov/…" }
      }
    }
  ],
  "summary": {
    "by_silo": { "imaging": [0, 1] },
    "totals": { "unreduced_total": 80.00, "reduced_total": 79.50, "delta": 0.50, "by_report_line_count": 0 }
  }
}

MPPR policy table

The date-ranged rule table behind MPPR pricing, as data — every rule with its effective range, percentage, mechanics, and citation. Static and release-independent, and the natural home for advertising an upcoming (future-dated) rule change once it's appended. Rules are append-only: an old date of service always resolves to the rule that was actually in force.

GET /v1/mppr/policy
response — 200
{
  "count": 11,
  "rows": [
    {
      "indicator": "7", "component": "tc", "percentage_paid": 0.80,
      "effective_from": "2013-01-01", "effective_to": null,
      "mechanics": "TC reduced 20% for the second and subsequent ranked procedure …",
      "authority_note": null, "claim_type": null,
      "citation": { "label": "CMS Transmittal R1149OTN: MPPR on the Technical Component of Diagnostic Cardiovascular and Ophthalmology Procedures", "url": "https://www.cms.gov/…" }
    }
  ]
}