{"openapi":"3.1.0","info":{"title":"DenialPath API","version":"1.0.0","description":"DenialPath checks a claim against the CMS NCCI procedure-to-procedure and medically unlikely edits in force on its date of service, and explains what a CARC or RARC denial actually means and how to fix it, citing the CMS or X12 source behind every verdict. Where we hold no edit for a code we say so rather than reporting a pass. The free single-claim scrubber runs entirely in your browser, so claim data is never transmitted. The same engine is a single-key JSON API and an MCP server, so autonomous medical billing agents can scrub a claim and resolve a denial mid-task.","contact":{"name":"DenialPath","url":"https://denialpath.vercel.app","email":"hello@denialpath.com"}},"servers":[{"url":"https://denialpath.vercel.app"}],"security":[{},{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"ld_live_*"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]},"Citation":{"type":"object","description":"A single cited source behind one verdict. confidence \"verify\" MUST be rendered as Unverified, never as fact.","properties":{"source":{"type":"string","description":"Human label for the source, e.g. \"CMS NCCI PTP Edits\"."},"url":{"type":"string","format":"uri"},"quarter":{"type":["string","null"],"description":"The CMS edit quarter this value belongs to, when versioned."},"retrievedAt":{"type":["string","null"],"format":"date"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["source","url","confidence"]},"ClaimInput":{"type":"object","properties":{"dateOfService":{"type":"string","format":"date","description":"ISO yyyy-mm-dd. Selects the CMS edit quarter."},"payerSlug":{"type":["string","null"]},"lines":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"CPT/HCPCS code, referenced numerically only."},"modifiers":{"type":"array","items":{"type":"string"}},"units":{"type":"integer"}},"required":["code","modifiers","units"]}}},"required":["dateOfService","lines"]},"Finding":{"type":"object","properties":{"kind":{"type":"string","enum":["ptp","mue","input"]},"status":{"type":"string","enum":["pass","fail","bypassed","no_data"],"description":"no_data means the code or pair was never checked against our dataset. It is NOT a pass."},"lineIndexes":{"type":"array","items":{"type":"integer"},"description":"0-based indexes into the request's lines."},"codes":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"rule":{"type":"string"},"remedy":{"type":"string","description":"What to do next. Empty string when status is pass."},"resolvingModifiers":{"type":"array","items":{"type":"string"},"description":"Modifiers that would legitimately bypass this PTP edit, when status is fail with kind ptp and indicator 1."},"bypassedBy":{"type":"string","description":"The modifier that actually bypassed the edit, when status is bypassed."},"citation":{"type":"object","description":"A single cited source behind one verdict. confidence \"verify\" MUST be rendered as Unverified, never as fact.","properties":{"source":{"type":"string","description":"Human label for the source, e.g. \"CMS NCCI PTP Edits\"."},"url":{"type":"string","format":"uri"},"quarter":{"type":["string","null"],"description":"The CMS edit quarter this value belongs to, when versioned."},"retrievedAt":{"type":["string","null"],"format":"date"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["source","url","confidence"]}},"required":["kind","status","lineIndexes","codes","summary","rule","remedy"]},"ScrubResult":{"type":"object","properties":{"input":{"type":"object","properties":{"dateOfService":{"type":"string","format":"date","description":"ISO yyyy-mm-dd. Selects the CMS edit quarter."},"payerSlug":{"type":["string","null"]},"lines":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"CPT/HCPCS code, referenced numerically only."},"modifiers":{"type":"array","items":{"type":"string"}},"units":{"type":"integer"}},"required":["code","modifiers","units"]}}},"required":["dateOfService","lines"]},"editQuarter":{"type":"string","description":"The CMS edit quarter the verdict was computed against, e.g. \"2026 Q3\"."},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["ptp","mue","input"]},"status":{"type":"string","enum":["pass","fail","bypassed","no_data"],"description":"no_data means the code or pair was never checked against our dataset. It is NOT a pass."},"lineIndexes":{"type":"array","items":{"type":"integer"},"description":"0-based indexes into the request's lines."},"codes":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"rule":{"type":"string"},"remedy":{"type":"string","description":"What to do next. Empty string when status is pass."},"resolvingModifiers":{"type":"array","items":{"type":"string"},"description":"Modifiers that would legitimately bypass this PTP edit, when status is fail with kind ptp and indicator 1."},"bypassedBy":{"type":"string","description":"The modifier that actually bypassed the edit, when status is bypassed."},"citation":{"type":"object","description":"A single cited source behind one verdict. confidence \"verify\" MUST be rendered as Unverified, never as fact.","properties":{"source":{"type":"string","description":"Human label for the source, e.g. \"CMS NCCI PTP Edits\"."},"url":{"type":"string","format":"uri"},"quarter":{"type":["string","null"],"description":"The CMS edit quarter this value belongs to, when versioned."},"retrievedAt":{"type":["string","null"],"format":"date"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["source","url","confidence"]}},"required":["kind","status","lineIndexes","codes","summary","rule","remedy"]}},"summary":{"type":"object","properties":{"total":{"type":"integer"},"failures":{"type":"integer"},"bypassed":{"type":"integer"},"noData":{"type":"integer"},"clean":{"type":"boolean","description":"True only when every finding is pass and none are no_data."}},"required":["total","failures","bypassed","noData","clean"]},"coverage":{"type":"object","properties":{"ptpPairsLoaded":{"type":"integer"},"mueCodesLoaded":{"type":"integer"},"note":{"type":"string"}},"required":["ptpPairsLoaded","mueCodesLoaded","note"]}},"required":["input","editQuarter","findings","summary","coverage"]},"Carc":{"type":"object","properties":{"code":{"type":"string"},"commonGroups":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"plainMeaning":{"type":"string"},"whyItFires":{"type":"array","items":{"type":"string"}},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"appealWorthiness":{"type":"string","enum":["low","medium","high"]},"appealNote":{"type":"string"},"relatedRarc":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","title","plainMeaning","confidence"]},"Rarc":{"type":"object","properties":{"code":{"type":"string"},"type":{"type":"string","enum":["informational","alert"]},"title":{"type":"string"},"plainMeaning":{"type":"string"},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"relatedCarc":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","title","plainMeaning","confidence"]},"DenialExplanation":{"type":"object","properties":{"found":{"type":"boolean","description":"False means we do not hold this CARC in our dataset."},"group":{"type":["object","null"],"properties":{"code":{"type":"string"},"meaning":{"type":"string"}}},"carc":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"commonGroups":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"plainMeaning":{"type":"string"},"whyItFires":{"type":"array","items":{"type":"string"}},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"appealWorthiness":{"type":"string","enum":["low","medium","high"]},"appealNote":{"type":"string"},"relatedRarc":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","title","plainMeaning","confidence"]},{"type":"null"}]},"rarc":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"type":{"type":"string","enum":["informational","alert"]},"title":{"type":"string"},"plainMeaning":{"type":"string"},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"relatedCarc":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","title","plainMeaning","confidence"]}},"unknownRarc":{"type":"array","items":{"type":"string"},"description":"RARC codes you passed that we do not hold."},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"appeal":{"type":"object","properties":{"worthiness":{"type":"string","enum":["low","medium","high","unknown"]},"note":{"type":"string"},"payer":{"anyOf":[{"type":"object","properties":{"payer":{"type":"string"},"slug":{"type":"string"},"initialClaimLimitDays":{"type":["integer","null"]},"limitText":{"type":"string"},"clockStartsFrom":{"type":"string"},"appealLimitDays":{"type":["integer","null"]},"notes":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["payer","slug","confidence"]},{"type":"null"}]},"deadlineDays":{"type":["integer","null"]}}},"note":{"type":"string","description":"Explains a false `found`; empty string otherwise."}},"required":["found","carc","rarc","unknownRarc","correctiveActions","appeal","note"]},"PtpPair":{"type":"object","properties":{"column1":{"type":"string","description":"The payable comprehensive code."},"column2":{"type":"string","description":"The component code that gets bundled into column1."},"modifierIndicator":{"type":"string","enum":["0","1","9"],"description":"0: no modifier may bypass. 1: a modifier may bypass when the services were genuinely distinct. 9: edit not applicable / deleted."},"effectiveDate":{"type":"string","format":"date"},"deletionDate":{"type":["string","null"],"format":"date"},"rationale":{"type":"string"},"note":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["column1","column2","modifierIndicator","effectiveDate","confidence"]},"MueLimit":{"type":"object","properties":{"code":{"type":"string"},"mueValue":{"type":"number"},"mai":{"type":"string","enum":["1","2","3"]},"maiMeaning":{"type":"string"},"serviceType":{"type":"string"},"note":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","mueValue","mai","maiMeaning","confidence"]},"TimelyFilingPayer":{"type":"object","properties":{"payer":{"type":"string"},"slug":{"type":"string"},"initialClaimLimitDays":{"type":["integer","null"]},"limitText":{"type":"string"},"clockStartsFrom":{"type":"string"},"appealLimitDays":{"type":["integer","null"]},"notes":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["payer","slug","confidence"]},"AppealRequest":{"type":"object","properties":{"carc":{"type":"string","description":"CARC code from the remittance, e.g. \"CO-45\" or \"45\"."},"rarc":{"type":"array","items":{"type":"string"}},"payerSlug":{"type":"string"},"providerName":{"type":"string"},"claimNumber":{"type":"string"},"dateOfService":{"type":"string","format":"date"},"codes":{"type":"array","items":{"type":"string"}},"practiceNote":{"type":"string"}},"required":["carc"]},"AppealLetter":{"type":"object","properties":{"subject":{"type":"string"},"body":{"type":"string"},"citations":{"type":"array","items":{"type":"object","description":"A single cited source behind one verdict. confidence \"verify\" MUST be rendered as Unverified, never as fact.","properties":{"source":{"type":"string","description":"Human label for the source, e.g. \"CMS NCCI PTP Edits\"."},"url":{"type":"string","format":"uri"},"quarter":{"type":["string","null"],"description":"The CMS edit quarter this value belongs to, when versioned."},"retrievedAt":{"type":["string","null"],"format":"date"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["source","url","confidence"]}},"placeholders":{"type":"array","items":{"type":"string"},"description":"Fields the practice must complete before sending. Never auto-filled."},"grounded":{"type":"boolean","description":"True only when we hold the CARC and could argue it specifically."}},"required":["subject","body","citations","placeholders","grounded"]}}},"paths":{"/api/v1/scrub":{"post":{"summary":"Scrub a claim against the NCCI procedure-to-procedure (PTP) edits and medically unlikely edits (MUE) in force on the date of service. Deterministic: no model, so identical input always returns an identical verdict. Every finding is one of four statuses: pass (checked and clean), fail (an edit fires), bypassed (an edit fires but a modifier already on the line legitimately resolves it), or no_data (we hold no edit for this code or pair). no_data is NOT a pass: CMS may still deny it under an edit outside our loaded subset. The response echoes editQuarter (the CMS quarter the verdict was computed against) and coverage (how many PTP pairs and MUE codes are loaded), so you always know what was actually checked. Supports an `Idempotency-Key` header for keyed callers: replaying the same key returns the original result rather than a second billable call.","operationId":"post_api_v1_scrub","security":[{},{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"input":{"type":"object","properties":{"dateOfService":{"type":"string","format":"date","description":"ISO yyyy-mm-dd. Selects the CMS edit quarter."},"payerSlug":{"type":["string","null"]},"lines":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"CPT/HCPCS code, referenced numerically only."},"modifiers":{"type":"array","items":{"type":"string"}},"units":{"type":"integer"}},"required":["code","modifiers","units"]}}},"required":["dateOfService","lines"]},"editQuarter":{"type":"string","description":"The CMS edit quarter the verdict was computed against, e.g. \"2026 Q3\"."},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["ptp","mue","input"]},"status":{"type":"string","enum":["pass","fail","bypassed","no_data"],"description":"no_data means the code or pair was never checked against our dataset. It is NOT a pass."},"lineIndexes":{"type":"array","items":{"type":"integer"},"description":"0-based indexes into the request's lines."},"codes":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"rule":{"type":"string"},"remedy":{"type":"string","description":"What to do next. Empty string when status is pass."},"resolvingModifiers":{"type":"array","items":{"type":"string"},"description":"Modifiers that would legitimately bypass this PTP edit, when status is fail with kind ptp and indicator 1."},"bypassedBy":{"type":"string","description":"The modifier that actually bypassed the edit, when status is bypassed."},"citation":{"type":"object","description":"A single cited source behind one verdict. confidence \"verify\" MUST be rendered as Unverified, never as fact.","properties":{"source":{"type":"string","description":"Human label for the source, e.g. \"CMS NCCI PTP Edits\"."},"url":{"type":"string","format":"uri"},"quarter":{"type":["string","null"],"description":"The CMS edit quarter this value belongs to, when versioned."},"retrievedAt":{"type":["string","null"],"format":"date"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["source","url","confidence"]}},"required":["kind","status","lineIndexes","codes","summary","rule","remedy"]}},"summary":{"type":"object","properties":{"total":{"type":"integer"},"failures":{"type":"integer"},"bypassed":{"type":"integer"},"noData":{"type":"integer"},"clean":{"type":"boolean","description":"True only when every finding is pass and none are no_data."}},"required":["total","failures","bypassed","noData","clean"]},"coverage":{"type":"object","properties":{"ptpPairsLoaded":{"type":"integer"},"mueCodesLoaded":{"type":"integer"},"note":{"type":"string"}},"required":["ptpPairsLoaded","mueCodesLoaded","note"]}},"required":["input","editQuarter","findings","summary","coverage"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dateOfService":{"type":"string","format":"date","description":"ISO yyyy-mm-dd. Selects the CMS edit quarter."},"payerSlug":{"type":["string","null"]},"lines":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"CPT/HCPCS code, referenced numerically only."},"modifiers":{"type":"array","items":{"type":"string"}},"units":{"type":"integer"}},"required":["code","modifiers","units"]}}},"required":["dateOfService","lines"]}}}}}},"/api/v1/denial":{"get":{"summary":"Explain a CARC (Claim Adjustment Reason Code) and any RARCs (Remittance Advice Remark Codes) from a remittance: what the denial means, ranked corrective actions, and whether an appeal is worth filing. found:false means we do not hold that CARC in our dataset (X12 publishes far more codes than we curate); unknownRarc reports, rather than silently drops, any RARC you passed that we do not hold. Passing payer additionally attaches that payer's appeal deadline where we hold one.","operationId":"get_api_v1_denial","security":[{},{"bearerAuth":[]}],"parameters":[{"name":"carc","in":"query","required":true,"description":"CARC code, with or without a group prefix, e.g. \"CO-45\" or \"45\".","schema":{"type":"string"}},{"name":"rarc","in":"query","required":false,"description":"Optional RARC code(s). Comma-separated, or repeat the parameter.","schema":{"type":"string"}},{"name":"payer","in":"query","required":false,"description":"Optional payer slug, to attach a timely-filing appeal deadline.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"found":{"type":"boolean","description":"False means we do not hold this CARC in our dataset."},"group":{"type":["object","null"],"properties":{"code":{"type":"string"},"meaning":{"type":"string"}}},"carc":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"commonGroups":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"plainMeaning":{"type":"string"},"whyItFires":{"type":"array","items":{"type":"string"}},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"appealWorthiness":{"type":"string","enum":["low","medium","high"]},"appealNote":{"type":"string"},"relatedRarc":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","title","plainMeaning","confidence"]},{"type":"null"}]},"rarc":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"type":{"type":"string","enum":["informational","alert"]},"title":{"type":"string"},"plainMeaning":{"type":"string"},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"relatedCarc":{"type":"array","items":{"type":"string"}},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","title","plainMeaning","confidence"]}},"unknownRarc":{"type":"array","items":{"type":"string"},"description":"RARC codes you passed that we do not hold."},"correctiveActions":{"type":"array","items":{"type":"object","properties":{"step":{"type":"string"},"detail":{"type":"string"}},"required":["step","detail"]}},"appeal":{"type":"object","properties":{"worthiness":{"type":"string","enum":["low","medium","high","unknown"]},"note":{"type":"string"},"payer":{"anyOf":[{"type":"object","properties":{"payer":{"type":"string"},"slug":{"type":"string"},"initialClaimLimitDays":{"type":["integer","null"]},"limitText":{"type":"string"},"clockStartsFrom":{"type":"string"},"appealLimitDays":{"type":["integer","null"]},"notes":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["payer","slug","confidence"]},{"type":"null"}]},"deadlineDays":{"type":["integer","null"]}}},"note":{"type":"string","description":"Explains a false `found`; empty string otherwise."}},"required":["found","carc","rarc","unknownRarc","correctiveActions","appeal","note"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/ncci":{"get":{"summary":"Look up NCCI procedure-to-procedure (PTP) edits. Two modes: pass column1 and column2 (either order) with dateOfService to check whether a specific pair bundles on that date, or pass code alone to list every pair in the dataset involving that code. In pair mode, status is no_data (we hold no edit for this pair; not confirmation CMS has none), not_applicable (we hold the edit but it does not govern this date, or its modifierIndicator is \"9\"), or applies. modifierIndicator \"0\" means no modifier may bypass the edit; \"1\" means a modifier may bypass it when the services were genuinely distinct.","operationId":"get_api_v1_ncci","security":[{},{"bearerAuth":[]}],"parameters":[{"name":"column1","in":"query","required":false,"description":"A CPT/HCPCS code. Pair mode: use with column2 and dateOfService.","schema":{"type":"string"}},{"name":"column2","in":"query","required":false,"description":"The other code in the pair.","schema":{"type":"string"}},{"name":"dateOfService","in":"query","required":false,"description":"ISO yyyy-mm-dd. Required in pair mode; NCCI edits are versioned quarterly.","schema":{"type":"string"}},{"name":"code","in":"query","required":false,"description":"List mode: a single code. Returns every pair in the dataset involving it, in either column.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"data":{"type":"object","properties":{"column1":{"type":"string"},"column2":{"type":"string"},"dateOfService":{"type":"string","format":"date"},"editQuarter":{"type":"string"},"found":{"type":"boolean"},"appliesOnDate":{"type":"boolean"},"status":{"type":"string","enum":["no_data","not_applicable","applies"]},"edit":{"anyOf":[{"type":"object","properties":{"column1":{"type":"string","description":"The payable comprehensive code."},"column2":{"type":"string","description":"The component code that gets bundled into column1."},"modifierIndicator":{"type":"string","enum":["0","1","9"],"description":"0: no modifier may bypass. 1: a modifier may bypass when the services were genuinely distinct. 9: edit not applicable / deleted."},"effectiveDate":{"type":"string","format":"date"},"deletionDate":{"type":["string","null"],"format":"date"},"rationale":{"type":"string"},"note":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["column1","column2","modifierIndicator","effectiveDate","confidence"]},{"type":"null"}]}},"required":["column1","column2","dateOfService","editQuarter","found","appliesOnDate","status","edit"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]},{"type":"object","properties":{"data":{"type":"object","properties":{"code":{"type":"string"},"pairs":{"type":"array","items":{"type":"object","properties":{"column1":{"type":"string","description":"The payable comprehensive code."},"column2":{"type":"string","description":"The component code that gets bundled into column1."},"modifierIndicator":{"type":"string","enum":["0","1","9"],"description":"0: no modifier may bypass. 1: a modifier may bypass when the services were genuinely distinct. 9: edit not applicable / deleted."},"effectiveDate":{"type":"string","format":"date"},"deletionDate":{"type":["string","null"],"format":"date"},"rationale":{"type":"string"},"note":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["column1","column2","modifierIndicator","effectiveDate","confidence"]}},"count":{"type":"integer"}},"required":["code","pairs","count"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]}]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/mue":{"get":{"summary":"Look up the medically unlikely edit (MUE) unit limit for a single CPT/HCPCS code. status is found or no_data; no_data means we hold no MUE value for this code, not that CMS publishes none. When found, mai (the adjudication indicator: \"1\" line edit, \"2\" date-of-service absolute, \"3\" date-of-service clinical) governs what happens above the limit, explained in maiMeaning.","operationId":"get_api_v1_mue","security":[{},{"bearerAuth":[]}],"parameters":[{"name":"code","in":"query","required":true,"description":"CPT/HCPCS code, e.g. 36415.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"string","enum":["found","no_data"]},"limit":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"mueValue":{"type":"number"},"mai":{"type":"string","enum":["1","2","3"]},"maiMeaning":{"type":"string"},"serviceType":{"type":"string"},"note":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["code","mueValue","mai","maiMeaning","confidence"]},{"type":"null"}]}},"required":["code","status","limit"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/appeal":{"post":{"summary":"Generate an appeal letter for a denial, assembled deterministically from cited facts. REQUIRES A PRO OR SCALE PLAN: an anonymous or free-plan call returns an upgrade_required error naming the pricing page, never a fabricated or partial letter. Any fact only the practice holds (provider name, claim number, date of service, procedure codes, signature) that is not supplied is rendered as an explicit [TO BE COMPLETED BY PRACTICE] placeholder and listed in placeholders. grounded is true only when we hold the CARC supplied and could argue it specifically. Supports an `Idempotency-Key` header, the same as /scrub.","operationId":"post_api_v1_appeal","security":[{},{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subject":{"type":"string"},"body":{"type":"string"},"citations":{"type":"array","items":{"type":"object","description":"A single cited source behind one verdict. confidence \"verify\" MUST be rendered as Unverified, never as fact.","properties":{"source":{"type":"string","description":"Human label for the source, e.g. \"CMS NCCI PTP Edits\"."},"url":{"type":"string","format":"uri"},"quarter":{"type":["string","null"],"description":"The CMS edit quarter this value belongs to, when versioned."},"retrievedAt":{"type":["string","null"],"format":"date"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["source","url","confidence"]}},"placeholders":{"type":"array","items":{"type":"string"},"description":"Fields the practice must complete before sending. Never auto-filled."},"grounded":{"type":"boolean","description":"True only when we hold the CARC and could argue it specifically."}},"required":["subject","body","citations","placeholders","grounded"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"402":{"description":"Payment/plan required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"carc":{"type":"string","description":"CARC code from the remittance, e.g. \"CO-45\" or \"45\"."},"rarc":{"type":"array","items":{"type":"string"}},"payerSlug":{"type":"string"},"providerName":{"type":"string"},"claimNumber":{"type":"string"},"dateOfService":{"type":"string","format":"date"},"codes":{"type":"array","items":{"type":"string"}},"practiceNote":{"type":"string"}},"required":["carc"]}}}}}},"/api/v1/timely-filing":{"get":{"summary":"Days remaining to file an initial claim (or, if past, how far over) for a payer given a date of service. daysRemaining and expired are null when we hold no published timely filing limit for that payer, which is common since many limits are contract-specific; check note before treating the result as a deadline.","operationId":"get_api_v1_timely_filing","security":[{},{"bearerAuth":[]}],"parameters":[{"name":"payer","in":"query","required":true,"description":"Payer slug, e.g. aetna.","schema":{"type":"string"}},{"name":"dateOfService","in":"query","required":true,"description":"ISO yyyy-mm-dd.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"payerSlug":{"type":"string"},"dateOfService":{"type":"string","format":"date"},"checkedAt":{"type":"string","format":"date"},"payer":{"anyOf":[{"type":"object","properties":{"payer":{"type":"string"},"slug":{"type":"string"},"initialClaimLimitDays":{"type":["integer","null"]},"limitText":{"type":"string"},"clockStartsFrom":{"type":"string"},"appealLimitDays":{"type":["integer","null"]},"notes":{"type":"string"},"sourceUrl":{"type":"string","format":"uri"},"confidence":{"type":"string","enum":["verified","verify"]}},"required":["payer","slug","confidence"]},{"type":"null"}]},"daysElapsed":{"type":["integer","null"]},"daysRemaining":{"type":["integer","null"]},"expired":{"type":["boolean","null"]},"note":{"type":"string"}},"required":["payerSlug","dateOfService","payer","daysElapsed","daysRemaining","expired","note"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/pricing":{"get":{"summary":"Machine-readable pricing: every plan id, its monthly price (read live from lib/plans.ts, never hardcoded), what it includes, the included monthly API-call allowance (a hard ceiling, not a meter), rate limits, and whether it grants appeal-letter generation. Lets an agent self-select a plan without a human reading the pricing page. Free, keyless, not rate-limited.","operationId":"get_api_v1_pricing","security":[{},{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"currency":{"type":"string"},"unit":{"type":"string"},"determinism":{"type":"string"},"anonymous":{"type":"object","properties":{"price_usd":{"type":"number"},"rate_limit_per_minute":{"type":"integer"},"rate_limit_per_day":{"type":"integer"},"api_access":{"type":"boolean"},"appeal_letters":{"type":"boolean"},"note":{"type":"string"}}},"test_key":{"type":"object","properties":{"rate_limit_per_minute":{"type":"integer"},"rate_limit_per_day":{"type":"integer"},"bills":{"type":"boolean"},"appeal_letters":{"type":"boolean"},"note":{"type":"string"}}},"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["free","pro","scale"]},"name":{"type":"string"},"price_usd_per_month":{"type":"number"},"cadence":{"type":"string"},"tagline":{"type":"string"},"included_api_calls_per_month":{"type":"integer"},"rate_limit_per_minute":{"type":"integer"},"batch_claims_per_run":{"type":"integer"},"saved_claims":{"description":"An integer, or the string \"unlimited\"."},"seats":{"type":"integer"},"api_access":{"type":"boolean"},"claim_history":{"type":"boolean"},"batch_scrub":{"type":"boolean"},"appeal_letters":{"type":"boolean"},"denial_analytics":{"type":"boolean"},"mcp_production":{"type":"boolean"},"priority_support":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}}}}},"checkout":{"type":"object","properties":{"note":{"type":"string"},"upgrade_url":{"type":"string","format":"uri"}}}},"required":["currency","unit","anonymous","plans"]},"request_id":{"type":"string"},"disclaimer":{"type":"string"},"attribution":{"type":"string","description":"Present on free/anonymous responses only."}},"required":["data","request_id","disclaimer"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","upgrade_required","not_found","rate_limited","internal"]},"message":{"type":"string"},"details":{"type":"object","description":"Extra context where a handler supplies it. upgrade_required carries upgrade_url and required_plan."}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["error"]}}}}}}}}}