healthcare.dev docs
API referencePayers

Prior authorization metrics for a payer

GET /v1/payers/{id}/prior-auth-metrics

GET https://api.healthcare.dev/v1/payers/{id}/prior-auth-metrics

Builder plan and up (Free: a few preview calls a month, then 403 plan-upgrade-required). The prior authorization metrics a payer posted for a year (default: the latest it posted), one report per reporting unit: percent of standard and expedited requests approved and denied, percent approved after appeal, percent approved after the review time was extended, and the mean and median time from request to decision (in hours; as_reported keeps the payer's own wording). Each metric carries the count and the total it is out of when the payer gives them, and what that total is (denominator_basis); a metric the payer doesn't give is null with a not_reported_reason, never estimated. Each report says how its values were read (derivation: source_stated when read directly from the posting, reviewed when a person checked them), links the posting (evidence) and the payer's list of items needing prior authorization when it gives one. A posting we couldn't read reliably yet is report_status: pending_review. Values are as the payer reported them in its annual public posting under the CMS Interoperability and Prior Authorization rule (CMS-0057-F). They are not audited by healthcare.dev or CMS, and payers count and round differently: compare with care and check the payer's posting (evidence).

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

Path parameters

NameTypeRequiredDescriptionExample
idstringyesPayer id from GET /v1/payershumana

Query parameters

NameTypeRequiredDescriptionExample
yearintegernoCalendar year the metrics cover (default: the latest posted)2025
unitstringnoOnly this reporting unit: its key or id (e.g. a contract H1036, FL-MEDICAID)H1036
view"compact" | "standard" | "full"noHow much of each record to return (default full). compact: unit, year, report_status, standard, expedited (fewest tokens, for agents). standard: every field except payer_id, payer_name. full: every field.compact
fieldsstringnoComma-separated fields to return instead of a view. Valid fields: payer_id, payer_name, unit, year, report_status, standard, expedited, all_requests, items_requiring_pa_url, confidence, derivation, evidence, as_of.unit,year,report_status

Examples

curl

curl "https://api.healthcare.dev/v1/payers/humana/prior-auth-metrics" \
  -H "Authorization: Bearer $HDEV_API_KEY"

TypeScript

const res = await fetch("https://api.healthcare.dev/v1/payers/humana/prior-auth-metrics", {
  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/payers/humana/prior-auth-metrics", headers={"Authorization": f"Bearer {os.environ['HDEV_API_KEY']}"})
body = res.json()

Try it

GEThttps://api.healthcare.dev/v1/payers/humana/prior-auth-metrics?year=2025&unit=H1036&view=compact&fields=unit%2Cyear%2Creport_status
Get a free key
Copy as curl
curl "https://api.healthcare.dev/v1/payers/humana/prior-auth-metrics?year=2025&unit=H1036&view=compact&fields=unit%2Cyear%2Creport_status" \
  -H "Authorization: Bearer $HDEV_API_KEY"

Response

The payer's reports for the year

{
  "data": {
    "payer": {
      "id": "string",
      "name": "string"
    },
    "year": 1,
    "years_available": [
      1
    ],
    "note": "string",
    "reports": [
      {
        "payer_id": "string",
        "payer_name": "string",
        "unit": null,
        "year": 1,
        "report_status": "available",
        "standard": {
          "approved": null,
          "denied": null,
          "approved_after_appeal": null,
          "approved_after_extension": null,
          "mean_time": null,
          "median_time": null
        },
        "expedited": {
          "approved": null,
          "denied": null,
          "approved_after_appeal": null,
          "approved_after_extension": null,
          "mean_time": null,
          "median_time": null
        },
        "all_requests": {
          "approved_after_extension": null
        },
        "items_requiring_pa_url": "string",
        "confidence": 0,
        "derivation": null,
        "evidence": [
          null
        ],
        "as_of": "2026-10-24T12:00:00Z"
      }
    ]
  },
  "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/payers/humana/prior-auth-metrics",
    "next": null
  }
}

Fields

FieldTypeAlways presentDescription
payerobjectyes
yearinteger | nullyesThe year shown: year if given, else the latest with a posting; null with none
years_availableinteger[]yesYears with postings, newest first
notestringyesHow to read these values (show it with them)
reportsPriorAuthMetricsReport[]yesOne per reporting unit, by unit key

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