NEWMedicare Advantage 2027 plans are live in the API.Read the changelog

Plan details

GEThttps://api.inplan.io/v1/plans/{plan_id}

Plan details for a marketplace or Medicare Advantage plan: name, insurer or organization, plan type, the plan years we hold, and whether we hold its provider listings.

.mdView as MarkdownFree plan and up · 1 call

WHEN TO USE IT

Use it to show which plan a user picked, to validate a plan id before you store it, or to read available_years.

PATH PARAMETERS

Path parameters for GET /v1/plans/{plan_id}
NAMEDESCRIPTION
plan_id
string · Required
A marketplace plan id or a Medicare Advantage contract-plan-segment id.
Example: 29276OH0970001 · H2526-001-000

QUERY PARAMETERS

Query parameters for GET /v1/plans/{plan_id}
NAMEDESCRIPTION
year
integer · Optional
The plan year of the details. Default: the newest year we hold.
Example: 2026

RESPONSE FIELDS

Every response has the envelope request_id, data_as_of, data, sources and notes (details). Fields of data:

Response fields
FIELDDESCRIPTION
market
string
aca or ma.
plan_id
string
The normalized plan id.
plan_year
integer
The plan year of these details: the year you sent, else the newest year we hold.
plan_name
string
The plan name as published.
issuer
object
Marketplace plans: the insurer.
issuer.id
string
The 5-digit insurer id.
issuer.name
string
The insurer name.
state
string
Marketplace plans: the plan state.
metal_level
string
Marketplace plans: the metal level.
plan_type
string
HMO, PPO, EPO, POS and similar.
markets
string[]
Marketplace plans: the markets the plan is sold in, for example Individual.
network_id
string
Marketplace plans: the insurer's network id for this plan.
variant_ids
string[]
Marketplace plans: every variant id of this plan.
plan_details_available
boolean
true when plan name and plan details are included.
listings
object
Whether we hold provider listings for this plan.
listings.has_listings
boolean
true when we hold provider listings for this plan.
listings.as_of
date
The date we read its directory.
variant
string | null
Marketplace plans: the variant you sent, else null.
input_plan_id
string
The plan id exactly as you sent it.
available_years
integer[]
Every plan year we hold for this plan.
links
object
Related endpoints.
links.providers
string
The path of the provider list for this plan.
links.check
string
A check path for this plan. Put an NPI in place of {npi}.
contract_id
string
Medicare Advantage plans: the contract id (the part before the first dash).
contract_name
string
Medicare Advantage plans: the contract name as published.
organization
string
Medicare Advantage plans: the organization that offers the plan.
parent_organization
string
Medicare Advantage plans: the parent organization.
category
string
Medicare Advantage plans: the plan category, for example MA-PD.
snp
object
Medicare Advantage plans: special needs plan details.
snp.is_snp
boolean
true for a special needs plan.
snp.type
string
The special needs plan type, as published.
service_area
object
Medicare Advantage plans: the service area.
service_area.states
string[]
States in the service area.
service_area.counties
integer
Number of counties in the service area.
star_rating
number | null
Medicare Advantage plans: the overall star rating published for the plan.
monthly_premium
object
Medicare Advantage plans: the monthly premium range in US dollars.
monthly_premium.min
integer
Lowest monthly premium.
monthly_premium.max
integer
Highest monthly premium.

RESPONSES

A marketplace plan.

200 OK · application/json
{  "request_id": "req_qekrIghme3OYo8pW",  "data_as_of": "2026-10-29",  "data": {    "market": "aca",    "plan_id": "29276OH0970001",    "plan_year": 2026,    "plan_name": "Anthem Bronze Pathway 10600 ($0 Virtual PCP + $0 Select Drugs)",    "issuer": {      "id": "29276",      "name": "Anthem Blue Cross and Blue Shield"    },    "state": "OH",    "metal_level": "Bronze",    "plan_type": "HMO",    "markets": [      "Individual"    ],    "network_id": "OHN004",    "variant_ids": [      "29276OH0970001-00",      "29276OH0970001-01",      "29276OH0970001-02",      "29276OH0970001-03"    ],    "plan_details_available": true,    "listings": {      "has_listings": true,      "as_of": "2026-07-27"    },    "variant": null,    "input_plan_id": "29276OH0970001",    "available_years": [      2026    ],    "links": {      "providers": "/v1/plans/29276OH0970001/providers",      "check": "/v1/check?plan_id=29276OH0970001&npi={npi}"    }  },  "sources": [    {      "type": "insurer_directory",      "description": "Provider network directories published by health insurers",      "as_of": "2026-10-29"    },    {      "type": "plan_catalog",      "description": "Published health plan catalogs",      "as_of": "2026-10-28"    }  ]}

A Medicare Advantage plan, with service area, star rating and premium range.

200 OK · application/json
{  "request_id": "req_QQiaxVHE9rtUs9XV",  "data_as_of": "2026-10-29",  "data": {    "market": "ma",    "plan_id": "H2526-001-000",    "plan_year": 2027,    "plan_name": "DEVOTED CHOICE 001 OH (PPO)",    "contract_id": "H2526",    "contract_name": "DEVOTED HEALTH PLAN OF OHIO INC",    "organization": "Devoted Health",    "parent_organization": "Devoted Health, Inc.",    "plan_type": "PPO",    "category": "MA-PD",    "snp": {      "is_snp": false,      "type": "Not Applicable"    },    "service_area": {      "states": [        "OH"      ],      "counties": 78    },    "star_rating": 4.5,    "monthly_premium": {      "min": 0,      "max": 0    },    "plan_details_available": true,    "listings": {      "has_listings": true,      "as_of": "2026-10-29"    },    "input_plan_id": "H2526-001-000",    "available_years": [      2027,      2026    ],    "links": {      "providers": "/v1/plans/H2526-001-000/providers",      "check": "/v1/check?plan_id=H2526-001-000&npi={npi}"    }  },  "sources": [    {      "type": "plan_directory",      "description": "Provider network directories published by Medicare Advantage plans",      "as_of": "2026-10-29"    },    {      "type": "plan_catalog",      "description": "Published health plan catalogs",      "as_of": "2026-10-28"    }  ]}

The Authorization header is missing or malformed, or the key is unknown or revoked.

401 Unauthorized · application/problem+json
{  "type": "unauthorized",  "title": "Missing API key",  "status": 401,  "detail": "Send `Authorization: Bearer ip_live_...`.",  "instance": "/v1/plans/29276OH0970001",  "request_id": "req_fyedh_HTRJB21DW8",  "docs": "https://inplan.io/docs/errors#unauthorized"}

We hold no plan with this id, or not the year you asked for.

404 Not Found · application/problem+json
{  "type": "plan_not_found",  "title": "Plan not found",  "status": 404,  "detail": "No plan found for 99999OH0010001.",  "instance": "/v1/plans/99999OH0010001",  "request_id": "req_yJz9v1z9Xg6vHNi9",  "docs": "https://inplan.io/docs/errors#plan_not_found"}

ERROR FORMAT

Errors use application/problem+json (RFC 7807) with type, title, status, detail, instance, request_id and docs. Other statuses this endpoint can return: 400 (an id in neither format: invalid_plan_id), 403, 429 and 503. See Errors.

RATE-LIMIT HEADERS

Every response that passes the key and plan checks carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, X-Quota-Limit, X-Quota-Remaining, X-Quota-Reset and X-Request-Id. Limits apply to each key. See Rate limits and quotas.

Limits by plan
PLANREQUESTS A SECONDCALLS A MONTH
Free2500
Builder1025,000
Growth25150,000
ScaleSet with youSet with you