healthcare.dev docs
API referencePrior authorization

Prior authorization requirement for a payer and code

GET /v1/prior-auth

GET https://api.healthcare.dev/v1/prior-auth

Preview: not available yet (503 dataset-unavailable until it is released). Pro plan and up (below Pro: a few preview calls a month, then 403 plan-upgrade-required). Whether a payer's public prior authorization (precertification) lists require prior authorization for a procedure code (CPT number or HCPCS Level II), per line of business (commercial, medicare_advantage, medicaid; line for one): required, not_required (for example, the payer removed the code from its list), unclear (the list mentions the code in a way our rules can't read reliably, or two of the payer's documents disagree: both are shown in conflicts), or not_listed (none of the payer's lists we hold names the code, which is not proof prior authorization isn't needed). Each answer carries confidence, derivation, evidence (the list and page) and as_of, the effective and end dates the list gives, conditions in plain words, and changes the list announces for later dates. Codes are served as numbers only, never with descriptions. Each account can look up a limited number of different payer and code pairs a day; repeats and failed lookups don't count (429 enumeration-limit past it, until 00:00 UTC). Reference data, not a prior authorization determination. Confirm with the payer.

Requires an API key: Authorization: Bearer hdev_live_.... See Authentication.

Query parameters

NameTypeRequiredDescriptionExample
payerstringyesPayer id (aetna, cigna, humana, ...)cigna
codestringyesCPT code number or HCPCS Level II code27447
line"commercial" | "medicare_advantage" | "medicaid"noOne line of business (default: every line the payer's lists cover)commercial
modifierstringnoBilling modifier, for lists that name oneRT
view"compact" | "standard" | "full"noHow much of each record to return (default full). compact: payer, code, modifier, disclaimer, requirements (fewest tokens, for agents). standard: every field. full: every field.compact
fieldsstringnoComma-separated fields to return instead of a view. Valid fields: payer, code, modifier, disclaimer, requirements, lines_available.payer,code,modifier

Examples

curl

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

TypeScript

const res = await fetch("https://api.healthcare.dev/v1/prior-auth?payer=cigna&code=27447", {
  headers: { Authorization: `Bearer ${process.env.HDEV_API_KEY}` },
});
const { data, meta } = await res.json();

Python

import os
import requests

res = requests.get("https://api.healthcare.dev/v1/prior-auth?payer=cigna&code=27447", headers={"Authorization": f"Bearer {os.environ['HDEV_API_KEY']}"})
body = res.json()

Try it

GEThttps://api.healthcare.dev/v1/prior-auth?payer=cigna&code=27447&line=commercial&modifier=RT&view=compact&fields=payer%2Ccode%2Cmodifier
Get a free key
Copy as curl
curl "https://api.healthcare.dev/v1/prior-auth?payer=cigna&code=27447&line=commercial&modifier=RT&view=compact&fields=payer%2Ccode%2Cmodifier" \
  -H "Authorization: Bearer $HDEV_API_KEY"

Response

The payer's requirement for the code, per line of business

{
  "data": {
    "payer": {
      "id": "string",
      "name": "string"
    },
    "code": "string",
    "modifier": "string",
    "disclaimer": "Reference data, not a prior authorization determination. Confirm with the payer.",
    "requirements": [
      {
        "line": null,
        "prior_auth": {
          "answer": null,
          "confidence": null,
          "derivation": null,
          "evidence": null,
          "as_of": null
        },
        "codes": [
          null
        ],
        "modifier": "string",
        "effective_start": "2026-10-01",
        "effective_end": "2026-10-01",
        "conditions": [
          null
        ],
        "upcoming": [
          null
        ],
        "conflicts": [
          null
        ],
        "note": "string"
      }
    ],
    "lines_available": [
      "commercial"
    ]
  },
  "meta": {
    "source": "cms-icd10",
    "data_version": "2026.1",
    "retrieved_at": "2026-10-24T12:00:00Z",
    "license": "Public domain (CMS). Reference data, not medical advice."
  },
  "links": {
    "self": "/v1/prior-auth?payer=cigna&code=27447",
    "next": null
  }
}

Fields

FieldTypeAlways presentDescription
payerobjectyes
codestringyesThe code asked about, upper case
modifierstring | nullyesThe modifier asked about, if any
disclaimer"Reference data, not a prior authorization determination. Confirm with the payer."yes
requirementsPriorAuthRequirement[]yesOne per line of business (only line when given), in a fixed order
lines_availablePriorAuthLine[]yesLines of business we hold this payer's lists for

Errors

Errors are application/problem+json (RFC 9457). Branch on type, not on title. See Errors.

StatustypeWhen
400invalid-requestA parameter or the body failed validation; errors lists each field.
401unauthorizedMissing, malformed or revoked API key.
403plan-upgrade-requiredThe plan doesn't include this feature; required_plan names the plan that does.
404not-foundNo record with that id (retired records are still returned).
429rate-limited / quota-exceededToo many requests per second (retry after Retry-After), or the monthly quota is used up.
503dataset-unavailable / unavailableThe dataset has no published version yet, or the service is degraded.

On this page