Bills, contracts and ledgers logo

Medical Bill Upcoding & Overcharge Slasher

$3.00 USDC per call · Business, finance and compliance · POST /api/v1/audit-medical-bill · Id medical-bill-auditor

Paste an itemized hospital or physician bill and get a decision first: dispute it or not, the estimated dollars above a defensible price, and a dispute letter ready to send. Flags E/M upcoding, NCCI unbundling, duplicates and unit errors line by line, prices professional claims against the CMS physician fee schedule, checks the No Surprises Act self-pay dispute deadline, and lists the letter's placeholders. Facility-charge benchmarks are model estimates and are labeled as such. Not legal or medical advice.

What you get

Hospital chargemaster prices often run several times Medicare rates and itemized bills commonly contain duplicate or bundled lines; a successful dispute on one ER bill typically saves hundreds to thousands of dollars.

Call it

Send the JSON body below to https://agents.writerslogic.com/api/v1/audit-medical-bill. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.

curl -i -X POST https://agents.writerslogic.com/api/v1/audit-medical-bill \
  -H 'content-type: application/json' \
  -d '{"facilityType":"emergency_room","claimType":"professional","coverage":"uninsured_self_pay","patientState":"TX","visitSummary":"Twisted ankle, 40-minute visit, one X-ray, no fracture, given an ACE bandage and ibuprofen.","goodFaithEstimateAmount":1200,"billReceivedDate":"2026-10-20","lineItems":[{"cptOrHcpcsCode":"99285","description":"ED visit level 5","chargedAmount":1850,"units":1,"serviceDate":"2026-09-14"},{"cptOrHcpcsCode":"73610","description":"X-ray ankle 3 views","chargedAmount":640,"units":1,"serviceDate":"2026-09-14"},{"cptOrHcpcsCode":"A4570","description":"Splint / elastic bandage","chargedAmount":185,"units":1,"serviceDate":"2026-09-14"},{"cptOrHcpcsCode":"99070","description":"Supplies and materials","chargedAmount":95,"units":1,"serviceDate":"2026-09-14"}]}'

Input

FieldTypeRequiredDescription
billTextstring; length 10..30000noAlternative to lineItems: paste the itemized bill, one line item per line, e.g. "99285 EMERGENCY DEPT VISIT LVL 5 1 $3,250.00". Lines with a CPT/HCPCS code and a dollar amount are read in code; send exactly one of lineItems or billText.
lineItemsarray<object>; max 200 itemsno
facilityTypestring; one of "emergency_room", "urgent_care", "outpatient_hospital", "inpatient_hospital", "ambulatory_surgery_center", "physician_office", "laboratory", "imaging_center", "other"yes
coveragestring; one of "uninsured_self_pay", "in_network", "out_of_network", "medicare", "medicaid", "unknown"noDetermines which No Surprises Act protections can apply.
patientStatestringno
visitSummarystring; length 0..4000noWhat actually happened: symptoms, duration, tests, treatment.
facilityNamestring; length 0..200no
patientNamestring; length 0..200no
accountNumberstring; length 0..100no
goodFaithEstimateAmountnumber; 0..10000000noGood Faith Estimate received (self-pay).
claimTypestring; one of "professional", "facility"noPhysician (CMS-1500) or hospital/facility (UB-04) bill. Medicare physician fee schedule benchmarks apply only to professional claims.
billReceivedDatestringnoDate the initial bill was received; used for the 120-day dispute deadline.

Example request body

{
  "facilityType": "emergency_room",
  "claimType": "professional",
  "coverage": "uninsured_self_pay",
  "patientState": "TX",
  "visitSummary": "Twisted ankle, 40-minute visit, one X-ray, no fracture, given an ACE bandage and ibuprofen.",
  "goodFaithEstimateAmount": 1200,
  "billReceivedDate": "2026-10-20",
  "lineItems": [
    {
      "cptOrHcpcsCode": "99285",
      "description": "ED visit level 5",
      "chargedAmount": 1850,
      "units": 1,
      "serviceDate": "2026-09-14"
    },
    {
      "cptOrHcpcsCode": "73610",
      "description": "X-ray ankle 3 views",
      "chargedAmount": 640,
      "units": 1,
      "serviceDate": "2026-09-14"
    },
    {
      "cptOrHcpcsCode": "A4570",
      "description": "Splint / elastic bandage",
      "chargedAmount": 185,
      "units": 1,
      "serviceDate": "2026-09-14"
    },
    {
      "cptOrHcpcsCode": "99070",
      "description": "Supplies and materials",
      "chargedAmount": 95,
      "units": 1,
      "serviceDate": "2026-09-14"
    }
  ]
}

Result

The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.

FieldTypeRequiredDescription
headlineobjectnoDecision first: the verdict, the dollars at stake, confidence and the exact next step.
summaryobjectno
no_surprises_actobjectno
linesarray<object>no
overall_assessmentstringno
applicable_protectionsarray<object>no
dispute_letterobjectno
readyToSendobjectnoAddressee, attachments, send method, date and the bracketed placeholders to replace before sending the dispute letter.
next_stepsarray<string>no
llmstring; one of "ok", "partial", "unavailable"nounavailable: the model step failed and the result contains only code-established findings. partial: some lines were not reviewed by the model (see warnings and each line's model_reviewed).
warningsarray<string>no
llm_errorstringno
billTextParseobjectnoPresent when billText was sent: lines read, lines not read, and a warning when the lines do not add up to the stated total.
benchmarkSourcesobjectno
disclaimerstringno
noticestringno

Pay and connect

Available through: x402 (USDC on Base), MCP, RapidAPI, Apify.

Machine-readable