# Prior authorization requirements (preview)

URL: https://docs.healthcare.dev/datasets/prior-auth

**Preview: not available yet.** The endpoint is documented so you can plan for it; until it is
released it answers `503` `dataset-unavailable`, and the dataset doesn't appear in
`/v1/datasets`.

|           |                                                                                                                                          |
| --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Source    | Payers' public prior authorization (precertification) lists, as each payer posts them                                                    |
| Source id | `payer-pa-lists`                                                                                                                         |
| Cadence   | We check each list daily and publish a new version when one changes                                                                      |
| License   | Facts only: codes (as numbers), whether the list requires prior authorization, and dates, with a link to the list; never the list itself |
| Plans     | Pro and Team (`403` `plan-upgrade-required` below Pro)                                                                                   |
| Endpoint  | `GET /v1/prior-auth?payer=&code=&line=&modifier=`                                                                                        |

Reference data, not a prior authorization determination. Confirm with the payer.

```sh
curl "https://api.healthcare.dev/v1/prior-auth?payer=cigna&code=27447&line=commercial" \
  -H "Authorization: Bearer $HDEV_API_KEY"
```

```json
{
  "data": {
    "payer": { "id": "cigna", "name": "Cigna Healthcare" },
    "code": "27447",
    "modifier": null,
    "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/.../master-precertification-list-for-providers.pdf",
              "anchor": "page 31"
            }
          ],
          "as_of": "2026-10-20T05:30:00.000Z"
        },
        "codes": ["27447"],
        "modifier": null,
        "effective_start": "2020-01-01",
        "effective_end": null,
        "conditions": [],
        "upcoming": [],
        "conflicts": [],
        "note": null
      }
    ],
    "lines_available": ["commercial"]
  }
}
```

## Answers

One answer per line of business the payer's lists cover (`commercial`, `medicare_advantage`,
`medicaid`), or only `line` when you give one:

| `prior_auth.answer` | Meaning                                                                                                                                                                                     |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `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 from its list on `effective_start`                                                                                             |
| `unclear`           | A list mentions the code in a way our rules can't read reliably (a condition, a diagnosis rule, a note), or two of the payer's documents disagree. Never served as required or not required |
| `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                                   |

Every answer says how it was reached (see [derivation](/responses#derived-answers-derivation)):
`source_stated` with `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.

- **Dates:** `effective_start` and `effective_end` as the list gives them; a change the list
  announces for a later date is in `upcoming`, not in the answer.
- **Conditions:** limits the list puts on a requirement, in plain words (the care management
  model it applies to, a modifier, plans it excludes).
- **Modifiers:** a list may name a code with a modifier (`L5856-RT`). Pass `modifier` to match it;
  without one, the answer says which modifier the requirement is limited to.
- **Lists we couldn't read:** if a payer's latest version of a list can't be read, answers keep
  using the last version we could read and say so in `note`; codes we can't place are `unclear`,
  never `not_listed`.
- **Conflicts:** when two of the payer's documents state different requirements for the code and
  line (a list and its removed-codes list, say), `conflicts` shows both with their links, the
  answer is `unclear`, and neither is chosen.

Codes are served as numbers only: never a CPT description, and dental (CDT) codes are never
served. Each account can look up a limited number of different payer and code pairs a day
(`429` `enumeration-limit` past it, until 00:00 UTC); repeats don't count.
