healthcare.dev docs

Check a prior auth requirement (preview)

Does a payer's public prior authorization list require prior authorization for a procedure code, per line of business, with dates, conditions and the list to check. Preview: not available yet.

Preview: not available yet

Prior authorization requirements are built but not released. Until they are, the endpoint answers 503 dataset-unavailable. This recipe shows how it will work; details may change before release.

PlanPro and up (403 plan-upgrade-required below Pro)
DatasetPrior authorization requirements (payers' public lists)
Calls per answer1
LimitsA daily cap on different payer and code pairs per account (429 enumeration-limit); repeats don't count

Ask for the requirement

payer is a payer id (aetna, cigna, humana, ...). code is a CPT number or HCPCS Level II code. line (commercial, medicare_advantage, medicaid) limits it to one line of business; without it you get every line the payer's lists cover. modifier matches lists that name one.

curl "https://api.healthcare.dev/v1/prior-auth?payer=cigna&code=27447&line=commercial" \
  -H "Authorization: Bearer $HDEV_API_KEY"
{
  "data": {
    "payer": { "id": "cigna", "name": "Cigna Healthcare" },
    "code": "27447",
    "disclaimer": "Reference data, not a prior authorization determination. Confirm with the payer.",
    "requirements": [
      {
        "line": "commercial",
        "prior_auth": {
          "answer": "required",
          "confidence": 1,
          "derivation": "source_stated",
          "evidence": [{ "url": "https://www.cigna.com/...", "anchor": "page 31" }],
          "as_of": "2026-10-20T05:30:00.000Z"
        },
        "effective_start": "2020-01-01",
        "effective_end": null,
        "conditions": [],
        "upcoming": [],
        "conflicts": [],
        "note": null
      }
    ],
    "lines_available": ["commercial"]
  }
}

TypeScript

import { HealthcareDev } from "@healthcare.dev/sdk";

const hdev = new HealthcareDev();

const { data } = await hdev.priorAuth.check({ payer: "cigna", code: "27447" });
for (const r of data.requirements) {
  const { answer, derivation, confidence, evidence } = r.prior_auth;
  console.log(r.line, answer, derivation, confidence, evidence[0]?.url, r.conditions, r.upcoming);
}
console.log(data.disclaimer);

Python

from healthcare_dev import HealthcareDev

hdev = HealthcareDev()

pa = hdev.prior_auth.check(payer="cigna", code="27447")["data"]
for r in pa["requirements"]:
    p = r["prior_auth"]
    print(r["line"], p["answer"], p["derivation"], p["confidence"], r["conditions"], r["upcoming"])
print(pa["disclaimer"])

Ask an agent

Does Cigna require prior authorization for CPT 27447 on its commercial plans? Give the effective dates, any conditions, how the answer was reached, and a link to Cigna's list. Tell me to confirm with Cigna.

The agent uses check_prior_auth.

Read the answer

prior_auth.answer, per line of business:

  • required: a list says prior authorization is required for the code (or a range that includes it), in effect today.
  • not_required: a list says it isn't, for example the payer removed the code on effective_start.
  • unclear: a list mentions the code in a way our rules can't read reliably, or two of the payer's documents disagree. conflicts shows both with their links; we never pick one.
  • not_listed: none of the payer's lists we hold for this line names the code. Not proof prior authorization isn't needed: payers don't say their lists are complete.

How it was reached:

  • derivation: source_stated (confidence: 1) when a list states it and our rules read it; reviewed when a person read the row; derived for unclear (confidence: 0) and not_listed (confidence: 1, or 0.5 while rows of those lists wait for a person and might name the service without its code).
  • evidence links the payer's list and page; as_of is when that version of the list was first seen.
  • A change the list announces for a later date is in upcoming, not in the answer.

What it is not

Reference data, not a prior authorization determination: confirm with the payer before scheduling. Codes are served as numbers only, never with descriptions, and dental codes are never served.

On this page