Developers

One API. Every Carrier.

Integrate normalized health plan data into your application in minutes. Versioned, documented, and designed to stay aligned with the Benefit Plan Standard.

Quickstart

Authenticate with your API key and start querying plans immediately. All responses are strictly typed JSON.

GET https://api.healthplanapi.com/v1/plans
Authorization: Bearer {YOUR_API_KEY}

The Power of Normalization

Don't write if (carrier == 'Aetna'). Our API returns consistent objects regardless of the source PDF.

{
  "planId": "AETNA_PPO_2025",
  "carrier": "Aetna",
  "accumulators": {
    "individual_deductible": 1500.00,
    "family_deductible": 3000.00
  }
}

Key Endpoints

Full access to the data layer.

This is a high-level view of v1.0. The full OpenAPI specification is available for import into your tools.

🔍

Search plans

GET /v1/plans
Filter by carrier, year, market segment, network type, and specific financial values (e.g., "deductible < $2000").

📄

Get a plan

GET /v1/plans/{id}
Returns the full normalized JSON object, validated against the Benefit Plan Standard schema.

Metadata only

GET /v1/metadata/plans/{id}
Retrieve identifiers, validation status, and timestamps without incurring the latency of fetching the full benefit tree.

🏢

Carrier catalogs

GET /v1/carriers/{id}/plans
Iterate through complete plan libraries for specific issuers. Perfect for building carrier-specific quoting flows.

📐

Schema versions

GET /v1/schema/{version}
Programmatically fetch the exact JSON Schema used for validation. Ensures your client-side validation never drifts.

🔎

Debug artifacts

GET /v1/plans/{id}/raw
Access the raw Azure AI output, mapping logs, and validation reports. Essential for enterprise audit trails.

OpenAPI & SDKs

Health Plan API provides a full OpenAPI 3.1 specification that you can import into Postman, Insomnia, or your code generator of choice to create client SDKs.

If you're interested in an officially supported SDK (TypeScript, Python, or another language), let us know your stack and we can prioritize accordingly.

An unhandled error has occurred. Reload 🗙