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.
The plan payload
curl https://www.getprescience.com/api/partner/v1/plans \
-H "Authorization: Bearer $PRESCIENCE_API_KEY"
{
"plans": [
{
"id": "diamond",
"name": "Prescience Diamond",
"carrierName": "Prescience",
"planType": "self_funded_level_funded",
"deductibleIndividualCents": 150000,
"deductibleFamilyCents": 300000,
"oopMaxIndividualCents": 705000,
"oopMaxFamilyCents": 1410000,
"hsaEligible": true,
"employeePremiumCents": 0,
"assets": {
"logoUrl": "https://www.getprescience.com/img/prescience-wordmark.svg",
"markUrl": "https://www.getprescience.com/img/prescience-mark.svg"
},
"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 |
| Employee premium contribution | plan.employeePremiumCents |
| Prior-cost comparison | quote.comparison.* |
| Deductible and out-of-pocket maximums | plan.deductibleIndividualCents, plan.deductibleFamilyCents, plan.oopMaxIndividualCents, plan.oopMaxFamilyCents |
| Disclaimers and quote assumptions | plan.disclaimers, quote.assumptions |
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.
Wiring selection
When the employer accepts a quote, create an enrollment with the groupId, the quoteId, and the admin’s identity for the signatory.
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 (POST /quotes is deterministic, so an unchanged census re-prices identically), and retry the enrollment with the new quoteId.