> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getprescience.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Plan metadata

> Read static plan fields and combine them with a group quote.

`GET /plans` returns static plan metadata: identifiers, plan classification, plan design amounts, brand assets, and required disclaimers. Group-specific pricing comes from the group's [quote](/guides/quotes).

## The plan payload

```bash theme={null}
curl https://www.getprescience.com/api/partner/v1/plans \
  -H "Authorization: Bearer $PRESCIENCE_API_KEY"
```

```json Response (200) theme={null}
{
  "plans": [
    {
      "id": "diamond",
      "name": "Prescience Diamond",
      "carrierName": "Prescience",
      "planType": "self_funded_level_funded",
      "deductibleIndividualCents": 0,
      "deductibleFamilyCents": 0,
      "oopMaxIndividualCents": 100000,
      "oopMaxFamilyCents": 250000,
      "hsaEligible": true,
      "employerContribution": { "minPct": 50, "maxPct": 100 },
      "assets": {
        "logoUrl": "https://www.getprescience.com/img/prescience-wordmark.svg",
        "markUrl": "https://www.getprescience.com/img/prescience-mark.png"
      },
      "disclaimers": [
        "Final plan documents govern. Benefit details are confirmed during onboarding."
      ]
    }
  ]
}
```

The payload is static per API version, so it is safe to cache for a day. Use the `assets` URLs directly or mirror them in your CDN.

## Combining plan and quote data

Use the plan payload for static fields and the group's quote for employer-specific amounts:

| Data                                  | Source                                                                                                                                                      |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Logo and name                         | `plan.assets.markUrl`, `plan.name`                                                                                                                          |
| Plan classification                   | `plan.planType`, `plan.hsaEligible`                                                                                                                         |
| Monthly amount                        | `quote.monthly.totalCents`, `quote.monthly.pepmCents`                                                                                                       |
| Employer contribution                 | `plan.employerContribution`: the employer covers between `minPct` and `maxPct` of each premium, chosen at setup, and employees pay the rest through payroll |
| Market-benchmark comparison           | `quote.comparison.*`                                                                                                                                        |
| Deductible and out-of-pocket maximums | The group's own: `quote.benefits.*`. `plan.*` holds only Diamond's typical design                                                                           |
| Disclaimers and quote assumptions     | `plan.disclaimers`, `quote.assumptions`                                                                                                                     |

<Warning>
  Use approved display names such as **Prescience Diamond** or
  **Prescience-managed health benefits** in customer-facing surfaces. Treat
  `planType` as backend classification for eligibility, quoting, and regulated
  workflows, not as marketing copy. `carrierName` is a display string, not a
  legal classification. See [Compliance](/resources/compliance).
</Warning>

## Wiring selection

When the employer accepts a quote, create an [enrollment](/guides/enrollment) with the `groupId`, the `quoteId`, and the admin's identity for the `signatory`.

<Tip>
  Quotes expire at `expiresAt` (configuration-driven; 30 days by default). If a
  stale quote is selected past expiry, catch the `410 quote_expired` from `POST
      /enrollments`, create a new quote, and retry with the new `quoteId`. A new
  market sweep may change available plans or rates, so always use the newly
  returned values.
</Tip>
