POST /groups/{groupId}/quotes prices Prescience Diamond from the stored census
and the group’s latest market-rate snapshot.
These examples show the quote an HR platform key gets, with camelCase field
names. A broker key gets the quote described in Reading a
quote, in snake_case.
Before creating a quote
A census change that affects rating starts a new market comparison. If the comparison is still running, quote creation returns:Response (409)
group.market_rates_ready webhook to
create the quote as soon as rates land instead of polling.
Retry with backoff. The Bolto iframe manages this state
automatically and displays the pricing progress to the employer.
Create a quote
No prior-plan cost is needed. This works for a first-time employer with no coverage history: Prescience compares Diamond with the group’s current local platinum PPO benchmark. The plan underneath Diamond must be an HSA-eligible PPO, EPO or POS, so employees can pair it with an HSA. It is never an HMO.priorPepmCents is optional. If you send it (any number of cents, 0 or
more), it is echoed back unchanged in comparison.priorPepmCents; otherwise,
or when you send 0, that field is null. It does not affect pricing.
If the rates are in but the group cannot be priced, for example because the
census has no active quotable employees or the market has no platinum plan to
compare with (only a platinum PPO counts) or no HSA-eligible PPO, EPO or POS to build Diamond on, the API returns
422 market_unavailable. The same happens if the market comparison itself
failed (you also get group.market_rates_failed). That is not a timing
problem, so retrying does not help; Prescience reviews the group, and a
census change starts a new comparison.
Pricing basis and comparison
monthly.totalCentsis the modeled monthly employer cost.monthly.pepmCentsis the cost per enrolling employee:totalCentsdivided bycensus.employees.monthly.pmpmCentsis the price per covered life, dependents included. This is the rate the quote is set at.comparisonmeasures the price againstbenchmarkPlan, the most expensive platinum PPO quoted for the group (the most expensive platinum plan when there is no PPO).reserve.annualCentsis the most the employer could owe on top of the price in a year where every member reaches the plan’s out-of-pocket maximum. It is disclosed, never added to the price.- The price is set once per census, when the market comparison finishes. The
iframe estimate, this endpoint and
GET /groups/{groupId}/accountall read that one price, so they always agree. A census change that affects rating starts a new comparison and a new price. An unchanged census keeps its current price. savingsMonthlyCentsandsavingsAnnualCentsare never negative: when the model prices above the benchmark they are0, andsavingsPctis negative. ChecksavingsPctbefore showing a savings claim.monthly.byTierreports tier counts. ItsavgCentsvalues arenullon market-rate quotes, which price the whole group rather than each tier.
Census and household assumptions
When the census includes dependents, the submitted household composition drives covered lives and coverage tiers. When no dependent elections are available, Prescience uses a stable normalized small-group mix instead of treating the entire company as employee-only.census.tiers counts real households in four tiers: employeeOnly,
employeeSpouse (a spouse, no children), employeeChildren (children, no
spouse) and family (a spouse and children).
Preserve assumptions anywhere the price is displayed. Census or dependent
changes that affect rating require a new market comparison and quote.
Preliminary status
All displayed pricing is preliminary. Final pricing, eligibility, network availability, and plan documents are confirmed during underwriting and onboarding. Do not describe an API quote as binding or guaranteed. Quotes expire after the window configured for your partner account, 30 days by default;expiresAt on each quote is authoritative. Enrolling an
expired quote returns 410 quote_expired; create a fresh quote.
Quotes in review
A quote goes to underwriting review (status: "in_review") when:
- its price is not below the benchmark, or
- a market failed to load.
in_review quote returns 409 conflict. Do not show held numbers
as final or claim a saving. The iframe shows the monthly premium with no
savings claim and, in place of the setup button, “Setup opens once Prescience
confirms final pricing for your group.” When underwriting finalizes the quote,
the next time the employer opens the iframe it shows the plan with setup
available; nothing on your side has to react. To know sooner, watch for
quote.finalized (webhook or GET /events) and re-fetch the quote.
Listing and re-fetching
GET /groups/{groupId}/quoteslists quotes newest first.GET /groups/{groupId}/quotes/{quoteId}returns one quote.
Interactive materials and PDFs
Current quotes also returnmaterials, with kind, title, pageUrl and
pdfUrl for each quote material. Broker keys use page_url and pdf_url.
Show the interactive and PDF links alongside the quote; employees can open and
forward them without signing in. Plan choices and unknown contributions stay
explicit. See Share quote materials for
pending and changed-input behavior, plan selection and link validity.